PDA

View Full Version : سوال: چطور از یه فرم به یه فرم دیگه دستور بدم؟



joooje
دوشنبه 01 آذر 1389, 15:56 عصر
با عرض سلام
یه فرم دارم که توش یه ادیت باکس هست و یه دکمه
من با این کد یه فرم جدید مثل form1 که داشتم میسازم.این دستور رو به دکمه دادم:


procedure TForm1.Button1Click(Sender: TObject);
begin
with TForm1.Create(self) do
begin
Name := 'jooje' ;
Show;
Caption := 'jooje' ;
SetBounds(200, 200, 200, 200);
end;
end;


با کلیک کردن روی دکمه یه فرم جدید دقیقا مثل فرم یک ساخته میشه که توش یه ادیت باکس هست و یه دکمه
حالا چطور با دکمه ای که تو فرم اول دارم متنی رو که تو ادیت باکس فرم دوم هست تغییر بدم؟
در ضمن با کلیک بر روی دکمه ی فرم دوم که ساخته شد یه فرم سوم ساخته میشه.
من میخوام از فرم اول بتونم متن ادیت باکسهای فرمهای بعدی رو تغییر بدم
ممنون از راهنماییتون.

Felony
دوشنبه 01 آذر 1389, 18:01 عصر
((Self.FindComponent('jooje') as TForm).FindComponent('Edit1') as Tedit).Text:= 'Test';

joooje
سه شنبه 02 آذر 1389, 17:06 عصر
سلام و ممنون ار راهنماییتون
میشه یه لطفی بکنید و بگید چرا وقتی با کدهای زیر صفحه رو میسازم کدی که برام نوشته بودید کار نمیده.
و برای این کدها چه تغییری باید تو اون کدی که گفته بودید بدم؟



procedure TForm1.Button1Click(Sender: TObject);
begin
Form1 := TForm1.Create(Application);
Form1.Show;
Form1.Name := 'jooje' ;
Form1.Caption := 'jooje' ;
end;

یا


procedure TForm1.Button1Click(Sender: TObject);
begin
with TForm1.CreateParented(Window) do
begin
Name := 'jooje' ;
Show;
Caption := 'jooje' ;
SetBounds(200, 200, 200, 200);
end;

و چرا وقتی با این کد دستور تغییر را میدم ، فقط تو آخرین فرم ساخته شده اعمال میشه. درحالی که به نظرم باید فقط تو فرم اول اعمال بشه



Form1.Edit1.Text:= 'Test';

ممنون از راهنماییتون

Felony
سه شنبه 02 آذر 1389, 18:02 عصر
میشه یه لطفی بکنید و بگید چرا وقتی با کدهای زیر صفحه رو میسازم کدی که برام نوشته بودید کار نمیده.
نبایدم کار کنه ، شما تو کد اولت مالک فرم رو فرم جاریت قرار دادی ( Self ) و من هم کد رو بر همون اساس برات نوشتم ولی تو کد دومی که قرار دادی مالک فرم رو Application در نظر گرفتی !

به عنوان مثال کد زیر برای ساخت یک فرم با نام Form2 و یک Edit روی اون فرم با نام Edit1 هست و مالک فرم ساخته شده هم Application :
var
Form2: TForm;
Edit1: TEdit;
begin
Form2:= TForm.Create(Application);
with Form2 do
begin
Show;
Name := 'jooje' ;
Caption := 'jooje' ;
end;
Edit1:= TEdit.Create(Form2);
with Edit1 do
begin
Parent:= Form2;
Name:= 'Edit1';
Text:= 'Test Edit';
end;
end;

حالا برای دستیابی به فرم باید تو کامپوننت هایی که Application صاحبشون هست به دنبال فرم ساخته شده بگردی و بعد از پیدا کردن اون فرم به دنبال شئ Edit مورد نظر در اون فرم پیدا شده :

((Application.FindComponent('jooje') as TForm).FindComponent('Edit1') as Tedit).Text:= 'Test';