PDA

View Full Version : ارسال Event



مهدی فهمیده غلامی
یک شنبه 26 بهمن 1382, 07:38 صبح
چطور می تونم برای کنترل image رویداد های mouse enter,mouse leave را ایجاد کنم
من با این رویداد ها می خوام دو تا عکسی را نمایش بدم یعنی با ورود موس روی کنترل image عکس اولی دیده بشه
و با خارج شدن موس عکس دوم نمایش یابد
می شه بگین این
کار رو چطور میشه انجام داد؟؟؟

Mashatan
یک شنبه 26 بهمن 1382, 09:38 صبح
این برای TLabel هست و برای TImage کار میکنه ! فقط باید Class رو عوض کنید :wink:


unit uMyLabel;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TMyLabel = class(TLabel)
private
FOnMouseEnter: TNotifyEvent;
FOnMouseLeave: TNotifyEvent;
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
published
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;

property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;

end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Samples', [TMyLabel]);
end;

procedure TMyLabel.CMMouseEnter(var Message: TMessage);
begin
inherited;
if Assigned(FOnMouseEnter) then FOnMouseEnter(Self);
end;

procedure TMyLabel.CMMouseLeave(var Message: TMessage);
begin
inherited;
if Assigned(FOnMouseLeave) then FOnMouseLeave(Self);
end;

end.

اراداتمند
مشاطان

Behzad_Asharkhan
یک شنبه 26 بهمن 1382, 09:46 صبح
سلام

این کد رو تو یه فایل به نام 'MyImage.Pas" بنویس و کامپوننت جدید رو اینستال کن.
Event هایی که خواستی اضافه میشه. 8)

خیلی بهتره که عنوان این تاپیک تغییر کنه به " روش اضافه کردن event های OnEnter و OnLeave "


unit MyImage;

interface

uses
SysUtils, Classes, Controls, ExtCtrls, Messages;

type
TMyImage = class(TImage)
private
FOnEnter: TNotifyEvent;
FOnLeave: TNotifyEvent;
protected
procedure CMMouseEnter( var Msg: TMessage ); message CM_MOUSEENTER;
procedure CMMouseLeave( var Msg: TMessage ); message CM_MOUSELEAVE;
public
{ Public declarations }
published
property OnEnter: TNotifyEvent read FOnEnter write FOnEnter;
property OnLeave: TNotifyEvent read FOnLeave write FOnLeave;
end;


procedure Register;

implementation


//*********************************************
//
//*********************************************

procedure TMyImage.CMMouseEnter( var Msg: TMessage);
begin
inherited;

if assigned(FOnEnter) then
FOnEnter(self);
end;


procedure TMyImage.CMMouseLeave( var Msg: TMessage);
begin
inherited;

if assigned(FOnLeave) then
FOnLeave(self);
end;


//*********************************************
// Register Component
//*********************************************
procedure Register;
begin
RegisterComponents('Behzad', [TMyImage]);
end;

end.

Behzad_Asharkhan
یک شنبه 26 بهمن 1382, 09:49 صبح
چه جالب :shock:

آقای Mashatan شما 8 دقیقه سریعتر بودید. :wink:

Inprise
یک شنبه 26 بهمن 1382, 13:13 عصر
Event ارسال نمیشه . در مدل VCL ، "پیام" ارسال میشه ، یک event ایجاد میشه و Event handler پردازشش میکنه .