Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.04.28;
Скачать: [xml.tar.bz2];

Вниз

Узнать, что фокус ввода ушел с панели   Найти похожие ветки 

 
anbezr   (2003-04-16 09:26) [0]

Привет!
есть компонент TMyPanel = class (TCustomPanel) на котором размещены три TButton и одна TLabel. компоненты полностью закрывают пов-ть TMyPanel. компонент может быть показан в любом месте формы, но его Parent"ом является другой TPanel. TMyPanel создается в секции initialization и удаляется в finalization. компонент создан для предоставления пользолвателя интерфейса к объектам другого типа и может быть показан по требованию любого из них в любом месте экрана (аналогично TPopupMenu). так вот, не могу добиться, что бы по клику вне область экрана TMyPanel компонент исчезал. пробовал перехватывать WM_KILLFOCUS, но оно не посылается TMyPanel.
как пропасти, что пользователь щелкнул мышой в другом месте экрана.


 
Skier   (2003-04-16 09:31) [1]

WM_ACTIVATE ?


 
Skier   (2003-04-16 09:35) [2]

>anbezr
MyPanel на форме расположен ?


 
anbezr   (2003-04-16 09:38) [3]

нет, на другой панели.


 
REA   (2003-04-16 09:39) [4]

А у нее вообще есть фокус ввода (Tabstop)?


 
anbezr   (2003-04-16 09:51) [5]

REA © (16.04.03 09:39)

нет, но SetFocus сделать можно.
тут и пришла такая идея: каждый раз, при показывании TMyPanel устанавливать на нее принудительно фокус ввода. при получении WM_KILLFOCUS проверять, имеет ли хоть один из конролов фокус. если нет - щелкнули в другое место.
как вам такая идея?


 
REA   (2003-04-16 10:04) [6]

А не проще для нужных контролов обработать OnEnter/OnExit?


 
anbezr   (2003-04-16 10:15) [7]

наверное, было бы проще, но, если пользователь щелкнул по компоненту, которые не может иметь фокус ввода (TPanel напр), то WM_KILLFOCUS не посылается, след. не возникнет и OnEnter/OnExit.:(


 
anbezr   (2003-04-16 10:20) [8]

каким таким чудесным образом менюшки узнают, что кликнули мимо них? или это не менюшки...


 
REA   (2003-04-16 11:11) [9]

>то WM_KILLFOCUS не посылается
если он у кого-то до этого был, то вероятно должен послаться. Хотя не уверен.

А WM_ACTIVATE?


 
anbezr   (2003-04-16 11:38) [10]

тоже не посылается в моем случае - т.к. WM_ACTIVATE посылается только формам.
а нельзя ли как нибудь узнать, что мыша не находится над моим компонентом?


 
Skier   (2003-04-16 11:52) [11]


> а нельзя ли как нибудь узнать, что мыша не находится над
> моим компонентом?

посмотри :
CM_MOUSELEAVE и
CM_MOUSEENTER


 
anbezr   (2003-04-16 12:06) [12]

Skier © (16.04.03 11:52)

Большое спасибо - это решение проблемы



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

Форум: "Основная";
Текущий архив: 2003.04.28;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.014 c
1-91361
Delphinium
2003-04-16 08:42
2003.04.28
Обновление под Delphi 5


14-91449
Supreme 2
2003-04-10 17:22
2003.04.28
У меня наконец-то появилась ICQ!!!!


3-91188
Stager
2003-04-09 13:52
2003.04.28
DataSet в оперативной памяти


3-91165
bSava
2003-04-09 13:17
2003.04.28
Поле типа


1-91248
Igorek
2003-04-14 19:39
2003.04.28
Get Зарегистрированный редактор свойства





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский