Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Получение фокуса компонентом. [D6, 2000, XP]


Mishenka ©   (2006-10-25 10:22:00) 

Пишу компонент потомок TCustomControl. Сделал обработку события OnEnter для обработки получения фокуса. При переходе Tab'ом компонент фокус получает, а вот при клике мышкой нет. Как сделать чтоб компонент получал фокус ввода при клике мышкой как и другие компоненты, или надо обрабатывать OnMouseDown ?


DVM   (2006-10-25 15:42:00) [1]

А у меня работало и так:

public
 procedure MouseMove(Shift: TShiftState; X, Y: Integer); override;

....

procedure TMyControl.MouseMove(Shift: TShiftState; X, Y: Integer) ;
begin
 ...
 inherited MouseMove(Shift, x,y);
end;


DVM   (2006-10-25 15:42:00) [2]

т.е. сообщения мышки приходят и так


Юрий Зотов   (2006-10-25 15:02:00) [3]

> Mishenka   (25.10.06 10:22)  

> Как сделать чтоб компонент получал фокус ввода при клике мышкой

Насколько помню, надо заместить конструктор и там установить в ControlStyle флаг, разрешающий контролу получать сообщения мыши. Уточните по справке.


Mishenka   (2006-10-25 14:21:00) [4]


> Плохиш ©   (25.10.06 10:58) [3]
> TWinControl.DoEnter Находится за 2 секунды.

Ну вот нашёл что ты мне предлагаешь:
procedure TWinControl.DoEnter;
begin
 if Assigned(FOnEnter) then FOnEnter(Self);
end;

Только не понимаю, как это в данном случае может помочь.


> Два предложения взаимонесвязанные. Событие OnEnter не для
> разработчика компонента, а для разработчика использующего компонент.

Ну я просто неудачно выразился. Вот здесь я как раз и использовал метод DoEnter...


Плохиш   (2006-10-25 10:58:00) [5]


> Mishenka   (25.10.06 10:22)  
> Пишу компонент потомок TCustomControl. Сделал обработку
> события OnEnter для обработки получения фокуса.

Два предложения взаимонесвязанные. Событие OnEnter не для разработчика компонента, а для разработчика использующегокомпонент.

> Mishenka   (25.10.06 10:51) [2]
> А как сделано в стандартных компонентах?

TWinControl.DoEnter
Находится за 2 секунды.


Mishenka   (2006-10-25 10:51:00) [6]

А как сделано в стандартных компонентах?
Полез смотреть исходники ListBox'а, но что-то не могу найти как у него это реализовано...


DVM   (2006-10-25 10:25:00) [7]


> или надо обрабатывать OnMouseDown ?

и так тоже можно


Наверх

Титульная страница Поиск, карта сайта Написать письмо