PDA

View Full Version : سوال: فرستادن شی به یک پروسیجر



sajioo
یک شنبه 21 اسفند 1390, 07:22 صبح
سلام دوستان نمیدونم سوالم رو درست مطرح کردم یا نه .
فرض اینه من یک تایمر روی فرم دارم دو butoon.
می خوام وقتی button اول کلیک میشه تایمر طول button اول رو افزایش بده.
حالا می خوام با همون تایمر اگر روی butoon دوم کلیک شد طول button دوم زیاد بشه.
نمی خوام از if و متغییر کمکی استفاده کنم.
با توجه به این پروسیجر

procedure TForm1.Timer1Timer(Sender: TObject);
من مثلا چنین کدی نوشتم

if Tbutton(sender).Height<417 then
Tbutton(sender).Height:=Tbutton(sender).Height+1;
حالا موندم چطور با زدن دکمه ی اول button اول را بفرستم به پروسیجر تایمر.
امیدوارم منظورم رو رسونده باشم.
سوال دوم اینه که اگه بخوام دو تا شی به همین پروسجر بفرستم چکار کنم؟ اینجا که فقط یک sender تعریف شده.
ممنون از راهنمایی هاتون

Ananas
یک شنبه 21 اسفند 1390, 23:58 عصر
سلام.
به نظرم این طور عمل کن :
یک متغیر از نوع TButton در قسمت var و یا public فورم تعریف کن به این شکل:

var
btn : TButton;

تو OnClick دکمه اول بنویس :

procedure TForm1.Button1Click(Sender: TObject);
begin
btn := Sender as TButton;
end;

بعد OnClick دکمه دوم رو برابر دکمه اول بگذار. (با کلیک روی قسمت OnClick دکمه دوم از تو لیست Button1Click رو انتخاب کن)
بعد برای Timer یه همچین چیزی بنویس :

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if btn <> nil then
btn.Width := Random(50) + 50;
end;

______________________________
به همین شکل می تونید هر چند تا شی می خوای تو تابع تایمر داشته باشی. در واقع متغیر btn در اینجا یه جور اشاره گر هست که با زدن هر دکمه به همون دکمه اشاره می کنه.

Felony
دوشنبه 22 اسفند 1390, 06:03 صبح
یک متغیر از نوع TButton در قسمت var و یا public فورم تعریف کن به این شکل
دلیلی برای Public بودن متغییر نیست ، بهتره Private تعریف بشه .