Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.02;
Скачать: CL | DM;

Вниз

Popup меню раскрыть и скрыть   Найти похожие ветки 

 
Дмитрий_05   (2005-09-13 20:45) [0]

Что-то у меня никак не получается сделать вот как: нажмешь на кнопку, popup раскроется, еще раз нажмешь закроется, и т.д. Я уже незнаю что и делать... ввел переменную типа boolean которая разрешает открыть popup, т.е. если допустим b: boolean; b=true(меню раскрыто), то на повторном нажатии ничего не делать, меню само уберется... Но меню же можно закрыть и простым нажатием на форму и т.д. и т.п... Я отлавливал WM_EXITMENULOOP, думал что это спасет... и нет же... оно происходит до того как произойдет событие MouseDown или Click... что делать ума не приложу... может у кого-то есть какие-то идеи?


 
Дмитрий_05   (2005-09-13 20:51) [1]

P.S. в WM_EXITMENULOOP я какраз и присваиваю переменной b:=false, т.е. меню закрыто, при нажатии на кнопку можно открывать... Но потом тудже сделует событие MouseDown и меню опять открывается...


 
Дмитрий_05   (2005-09-13 23:35) [2]

Я неправильно выразился, что меня непонять? Помогите пожалуйста...


 
Defunct ©   (2005-09-14 02:48) [3]

> Но меню же можно закрыть и простым нажатием на форму и т.д. и т.п...

Так и должно быть, зачем что-то еще выдумывать?


 
Дмитрий_05   (2005-09-14 04:01) [4]

Закроется, а кнопке же надо как-то об этом сообщить, что меню закрылось... А то при следующем нажатии ничего не произойдет...


 
Defunct ©   (2005-09-14 05:18) [5]

Дмитрий_05   (14.09.05 04:01) [4]
> Закроется, а кнопке же надо как-то об этом сообщить, что меню закрылось...

Зачем?

> А то при следующем нажатии ничего не произойдет...

Зачем этот флажек? Уберите его и не будет проблемы.
Пусть по нажатию на кнопку только создается Popup, а уж закрываться он будет сам.


 
Дмитрий_05   (2005-09-14 05:39) [6]

Нужно чтобы при первом нажатии на кнопку меню раскрылось, при втором нажатии меню закрылось.


 
Defunct ©   (2005-09-14 06:26) [7]

Дмитрий_05   (14.09.05 05:39) [6]

TPopupMenu так работать не умеет.
Все создаваемые PopupMenu автоматически регистрируются в PopupList"е (модуль Menus), который и отвечает за их показ и гашение.


 
Дмитрий_05   (2005-09-14 15:32) [8]

ведь можно же как-нибудь "научить" его... ведь если к ToolButton прикрутить popupmenu оно так и работает, как мне нужно


 
Игорь Шевченко ©   (2005-09-14 16:01) [9]

Дмитрий_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:02) [10]

Дмитрий_05   (14.09.05 15:32) [8]

Почему бы не посмотреть, как это сделано в TToolbar ?
Особенно метод
function TToolBar.CheckMenuDropdown(Button: TToolButton): Boolean;

Defunct ©   (14.09.05 06:26) [7]


> TPopupMenu так работать не умеет.


Умеет.


 
Defunct ©   (2005-09-14 18:35) [11]

> Игорь Шевченко
> function TToolBar.CheckMenuDropdown(Button: TToolButton): Boolean;

реализовано довольно сложно..

> Умеет.
имелось в виду, что нет прямого способа сделать так..
PopupMenu все-таки управляемый (не только нами) объект.


 
Игорь Шевченко ©   (2005-09-14 18:38) [12]

Defunct ©   (14.09.05 18:35) [11]


> реализовано довольно сложно


А никто простых решений не обещал.


> имелось в виду, что нет прямого способа сделать так..
> PopupMenu все-таки управляемый (не только нами) объект.


Этой фразы не понимаю. Дело в том, что компонент (кнопку, с выпадающим меню) я делал три года назад, так что невозможного я в этом не вижу. Делал примерно по тому же принципу, что и в тулбаре.


 
Defunct ©   (2005-09-14 18:48) [13]

> Игорь Шевченко

никто и не говорит о невозможности решения задачи, речь идет лишь только о реализованых возможностях TPopupMenu.. PopupMenu не содержит ни метода Hide, ни свойства по которому можно отследить отображается он в данный момен или нет.


 
Игорь Шевченко ©   (2005-09-14 18:53) [14]

Defunct ©   (14.09.05 18:48) [13]


> PopupMenu не содержит ни метода Hide, ни свойства по которому
> можно отследить отображается он в данный момен или нет


Не содержит. Но оно рассылает сообщения...


 
Дмитрий_05   (2005-09-14 19:57) [15]

Игорь Шевченко, а не могли бы вы поделиться исходником?



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

Текущий архив: 2005.10.02;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.047 c
3-1124493432
TechnoDreamer
2005-08-20 03:17
2005.10.02
select по blob полям


14-1126207075
LanPlayer
2005-09-08 23:17
2005.10.02
Игра для LAN


14-1126383373
Леха
2005-09-11 00:16
2005.10.02
WinApi


1-1126460974
Дмитрий_05
2005-09-11 21:49
2005.10.02
Как создавать компоненты на Notebook


3-1124206320
DSKalugin
2005-08-16 19:32
2005.10.02
Подключение к Sybase SQL Anywhere 5.5.05 и экспорт данных