![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Popup меню раскрыть и скрыть [D7, WinXP]
Дмитрий_05 © (2005-09-13 20:45:00)Что-то у меня никак не получается сделать вот как: нажмешь на кнопку, popup раскроется, еще раз нажмешь закроется, и т.д. Я уже незнаю что и делать... ввел переменную типа boolean которая разрешает открыть popup, т.е. если допустим b: boolean; b=true(меню раскрыто), то на повторном нажатии ничего не делать, меню само уберется... Но меню же можно закрыть и простым нажатием на форму и т.д. и т.п... Я отлавливал WM_EXITMENULOOP, думал что это спасет... и нет же... оно происходит до того как произойдет событие MouseDown или Click... что делать ума не приложу... может у кого-то есть какие-то идеи?
Дмитрий_05 (2005-09-14 19:57:00) [1]Игорь Шевченко, а не могли бы вы поделиться исходником?
Игорь Шевченко (2005-09-14 18:53:00) [2]Defunct © (14.09.05 18:48) [13]
> PopupMenu не содержит ни метода Hide, ни свойства по которому
> можно отследить отображается он в данный момен или нет
Не содержит. Но оно рассылает сообщения...
Defunct (2005-09-14 18:48:00) [3]> Игорь Шевченко
никто и не говорит о невозможности решения задачи, речь идет лишь только о реализованых возможностях TPopupMenu.. PopupMenu не содержит ни метода Hide, ни свойства по которому можно отследить отображается он в данный момен или нет.
Игорь Шевченко (2005-09-14 18:38:00) [4]Defunct © (14.09.05 18:35) [11]
> реализовано довольно сложно
А никто простых решений не обещал.
> имелось в виду, что нет прямого способа сделать так..
> PopupMenu все-таки управляемый (не только нами) объект.
Этой фразы не понимаю. Дело в том, что компонент (кнопку, с выпадающим меню) я делал три года назад, так что невозможного я в этом не вижу. Делал примерно по тому же принципу, что и в тулбаре.
Defunct (2005-09-14 18:35:00) [5]> Игорь Шевченко
> function TToolBar.CheckMenuDropdown(Button: TToolButton): Boolean;
реализовано довольно сложно..
> Умеет.
имелось в виду, что нет прямого способа сделать так..
PopupMenu все-таки управляемый (не только нами) объект.
Игорь Шевченко (2005-09-14 16:02:00) [6]Дмитрий_05 (14.09.05 15:32) [8]
Почему бы не посмотреть, как это сделано в TToolbar ?
Особенно метод
function TToolBar.CheckMenuDropdown(Button: TToolButton): Boolean;
Defunct © (14.09.05 06:26) [7]
> TPopupMenu так работать не умеет.
Умеет.
Игорь Шевченко (2005-09-14 16:01:00) [7]Дмитрий_05 (14.09.05 15:32) [8]
Почему бы не посмотреть, как это сделано в TToolbar ?
Особенно метод
function TToolBar.CheckMenuDropdown(Button: TToolButton): Boolean;
Defunct © (14.09.05 06:26) [7]
> TPopupMenu так работать не умеет.
Умеет.
Дмитрий_05 (2005-09-14 15:32:00) [8]ведь можно же как-нибудь "научить" его... ведь если к ToolButton прикрутить popupmenu оно так и работает, как мне нужно
Defunct (2005-09-14 06:26:00) [9]Дмитрий_05 (14.09.05 05:39) [6]
TPopupMenu так работать не умеет.
Все создаваемые PopupMenu автоматически регистрируются в PopupList'е (модуль Menus), который и отвечает за их показ и гашение.
Дмитрий_05 (2005-09-14 05:39:00) [10]Нужно чтобы при первом нажатии на кнопку меню раскрылось, при втором нажатии меню закрылось.
Defunct (2005-09-14 05:18:00) [11]Дмитрий_05 (14.09.05 04:01) [4]
> Закроется, а кнопке же надо как-то об этом сообщить, что меню закрылось...
Зачем?
> А то при следующем нажатии ничего не произойдет...
Зачем этот флажек? Уберите его и не будет проблемы.
Пусть по нажатию на кнопку только создается Popup, а уж закрываться он будет сам.
Дмитрий_05 (2005-09-14 04:01:00) [12]Закроется, а кнопке же надо как-то об этом сообщить, что меню закрылось... А то при следующем нажатии ничего не произойдет...
Defunct (2005-09-14 02:48:00) [13]> Но меню же можно закрыть и простым нажатием на форму и т.д. и т.п...
Так и должно быть, зачем что-то еще выдумывать?
Дмитрий_05 (2005-09-13 23:35:00) [14]Я неправильно выразился, что меня непонять? Помогите пожалуйста...
Дмитрий_05 (2005-09-13 20:51:00) [15]P.S. в WM_EXITMENULOOP я какраз и присваиваю переменной b:=false, т.е. меню закрыто, при нажатии на кнопку можно открывать... Но потом тудже сделует событие MouseDown и меню опять открывается...