سلام.
1.اگه ممکنه لطف کنید طریقه نوشتن یه event برای یه کامپوننت رو بنویسید :roll:
2.من تو یه کامپوننت مثلا از یه Button استفاده کردم. حالا چطور میتونم event مربوط به click شدن رو handle کنم ؟
خیلی خیلی ممنون.
سلام.
1.اگه ممکنه لطف کنید طریقه نوشتن یه event برای یه کامپوننت رو بنویسید :roll:
2.من تو یه کامپوننت مثلا از یه Button استفاده کردم. حالا چطور میتونم event مربوط به click شدن رو handle کنم ؟
خیلی خیلی ممنون.
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.
سلام
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;
1 سوال
آیا می توان Eventای را که پارامترهایش با یک Event دیگر شبیه نیستند برابر کرد؟
مثلا در Onclick
OnmouseUp را جایگزین نمود
(البته چون نتونستم می پرسم)
خیر. باید از نظر تعداد، ترتیب و نوع پارامترها یکی باشند.آیا می توان Eventای را که پارامترهایش با یک Event دیگر شبیه نیستند برابر کرد؟