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

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

Как поймать момент покидания курсором контрола?


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 ?


Наверх

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