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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
14-91515
Moris The Cat
2003-04-10 21:10
2003.04.28
Вопрос по курсовой по инфе 1-го курса! (Последовательности)


14-91470
malkolinge
2003-04-09 15:58
2003.04.28
Я УГАДАЛ СВОЙ ПАРОЛЬ !!!!!!!!!!!!!!!!!!!!1


1-91296
Chlavik
2003-04-17 14:36
2003.04.28
Что то лучше чем стандартный ShelltreeView ..


14-91483
Дмитрий К.К.
2003-04-10 06:38
2003.04.28
Именинники 10 апреля


3-91222
xxxCrazyManxxx
2003-04-10 19:28
2003.04.28
Помогите на SQL реализовать алгоритм исключающий повторяющиеся за