PDA

View Full Version : تعیین رویداد برای کنترلهای runtime



آیدا رضایی
دوشنبه 26 دی 1384, 15:59 عصر
سلام دوستان.
چطور میشه واسه کنترلهایی که بصورت runtime ایجاد میکنیم رویدادهایی مثل onclick رو تعریف کنیم.
بطور مثال من در کدهای زیر میخوام برای هر کنترلم یه رویداد Onclick بزارم که کاربر بعد از کلیک روی اونها با توجه به شماره یا نام اون کنترل داده ای رو از بانک بخونم و با اون داده کارهایی رو در برنامه انجام بدم.
کدها رو ببینید :


var
i:integer;
DN_Labels : array [1 .. 100] of TLabel;
//==================
For i := 1 to DTM.Table.RecordCount do
Begin
DN_Labels[i] := TLabel.Create(Self);
//========
with DN_Labels[i] do
begin
Parent := SmallStatus_Form ;
Name := 'DNLabel'+IntToStr(i);
Caption := DTM.Table.FieldValues['uname'];
Hint :='IP کاربر : ' + DTM.Table.FieldValues['coname'];
AutoSize := False;
Width := 95;
Alignment := taLeftJustify ;
BiDiMode := bdRightToLeft ;
Color := clActiveCaption ;
Transparent := False ;
IF i = 1 then Top := 10 Else Top:= ((i-1) * 20) + 10;
Font.Color := clWhite ;
Left := 0;
end;
DTM.Table.Next;
End;

دوستان من خیلی وقته دنبال حل کردن این مشکل هستم.
ممنون میشم راهنمایی کنید ( حتی اگه روش من واسه این کار کاملا اشتباه هست لطف کنید بگید).

اَرژنگ
دوشنبه 26 دی 1384, 16:16 عصر
اینرا به کدتان اضافه کنید:


TDTM.OnMyLableCilck(Sender :TObject)
begin
//Kod ONClick ra inja bnvydyd
end;

with DN_Labels[i] do
begin
Parent := SmallStatus_Form ;
Name := 'DNLabel'+IntToStr(i);
Caption := DTM.Table.FieldValues['uname'];
Hint :='IP کاربر : ' + DTM.Table.FieldValues['coname'];
AutoSize := False;
Width := 95;
Alignment := taLeftJustify ;
BiDiMode := bdRightToLeft ;
Color := clActiveCaption ;
Transparent := False ;
IF i = 1 then Top := 10 Else Top:= ((i-1) * 20) + 10;
Font.Color := clWhite ;
Left := 0;
OnClick := OnmyClick; //<---------------
end;

mzjahromi
دوشنبه 26 دی 1384, 16:42 عصر
http://www.barnamenevis.org/forum/showthread.php?p=181184#post181184

MiRHaDi
دوشنبه 26 دی 1384, 23:48 عصر
سلام
از sender استفاده کن و اسمش رو بگیر و توی تابع از اسمش استفاده کن و ...
بای

آیدا رضایی
سه شنبه 27 دی 1384, 10:19 صبح
خیلی ممنون دوستان از کمکتون.
یه سوال دیگه .
چطور اسم کنترل رو در تابع بگیرم .؟

آیدا رضایی
سه شنبه 27 دی 1384, 10:59 صبح
ممنون دوستان .
پیدا کردم.
این لینک شاید بدرد دوستان دیگه هم بخوره :
http://www.clubdelphi.com/foros/showthread.php?t=21387
در ضمن برای استفاده از هرکدام از خاصیت های یک کنترل runtime میشه از دستور زیر استفاده کرد :
(البته برای دوستانی که بعدا به مشکل من برخورد کردند این مثال ها رو اوردم )

ShowMessage(TButton(sender).Caption);
TButton(sender).Left := 200 ;

MiRHaDi
چهارشنبه 28 دی 1384, 00:05 صبح
سلام
این درسته ! از sender as Tbutton هم میتونی استفاده کنی
بای

آیدا رضایی
چهارشنبه 28 دی 1384, 01:06 صبح
مرسی جناب میرهادی