![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как поймать момент покидания курсором контрола?
asdf2 © (2008-04-08 14:45:00)Сабж.
Leonid Troyanovsky (2008-04-08 15:35:00) [1]
> asdf2 (08.04.08 14:45)
http://groups.google.com/group/fido7.ru.delphi.chainik/msg/81212d9cecc96ee4
--
Regards, LVT.
asdf2 (2008-04-08 15:12:00) [2]
> DVM © (08.04.08 15:05) [8]
догадаюсь
спасибо
DVM (2008-04-08 15:05:00) [3]
> При профессиональной разработке компонентов
А кто говорил про профессиональную разработку компонентов?
Этот кусок с форума http://forum.vingrad.ru/forum/topic-181327.html.
А DoMouseEnter, DoMouseLeave автор я думаю догадается.
DVM (2008-04-08 15:03:00) [4]Только способ CM_MOUSELEAVE не очень надежен. Бывает (редко), что мышь уже не над контролом, а сообщение не пришло. Если это очень критично, то не помешает еще и таймер.
Семеныч (2008-04-08 15:02:00) [5]> DVM © (08.04.08 14:55) [4]
При профессиональной разработке компонентов, создавая событие, обычно вводят метод его диспечеризации.
antonn (2008-04-08 14:56:00) [6]значит надо в WndProc() нужного окна поймать CM_MOUSELEAVE
Семеныч (2008-04-08 14:55:00) [7]Обработайте сообщение CM_MOUSELEAVE
DVM (2008-04-08 14:55:00) [8]
unit FPanel;
interface
uses
SysUtils, Classes, Controls, ExtCtrls, Messages;
type
TFPanel = class(TPanel)
private
FOnMouseEnter, FOnMouseLeave, FOnPaint: TNotifyEvent;
procedure CMMouseEnter(var msg:TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var msg: TMessage); message CM_MOUSELEAVE;
protected
procedure Paint; override;
public
property Canvas;
published
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
property OnPaint: TNotifyEvent read FOnPaint write FOnPaint;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('MyComponent', [TFPanel]);
end;
{ TFPanel }
procedure TFPanel.CMMouseEnter(var msg: TMessage);
begin
inherited;
if Assigned(FOnMouseEnter) then FOnMouseEnter(Self);
end;
procedure TFPanel.CMMouseLeave(var msg: TMessage);
begin
inherited;
if Assigned(FOnMouseLeave) then FOnMouseLeave(Self);
end;
procedure TFPanel.Paint;
begin
inherited;
if Assigned(FOnPaint) then FOnPaint(Self);
end;
end.
asdf2 (2008-04-08 14:48:00) [9]
> Сергей М. © (08.04.08 14:47) [1]
угу, это и хочу сделать, тока в D7
Сергей М. (2008-04-08 14:47:00) [10]OnMouseLeave ?