Изменение пунктов контекстного меню для полей ввода
Модератор: Дед Пахом
					Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
	При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Олег
 - Ветеран движения
 - Сообщения: 122
 - Зарегистрирован: 16 Июль 2005, 2:35
 - Откуда: Москва
 - Контактная информация:
 
Изменение пунктов контекстного меню для полей ввода
Добрый день, коллеги.
Может кто делал сабж?
Подробнее - при нажатии ПКМ на поле ввода формы открывается стандартное виндовое контекстное меню для данного типа полей.
Необходимо удалить из него некоторые пункты.
			
			
									
						Может кто делал сабж?
Подробнее - при нажатии ПКМ на поле ввода формы открывается стандартное виндовое контекстное меню для данного типа полей.
Необходимо удалить из него некоторые пункты.
- Игорь Столяров
 - Ветеран движения
 - Сообщения: 8269
 - Зарегистрирован: 07 Июль 2005, 10:19
 - Откуда: г. Ростов-на-ДоМу
 - Благодарил (а): 34 раза
 - Поблагодарили: 106 раз
 
Изменение пунктов контекстного меню для полей ввода
Я пару лет назад пытался туда залезть с обратной задачей (добавить пункты), но что-то оно так и не задалось.
Посмотрите вот здесь описание структуры контекстных меню WinAPI: http://www.cyberguru.ru/win32/win32-menu.html?showall=1
			
			
									
						Посмотрите вот здесь описание структуры контекстных меню WinAPI: http://www.cyberguru.ru/win32/win32-menu.html?showall=1
За теми, кто отстал, не возвращаться ! 
 Кодекс
			
						- 
				kreator
 - ✯ Ветеран ✯
 - Сообщения: 5235
 - Зарегистрирован: 28 Май 2009, 15:54
 - Откуда: Москва
 - Благодарил (а): 11 раз
 - Поблагодарили: 26 раз
 
Изменение пунктов контекстного меню для полей ввода
А вариант нарисовать своё меню и отобразить сначала его, буфер клавиатуры сбросить? Или надо вообще везде изменения провести?
			
			
									
						We are hard at work… for you.   
			
						- Олег
 - Ветеран движения
 - Сообщения: 122
 - Зарегистрирован: 16 Июль 2005, 2:35
 - Откуда: Москва
 - Контактная информация:
 
Изменение пунктов контекстного меню для полей ввода
Да, нужно везде использовать стандартное меню и просто из него удалить некоторые пункты.
Проблема в данном случае в том, что контекстное меню создается только в момент его вызова и поэтому метод GetMenu бесполезен.
В принципе, насколько я понял, общий алгоритм такой:
- переопределяем функцию обработки сообщений окна
- ловим сообщение WM_INITMENU, которое посылается в момент открытия меню
- из параметра wParam берем хендл созданного меню и дальше уже используем стандартные методы работы с меню
Но не проверял - думал, что возможно кто уже решал подобную задачу.
			
			
									
						Проблема в данном случае в том, что контекстное меню создается только в момент его вызова и поэтому метод GetMenu бесполезен.
В принципе, насколько я понял, общий алгоритм такой:
- переопределяем функцию обработки сообщений окна
- ловим сообщение WM_INITMENU, которое посылается в момент открытия меню
- из параметра wParam берем хендл созданного меню и дальше уже используем стандартные методы работы с меню
Но не проверял - думал, что возможно кто уже решал подобную задачу.
- 
				kreator
 - ✯ Ветеран ✯
 - Сообщения: 5235
 - Зарегистрирован: 28 Май 2009, 15:54
 - Откуда: Москва
 - Благодарил (а): 11 раз
 - Поблагодарили: 26 раз
 
Изменение пунктов контекстного меню для полей ввода
А какие пункты Вы хотите удалить? А есть уверенность, что Виндоусовое меню везде одинаковое. Понимаю ещё добавить свой пункт с его обработкой, но вот удалить...Олег писал(а): 23 Декабрь 2017, 3:08 Да, нужно везде использовать стандартное меню и просто из него удалить некоторые пункты.
We are hard at work… for you.   
			
						- Олег
 - Ветеран движения
 - Сообщения: 122
 - Зарегистрирован: 16 Июль 2005, 2:35
 - Откуда: Москва
 - Контактная информация:
 
Изменение пунктов контекстного меню для полей ввода
Нужные пункты находятся по их имени (полному или фрагменту).
Все началось с того, что клиент решил, что стандартные пункты виндового контекстного меню на полях ввода имеют слишком мудреные для обычного оператора названия (типа "Открыть IME", "Порядок чтения: справа налево" и пр.) и попросил их убрать.
Но вчера я его убедил в бредовости этой затеи, показав в других програх, которые они используют, эти самые пункты!
 
В общем, в данный момент этот вопрос меня интересует лишь чисто с академической точки зрения - возможно пригодится в будущем.
			
			
									
						Все началось с того, что клиент решил, что стандартные пункты виндового контекстного меню на полях ввода имеют слишком мудреные для обычного оператора названия (типа "Открыть IME", "Порядок чтения: справа налево" и пр.) и попросил их убрать.
Но вчера я его убедил в бредовости этой затеи, показав в других програх, которые они используют, эти самые пункты!
В общем, в данный момент этот вопрос меня интересует лишь чисто с академической точки зрения - возможно пригодится в будущем.
- RaFaeL
 - ✯ Ветеран ✯
 - Сообщения: 1417
 - Зарегистрирован: 24 Март 2009, 17:59
 - Откуда: НН
 - Благодарил (а): 12 раз
 - Поблагодарили: 2 раза
 - Контактная информация:
 
Изменение пунктов контекстного меню для полей ввода
Ну это просто сделать - пересоберите на 6.3, там этих пунктов нет ))Все началось с того, что клиент решил, что стандартные пункты виндового контекстного меню на полях ввода имеют слишком мудреные для обычного оператора названия (типа "Открыть IME", "Порядок чтения: справа налево" и пр.) и попросил их убрать.
- 
				kreator
 - ✯ Ветеран ✯
 - Сообщения: 5235
 - Зарегистрирован: 28 Май 2009, 15:54
 - Откуда: Москва
 - Благодарил (а): 11 раз
 - Поблагодарили: 26 раз
 
Изменение пунктов контекстного меню для полей ввода
Ещё можно с манифестом поиграться. Наверняка оттуда меню тащится. С другой стороны, и нужные пункты пропадут.RaFaeL писал(а): 23 Декабрь 2017, 22:04 Ну это просто сделать - пересоберите на 6.3, там этих пунктов нет ))
We are hard at work… for you.   
			
						Изменение пунктов контекстного меню для полей ввода
А просто поставить Alert(MouseRight) на все поля и повесить обработчик не прокатит? Был момент - в одном из приложений программа просто грохалась на ПКМ - пришлось выкручиваться...
			
			
									
						- Олег
 - Ветеран движения
 - Сообщения: 122
 - Зарегистрирован: 16 Июль 2005, 2:35
 - Откуда: Москва
 - Контактная информация:
 
Изменение пунктов контекстного меню для полей ввода
Не подойдет - тогда придется самому обрабатывать copy/past/clip - зачем лишняя работа!
			
			
									
						Изменение пунктов контекстного меню для полей ввода
Дык, требуется написать ровно одну процедуру и воткнуть её вызов в обработчик TakeEvent или TakeFieldEvent . А насчёт Copy/Paste - функция Clipboard()  тебе в помощь...
			
			
									
						- Олег
 - Ветеран движения
 - Сообщения: 122
 - Зарегистрирован: 16 Июль 2005, 2:35
 - Откуда: Москва
 - Контактная информация:
 
Изменение пунктов контекстного меню для полей ввода
Лень! 
 
К тому же не хочется подменять стандартное меню самописным (мало что там появится в новых версиях - не хочу повторять ошибок разработчиков Клариона, из за чего мы до сих пор сидим на нестандартных контролах дизайна начала века!) и стандартные обработчики его пунктов.
			
			
									
						К тому же не хочется подменять стандартное меню самописным (мало что там появится в новых версиях - не хочу повторять ошибок разработчиков Клариона, из за чего мы до сих пор сидим на нестандартных контролах дизайна начала века!) и стандартные обработчики его пунктов.
