View Full Version : رویدادهای آبجکت های ایجاد شده در RunTime
majid2230
جمعه 23 بهمن 1388, 02:53 صبح
سلام
من یه سری آبجکت به تعداد نا معلوم در زمان اجرای برنامه می سازم .سوال من اینه که چه جوری می تونم برای رویداد های این آبجکت ها مثل onclick و .... کد بنویسم .
ممنون
Mahmood_M
جمعه 23 بهمن 1388, 03:29 صبح
برای این کار 2 راه معمول وجود داره :
1. استفاده از Action List (http://barnamenevis.org/forum/showthread.php?p=475312) ( البته برای کنترلهایی که خاصیت Action دارن )
2. می تونید یک Procedure در قسمت Public فرم ( یا هر جای دیگری ! ) ایجاد کنید و بعد از ساخته شدن آبجکت مقدار مثلا OnClick اون رو برابر Procedure ساخته شده قرار بدید ، مثال :
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
procedure MyOnClick(Sender : TObject);
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.MyOnClick(Sender : TObject);
begin
ShowMessage('Hi ... !');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
BitBtn1.OnClick := Form1.MyOnClick;
end;
به این نکته توجه کنید که Procedure ساخته شده باید Signature یا امضاء مشابهی با رویدادی که می خواهید Procedure رو به اون نسبت بدید داشته باشه ، منظور از امضاء همون عبارت Sender : TObject یا درواقع آرگومانهای ورودی Procedure هست ...
برای اطلاعات بیشتر در این زمینه هم می تونید به این صفحه (http://www.delphiplus.mihanblog.com/post/39) مراجعه کنید ...
موفق باشید ...
majid2230
جمعه 23 بهمن 1388, 07:13 صبح
با تشکر از راهنماییتون
من ترجیح می دم با action list کار کنم , با این فرض اگه بخوام یه پارامتر هم به تابع اضافه شده به اکشن لیست بفرستم باید چه کار کنم در ضمن لینکی هم که در توضیحات action list برا دانلود گذاشته بودید خرابه اگه ممکنه اصلاح کنید .
ممنون
Mahmood_M
جمعه 23 بهمن 1388, 15:08 عصر
امکان اضافه کردن Parameter به رویدادهای Action ساخته شده با Action List وجود نداره ، ولی می تونید پارامترهاتون رو به صورت متغیر در قسمت Public فرم یا در قسمت Var اصلی یونیت تعریف کنید و قبل از فراخوانی Action اونها رو مقدار دهی کنید و در Action از اونها استفاده کنید ...
درضمن ، لینک مقاله هم تصحیح شد ( مشکلی در سایت ParsaSpace پیش اومده )
موفق باشید ...
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.