joooje
پنج شنبه 26 مرداد 1391, 13:56 عصر
با سلام به دوستان
من با دستور Create چندین شی رو توی فرمم ایجاد میکنم (تو فرم 2 که خودش parent شىه تو فرم 1):
with TEdit.Create(form1) do
begin
Parent := form2;
Name := 'M'+inttostr(NumMeb);
Text := '';
OnClick:= MyEditClick;
left:=5;
top:=5;
Width:=100;
Height:=21;
Color:= clWhite;
Font.Color:= clBlack;
Cursor:=crDrag;
Font.Name:='Tahoma';
end;
with TComboBox.Create(form1) do
begin
Parent := form2;
Name := 'M'+inttostr(NumMeb);
Text := '';
OnEnter:= MyComboBoxEnter;
Style:= csDropDownList;
left:=5;
top:=5;
Width:=100;
Height:=21;
Color:= clWhite;
Font.Color:= clBlack;
Cursor:=crDrag;
Font.Name:='Tahoma';
end;
و ...
برای پاک کردن اونها از کد زیر استفاده میکنم:
for i:=1 to NumMeb do
begin
Objectm:= (form1.FindComponent('M'+inttostr(i)));
if Objectm is TEdit then
begin
TEdit(Objectm).free;
end;
if Objectm is TLabel then
begin
TLabel(Objectm).free;
end;
if Objectm is TComboBox then
begin
TComboBox(Objectm).free;
end;
و...
end;
مشکل اینجاست که اگر اشیا از یه نوع باشه و یا تعدادشون کم باشه ولی از نوعهای مختلفی باشن اونارو پاک میکنه
ولی اگر زیاد باشن و یا بعضی وقتا ایراد میگیره:
لطفا راهنمایی کنید که اینروش من اصلا درست هست یا نه و آیا روشی وجود داره که بشه برای تمام کامپوننت های متنوع این کار رو کرد؟
چرا وقتي تو کد بالا برای پیدا کردن کامپوننت ها به جای فرم 1 از فرم 2 استفاده میکنم (مثل کد زیر) کاری نمیکنه؟ در حالی که فرم 2 رو با دستور Create ایجاد نمیکنم و از اول موجود هست
Objectm:= (form2.FindComponent('M'+inttostr(i)));
ممنون
من با دستور Create چندین شی رو توی فرمم ایجاد میکنم (تو فرم 2 که خودش parent شىه تو فرم 1):
with TEdit.Create(form1) do
begin
Parent := form2;
Name := 'M'+inttostr(NumMeb);
Text := '';
OnClick:= MyEditClick;
left:=5;
top:=5;
Width:=100;
Height:=21;
Color:= clWhite;
Font.Color:= clBlack;
Cursor:=crDrag;
Font.Name:='Tahoma';
end;
with TComboBox.Create(form1) do
begin
Parent := form2;
Name := 'M'+inttostr(NumMeb);
Text := '';
OnEnter:= MyComboBoxEnter;
Style:= csDropDownList;
left:=5;
top:=5;
Width:=100;
Height:=21;
Color:= clWhite;
Font.Color:= clBlack;
Cursor:=crDrag;
Font.Name:='Tahoma';
end;
و ...
برای پاک کردن اونها از کد زیر استفاده میکنم:
for i:=1 to NumMeb do
begin
Objectm:= (form1.FindComponent('M'+inttostr(i)));
if Objectm is TEdit then
begin
TEdit(Objectm).free;
end;
if Objectm is TLabel then
begin
TLabel(Objectm).free;
end;
if Objectm is TComboBox then
begin
TComboBox(Objectm).free;
end;
و...
end;
مشکل اینجاست که اگر اشیا از یه نوع باشه و یا تعدادشون کم باشه ولی از نوعهای مختلفی باشن اونارو پاک میکنه
ولی اگر زیاد باشن و یا بعضی وقتا ایراد میگیره:
لطفا راهنمایی کنید که اینروش من اصلا درست هست یا نه و آیا روشی وجود داره که بشه برای تمام کامپوننت های متنوع این کار رو کرد؟
چرا وقتي تو کد بالا برای پیدا کردن کامپوننت ها به جای فرم 1 از فرم 2 استفاده میکنم (مثل کد زیر) کاری نمیکنه؟ در حالی که فرم 2 رو با دستور Create ایجاد نمیکنم و از اول موجود هست
Objectm:= (form2.FindComponent('M'+inttostr(i)));
ممنون