PDA

View Full Version : اين كد چطوريه TLabel(ctrl).OnClick:= Label1_[array]click



علیرضا110
یک شنبه 26 مهر 1394, 14:05 عصر
باسلام
سوالم اينه كه چطوري ميشه procedure رابه صورت array نوشت كه نتيجه آن شبيه پايين بشه

procedure Label1_1click(Sender: TObject);
procedure Label1_2click(Sender: TObject);

در اصل

TLabel(ctrl).OnClick:= Label1_[array]click

يك چيزي تو اين مايه

پيشا پيش تشكر مي كنم

یوسف زالی
دوشنبه 27 مهر 1394, 10:27 صبح
سلام.
اونچه که در فکر دارید به نظر اشتباه می رسه.
با استفاده از Sender به سادگی می تونید همه رو در یک متد کنترل کنید:


for i := low(labelsArray) to high(labelsArray) do
begin
labelsArray[i].Tag := i;
labelsArray[i].OnClick := HandleClicks;
end;


procedure TForm1.HandleClicks(Sender: TObject);
begin
case TLabel(Sender).Tag of
0: DoSomething;
1: DoSomething;
2: DoSomething;
3: DoSomething;
4: DoSomething;
.
.
end;
end;

علیرضا110
دوشنبه 27 مهر 1394, 11:27 صبح
ممنون از جوابتون

ولي من مي خواهم ببينم آيا ميشود procedure به صورت array تعدادش را زياد كرد
مثلا:

procedure HandleClicks(Sender: TObject):array;

تا بتوان به طور جدا گانه يكي داشته باشيم

یوسف زالی
دوشنبه 27 مهر 1394, 12:06 عصر
نخیر. دلیلش هم اینه که پیاده سازی اون ها رو باید داشته باشید. اما می تونید متغیری از نوع پروسیجر داشته باشید:
var
procs: array of procedure;

or

array of TNotifyEvent