PDA

View Full Version : raising event



Farhad.B.S
شنبه 17 خرداد 1382, 14:55 عصر
سلام.

1.اگه ممکنه لطف کنید طریقه نوشتن یه event برای یه کامپوننت رو بنویسید :roll:

2.من تو یه کامپوننت مثلا از یه Button استفاده کردم. حالا چطور میتونم event مربوط به click شدن رو handle کنم ؟

خیلی خیلی ممنون.

مهدی کرامتی
شنبه 17 خرداد 1382, 16:04 عصر
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormDblClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('Hello World');
end;

procedure TForm1.FormDblClick(Sender: TObject);
var
Button1: TButton;
Begin
Button1 := TButton.Create(Self);
with Button1 do
begin
Name := 'ButtonX';
Parent := Self;
Left := 10;
Top := 60;
Width := 75;
Height := 25;
Caption := 'ButtonX';
TabOrder := 0;
OnClick := Button1Click; // here we assign a procedure to event handler
end;
end;

end.

amirrf
شنبه 17 خرداد 1382, 16:19 عصر
سلام

1- رویدادها در واقع خاصیت هایی هستند از نوع اشاره گر رویه؛

TMyControl = class(TComponent)
private
FOnClick: TNotifyEvent;
...
protected
procedure DoClick;
pubished
property OnClick: TNotifyEvent read FOnClick write FOnClick;
end;

....
proecdure TMyControl.DoClick;
begin
if Assigned(FOnClick) then
FOnClick( Self );
end;

2- یک رویه در کلاس کامپوننت اصلی خود تعریف کنید مطابق نوع رویه آن رویداد و آن را برای گرداندن رویداد موردنظر بکار برید:

TMyControl = class(TComponent)
private
FInternalButton: TButton;
procedure CreateInternalButton;
public
procedure InternalButtonOnClick(Sender: TObject);
end;
...
procedure TMyControl.CreateInternalButton;
begin
FInternalButton := TButton.Create(Self);
//...
FInternalButton.OnClick := InternalButtonOnClick;
end;

procedure TMyControl.InternalButtonOnClick(Sender: TObject);
begin
//event handling codes
end;

JavanSoft
یک شنبه 18 خرداد 1382, 00:20 صبح
1 سوال
آیا می توان Eventای را که پارامترهایش با یک Event دیگر شبیه نیستند برابر کرد؟
مثلا در Onclick
OnmouseUp را جایگزین نمود
(البته چون نتونستم می پرسم)

amirrf
یک شنبه 18 خرداد 1382, 11:09 صبح
آیا می توان Eventای را که پارامترهایش با یک Event دیگر شبیه نیستند برابر کرد؟
خیر. باید از نظر تعداد، ترتیب و نوع پارامترها یکی باشند.