PDA

View Full Version : ساخت اشیا به صورت runtime



Mask
یک شنبه 09 اسفند 1388, 15:34 عصر
با سلام
سوالم اینه که چطوری می تونم در حالت اجرای برنامه روی یک دکمه کلیک کنم و همون لحظه یه فرم دیگه ساخته بشه و بر روی اون یک باتن و یک لیبل و یک تایمر باشه که شروع بکنه به شمارش اعداد.
میخام به صورت runtime باشه ور در حالت اجرا ساخته بشه.
البته نمی خام محدودیت تعداد ساخت فرم هم داشته باشم.
یعنی با هر بار کلیک روی این باتن یک فرم با چنین خصوصیاتی ساخته بشه.
ممنون از جوابتون.
با تشکر.

majid_ramak
یک شنبه 09 اسفند 1388, 16:33 عصر
procedure TForm1.Button1Click(Sender: TObject);
var
FForm: TForm;
FButton: TButton;
FLabel: TLabel;
FTimer: TTimer;
begin
FForm:= TForm.Create(Self);

FLabel:= TLabel.Create(FForm);
with FLabel do
begin
Parent := FForm;
Caption:= 'My Label';
Top := 129;
Left := 123;
end;
FButton:= TButton.Create(FForm);
with FButton do
begin
Parent := FForm;
Caption:= 'MyButton';
Top := 100;
Left := 50;
end;
FTimer:= TTimer.Create(FForm);
with FTimer do
begin
Interval:= 1000;
Enabled := True;
end;
FForm.Show;
end;



برای اینکه برنامتون TTimer رو بشناسه ExtCtrls رو Use کنید.

Felony
یک شنبه 09 اسفند 1388, 16:46 عصر
procedure TForm1.Button1Click(Sender: TObject);
var
FForm: TForm;
FButton: TButton;
FLabel: TLabel;
FTimer: TTimer;
begin
FForm:= TForm.Create(Self);

FLabel:= TLabel.Create(FForm);
with FLabel do
begin
Parent := FForm;
Caption:= 'My Label';
Top := 129;
Left := 123;
end;
FButton:= TButton.Create(FForm);
with FButton do
begin
Parent := FForm;
Caption:= 'MyButton';
Top := 100;
Left := 50;
end;
FTimer:= TTimer.Create(FForm);
with FTimer do
begin
Interval:= 1000;
Enabled := True;
end;
FForm.Show;
end;



برای اینکه برنامتون TTimer رو بشناسه ExtCtrls رو Use کنید.
کد شما فرم و لیبل و کلید و تایمر رو میسازه ولی بهش رویداد اختصاص نمیده ، براتون یه نمونه نوشتم ، میتونید از ضمیمه بگیرید .

majid_ramak
یک شنبه 09 اسفند 1388, 18:12 عصر
کد شما فرم و لیبل و کلید و تایمر رو میسازه ولی بهش رویداد اختصاص نمیده ، براتون یه نمونه نوشتم ، میتونید از ضمیمه بگیرید .

ﺁخه ایشون تو سوالشون رویداد نخواستن اما اگه بخوان میتونن که یک Procedure مثل تابع زیر بسازن


procedure TForm1.DoSomthing(Sender: TObject);
begin
Form1.Caption:= 'MY FORM';
end;

حالا اونون به OnClick اون Button پاس بدن به این شکل

FButton.OnClick := DoSomthing;

Felony
یک شنبه 09 اسفند 1388, 18:36 عصر
ﺁخه ایشون تو سوالشون رویداد نخواستن


ه که شروع بکنه به شمارش اعداد.
من از این گفته ایشون اینطور برداشت کردم .

majid_ramak
یک شنبه 09 اسفند 1388, 19:13 عصر
من از این گفته ایشون اینطور برداشت کردم .
درسته حق با شماست

Mask
سه شنبه 11 اسفند 1388, 00:52 صبح
ممنون از دوستان
اما مشکل اینجاست که با ساخت فرم دوم تیمر فرم اول از کار میوفته.
حالا باید چیکار کرد.
ممنون از حسن توجهتون.

Felony
سه شنبه 11 اسفند 1388, 06:44 صبح
کدتون رو قرار بدید .

majid_ramak
سه شنبه 11 اسفند 1388, 08:47 صبح
ممنون از دوستان
اما مشکل اینجاست که با ساخت فرم دوم تیمر فرم اول از کار میوفته.
حالا باید چیکار کرد.
ممنون از حسن توجهتون.
تو این سورس که من نوشتم مشکلی پیش نمیاد اینو نگاه کنید: