Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обработка закрытия popup menu, как поймать? 
:(
    Опции темы
Knuckles
  Дата 8.3.2006, 19:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 33
Регистрация: 8.3.2006

Репутация: 1
Всего: 2



На появление у нас есть OnPopup().
А как быть с закрытием?
Заранее спасибо.
PM   Вверх
_hunter
Дата 9.3.2006, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 9
Всего: 98



OnChange
а вообще, что у тебя за задача?


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Knuckles
Дата 9.3.2006, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 33
Регистрация: 8.3.2006

Репутация: 1
Всего: 2



дык, я так понял, этот OnChange() вызывается при создании и показе меню.
а мне надо при закрытии.

есть форма, которая автоматически прячется после покидания мыши ее пределов.
у формы есть попап меню с пунктами типа настройка и т.п.
проблемма в том, что форма небольших размеров (типа всплывающая панель) и некоторые пункты меню часто оказываются за пределами формы. естественно, что подвести мышь к таким пунктам оказывается невозможно, так как форма сразу исчезает.
так вот на то время, пока меню видно, нужно убрать автоскрытие, а когда меню закрывается (кликнул мимо или пункт выбрал), нужно это автоскрытие вернуть.
теперь понятнее?
ПС: по-моему сути дела это не меняет.
PM   Вверх
Snowy
Дата 9.3.2006, 12:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Помню, что Girder когда-то писал...

Фуф. Вот. Еле нашел.
http://forum.vingrad.ru/index.php?showtopi...st&p=240839
PM MAIL   Вверх
Knuckles
Дата 10.3.2006, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 33
Регистрация: 8.3.2006

Репутация: 1
Всего: 2



Такой способ я уже видел.
И он, к сожалению, не работает. Т.е. он работает в этом конкретном примере (похоже только с TMainMenu).
Там к месаге Гирдера приложен пример: кидаю на форму PopupMenu и его закрытие все равно не контролируется. Честно говоря, сам не пойму, почему. Механизм вроде неплохой. Еще идеи будут?

Это сообщение отредактировал(а) Knuckles - 10.3.2006, 22:52
PM   Вверх
Snowy
Дата 12.3.2006, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 30
Всего: 484



Грубо, но работает:
Код

procedure TForm1.PopupMenu1Popup(Sender: TObject);
begin
  popupped := true;
end;

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
begin
  if popupped then begin
    popupped := false;
    ShowMessage('Попупка спряталась');
  end;
end;

PM MAIL   Вверх
FRAGNATIC
Дата 12.3.2006, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


..::Свирепый Кодер::..
**


Профиль
Группа: Участник
Сообщений: 901
Регистрация: 17.10.2004
Где: ICQ

Репутация: нет
Всего: 11



Цитата(Knuckles @ 9.3.2006, 12:25 Найти цитируемый пост)
некоторые пункты меню часто оказываются за пределами формы. естественно, что подвести мышь к таким пунктам оказывается невозможно, так как форма сразу исчезает.
так вот на то время, пока меню видно, нужно убрать автоскрытие, а когда меню закрывается (кликнул мимо или пункт выбрал),

если пункт выбираешь который за пределами формы то после закрытия попап курсор остатёся всё ровно за пределами формы и если ты сразу врубишь автоскрывание то форма всё ровно исчезнет - что не очень удобно
предусмотри такой вариант и перед включением автоскрытия проверяей если мыша за пределами то верни курсор в область формы а потом врубай =)
так офтоп просто) сорри если чё)
PM MAIL   Вверх
Knuckles
Дата 12.3.2006, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Awaiting Authorisation
Сообщений: 33
Регистрация: 8.3.2006

Репутация: 1
Всего: 2



Гм. Действительно работает smile
Только совершенно непонятно, как именно. Т.е. на что реагирует этот ApplicationEvents? Он же наверное месагу ловит? Вот интересно, какую.
Спасибо, Snowy, за помощ.
2Fragnatic: тоже спасибо, учту. Вообще все эти мелочи я собираюсь доработать на этапе тестирования, когда нужно будет добавлять юзабельности и удобств.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: WinAPI и системное программирование"
Snowybartram
MetalFanbems
PoseidonRrader
Riply

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • 99% ответов по WinAPI можно найти в MSDN Library, оставшиеся 1% здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема »


 




[ Время генерации скрипта: 0.0533 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.