|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
04.08.2016, 15:44 | #1 |
Пользователь
Регистрация: 25.07.2011
Сообщений: 48
|
Реакция компонента при потере им фокуса
Приветствую.
Есть самописный визуальный компонент, ComboBox с отображением дерева элементов вместо плоского списка. При потере фокуса или клике вне компонента (уйти можно на форму или компонент без фокуса) дерево надо прятать, как это делает стандартный Combobox. Первое сделал путем реагирования на событие OnExit. Как реализовать второе? |
04.08.2016, 16:04 | #2 | ||
Старожил
Регистрация: 20.04.2008
Сообщений: 5,528
|
http://programmersforum.ru/showthread.php?t=294246
http://programmersforum.ru/showthread.php?t=233329 в твоем случае это видимо будет DoExit Цитата:
Цитата:
программа — запись алгоритма на языке понятном транслятору
|
||
04.08.2016, 16:38 | #3 |
ПШП
Участник клуба
Регистрация: 15.07.2013
Сообщений: 1,894
|
|
04.08.2016, 19:52 | #4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
ComboBoxEx сильно не подходит?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
09.08.2016, 15:05 | #5 |
Пользователь
Регистрация: 25.07.2011
Сообщений: 48
|
evg_m
Не хотел делать сабклассинг дерева. Раз так то лучше ловить WM_KILLFOCUS. Но суть не в этом. Фокус не меняется при клике по форме или панелям. А вот стандартный комбобокс имеет процедурку Код:
Аватар ComboBoxEx примитивен. Набросав пару десятков строк кода я уже получил крутотенечку использующую всю мощь VirtualTree. Закрытие дерева пока реализовал кнопкой в заголовке. Автор IBExpert`a как то реализовал такой контрол. См. вложение. Не могу понять на базе чего он сделан. Если жамкнуть Alt+PrintScreen то сохраняется только выпадающий список. Это отдельная форма? Тогда почему не меняется фокус основной формы? |
09.08.2016, 16:37 | #6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Должно создаваться всплывающее окно с соответствующими параметрами. Здесь пример для начала, ну и дальше мучения с отображением дерева
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
09.08.2016, 22:04 | #7 |
Пользователь
Регистрация: 25.07.2011
Сообщений: 48
|
Аватар
Теперь понятно как реализовывают такие окна. Только к сожалению я не смог нормально отобразить всплывающее окно без потери фокуса основной формы. В Delphi у меня сработал метод Код:
Код:
Но по правде говоря компонент я пишу для Лазаруса (переводим на него все проекты и прощаемся с Delphi), а в нем не работают оба метода. Досадно. С формой как мне кажется было бы предпочтительнее, возможностей больше, но тогда придется смириться с дерганьем заголовков форм, которое побороть я пока не могу. Кстати по главному вопросу этой темы-воспользовался костылем: глобальный хук на клик мышью. Работает как надо. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Определение снятия фокуса с компонента | Lokos | Компоненты Delphi | 2 | 15.09.2014 10:17 |
Как запустить процедуру при потере фокуса определённым листом? | PAMAC | Microsoft Office Excel | 2 | 09.11.2012 11:23 |
Закрытие формы при потере фокуса | werrey | Общие вопросы Delphi | 11 | 19.11.2011 14:08 |
Реакция из компонента на OnShow формы... | GydruS | Компоненты Delphi | 2 | 28.07.2011 10:56 |
Проблемы при потере фокуса приложения | Sibedir | Общие вопросы Delphi | 9 | 23.05.2011 21:27 |