Текущий архив: 2004.08.22;
Скачать: CL | DM;
Вниз
Уничтожение popup меню вручную Найти похожие ветки
← →
far © (2004-08-09 16:24) [0]Мое почтение, уважаемые мастера, доброго времени суток.
У меня возникло желание по right-клику на некоем control-элементе отображать popup menu, причем создавать его динамически после собственно клика, и дестроить его после того, как оно убирается с экрана.
Но вот проблема - не знаю как отследить момент для уничтожения меню. Можно это делать в процедуре обработки клика на элементах меню. Но что делать, если пользователь раздумал кликать на меню, и кликнул мимо него, чтобы его скрыть?
← →
Anatoly Podgoretsky © (2004-08-09 16:33) [1]http://delphimaster.net/view/4-1092046870/
← →
oldman © (2004-08-09 16:35) [2]А по новому клику снова создавать - дестроить???
Маразм...
Не те желания у тебя возникают :)))
← →
far © (2004-08-09 17:01) [3]To Anatoly Podgoretsky:
Спасибо. А как мне перехватить WM_EXITMENULOOP? Если я не ошибаюсь, TPopupMenu не имеет WndProc и подходящих обработчиков событий...
То oldman:
Это меню использует моя компонента.
Я подумал, что если каждая из размещаемых в приложении компонент будет создавать меню при своем создании, то получится неэффективное использование памяти.
А если разместить где-нибудь отдельную компоненту-меню и потом задавать на него ссылку вручную в design-time для каждой добавляемой в приложение компоненты, то это будет неудобно программистам, которые будут использовать мою компоненту. Тем более, что меню вообще-то не одно :)
Буду благодарен, если Вы выскажите свои соображения по этому поводу.
← →
far © (2004-08-09 17:04) [4]To Anatoly Podgoretsky:
Извиняюсь, не дошло сразу, что WM_EXITMENULOOP посылается не меню, а окну приложения :)
← →
VMcL © (2004-08-09 17:17) [5]AFAIK, хватать WM_EXITMENULOOP нужно в Menus.PopupList или что-то в этом роде (по крайней мере в D6).
← →
афвуд (2004-08-09 17:47) [6]
> У меня возникло желание по right-клику на некоем control-элементе
> отображать popup menu, причем создавать его динамически
> после собственно клика, и дестроить его после того, как
> оно убирается с экрана.
У меня тоже возникало. В конце концов пришлось создать в начале менюшку, а перед тем как показать очищать его и динамически его заполнять. Многих Access Violation этим избежал. И не понимаю зачем тебе менюшку то каждый раз конструктить когда можно только его содержимое менять.
← →
far © (2004-08-09 17:58) [7]To VMcL:
К сожалению не могу разобраться, как это сделать. Тип TPopupList не имеет подходящего своства типа TNotifyEvent. Значит для перехвата мне нужно написать наследника TPopupList и перекрыть WndProc, но как мне создать его объект? Ведь PopupList - глобальная переменная, создаваемая каркасом...
← →
far © (2004-08-09 18:04) [8]To афвуд:
О! Вот оно!
Пожалуй это очень разумный компромисс :)
← →
VMcL © (2004-08-09 18:04) [9]>>far © (09.08.04 17:58) [7]
GetWindowLong(PopupList.Handle, GWL_WNDPROC);
SetWindowLong(PopupList.Handle, GWL_WNDPROC, ...);
← →
far © (2004-08-09 18:19) [10]Ага, понятно... thanks.
Думаю тему можно считать закрытой, всем спасибо!
Страницы: 1 вся ветка
Текущий архив: 2004.08.22;
Скачать: CL | DM;
Память: 0.49 MB
Время: 0.024 c