Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];

Вниз

"Cистемное" PopupMenu...   Найти похожие ветки 

 
BillyJeans   (2004-10-31 12:33) [0]

Подскажите каким образом добраться до "системного" PopupMenu (с пунктами "копировать", "вставить" и т.д.), которое появляется над TEdit, TMemo и т.п. при нажатии правой кнопкой мыши?
Хочу добавить туда еще один пункт...


 
DVM ©   (2004-10-31 13:03) [1]

проще создать свое меню и назначить его полю


 
BillyJeans   (2004-11-01 08:26) [2]

2 DVM
... и назначить его всем полям системы???


 
Андерсон   (2004-11-01 09:59) [3]

BillyJeans   (01.11.04 08:26) [2]
... и назначить его всем полям системы???

... а почему бы и нет???


 
BillyJeans   (2004-11-01 10:11) [4]

2 Андерсон
а если пользователь запустит еще программу...
придется постоянно заниматься таким назначением :(


 
Андерсон   (2004-11-01 10:31) [5]

ты мне объясни зачем тебе менять стандартный PopupMenu ???
когда намного легче сделать свой и назначить всем...


 
BillyJeans   (2004-11-01 11:35) [6]

1. стандартный popupmenu достаточно изменить один раз
2. некоторые из полей уже могут содержать popupmenu отличный от системного


 
BillyJeans   (2004-11-01 11:37) [7]

1. стандартный popupmenu достаточно изменить один раз
2. некоторые из полей уже могут содержать popupmenu отличный от системного


 
BillyJeans   (2004-11-01 11:45) [8]

Может есть возможность поставить хук на появление такого popup и добавлять в него свой пункт?


 
Юрий Зотов ©   (2004-11-01 13:03) [9]

Глобальная подмена системного Popup-меню собственным для всех окон редактирования (а у других окон я системного popup-меню не встречал).

1. На главную форму кладем TPopupMenu (далее - MyPopupMenu) и создаем в нем пункты, аналогичные стандартному системному popup-меню для окон класса EDIT (Cut, Copy, Paste...). Всем пунктам назначаем один и тот же обработчик.

2. В Application.OnMessage ловим WM_RBUTTTONUP и пишем примерно следующее:

type
 TFriendEdit = class(TCustomEdit);

if Screen.ActiveControl is TCustomEdit then
with TFriendEdit(Screen.ActiveControl) do
begin
 if PopupMenu = nil then
   PopupMenu := MyPopupMenu;
 if PopupMenu = MyPopupMenu then
   MyPopupMenu.PopupComponent := Screen.ActiveControl
end;

3. Если надо, пишем обработчик MyPopupMenu.OnPopup, где в зависимости от TFriendEdit(MyPopupMenu.PopupComponent), его сотояния и от текущей ситуации в программе можем добавлять и удалять пункты меню, скрывать их или показывать, запрещать или разрешать, а также назначать добавленным пунктам нужные обработчики.

4. В общем обработчике всех стандартных пунктов MyPopupMenu (см. п. 1) смотрим, что за Sender в него пришел и вызываем нужный метод (Copy, Cut, Paste...) для TFriendEdit(MyPopupMenu.PopupComponent).

Вот и все. Этот механизм работает даже если поднять popup-меню не мышью, а с клавиатуры.


 
BillyJeans   (2004-11-01 13:38) [10]

2 Юрий Зотов ©   (01.11.04 13:03) [9]

мысль хорошая, но как быть с pupupmenu других процессов?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.11.14;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.073 c
3-1097501972
iat
2004-10-11 17:39
2004.11.14
QReport "периодически" не позволяет печатать


14-1098972626
_none_
2004-10-28 18:10
2004.11.14
кидалово!


14-1098565988
Soft
2004-10-24 01:13
2004.11.14
А зачем покупать книги крутых авторов?


3-1097522029
Morrison
2004-10-11 23:13
2004.11.14
Глюк: Query не находит полей...


1-1099051583
bloodman
2004-10-29 16:06
2004.11.14
Где можно найти информацию по теории распозанания текста





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский