ورود

View Full Version : استفاده از frame به صورت Runtime



free
شنبه 21 مرداد 1385, 09:21 صبح
سلام دوستان
تو جستجو جوابمو نگرفتم
فرض کنید که من یک form دارم و دو تا frame . رو form دو button دارم . می خوام تو اجرا با هر کلیک رو دکمه اول فریم 1 و دکمه 2 فریم 2 نمایش داده بشه. میدونم خیلی ساده است اما مشکله من اینجاست که نمی خوام فریم ها رو موقع طراحی رو فرمم قرار بدم میخوام رو فرم اصلی هیچ فریمی نذارم و تو اجرا خودم کنترلش کنم. این کار امکان پذیره؟ خیلی با خواص فرم و فریم ور رفتم اما چیزی دستگیرم نشد.
مرسی

mzjahromi
شنبه 21 مرداد 1385, 09:46 صبح
آره امکان پذیره
شما در زمان اجرا فریم رو ایجاد کنید.


Var
TestCreate : TFrame1;
begin
TestCreate := TFrame1.create(self);
With TestCreate Do
Begin
Parent:=Parent1;
Name:=Name1;
...
End

free
شنبه 21 مرداد 1385, 10:45 صبح
ممنون اما مشکلم رفع نشد. این کد را کجا بذارم من تو یه button رو فرم اصلی گذاشتم اما جواب نداد. برنامه اجرا نمیشه اما با کلیک رو button فریم مورد نظر نمایش داده نمیشه . پیغامی هم نمی ده. لطفا راهنمایی نمایید.

ببخشید برنامه اجرا میشود اما پیغامی نمی دهد و فریم هم نمایش داده نمیشه

mzjahromi
شنبه 21 مرداد 1385, 10:57 صبح
میشه کدی رو که خودتون استفاده کردید بذارید اینجا

ghabil
یک شنبه 22 مرداد 1385, 01:15 صبح
همین کد رو اینطوری عوض کن که بجای Parent1 اسم فرمی که میخوای فریم روش باشه رو بزار، اصولا هر شی در دلفی بر روی پرنتش قرار میگیره و اگر پرنتش رو nil کنی دیگه دیده نمیشه .

free
یک شنبه 22 مرداد 1385, 08:14 صبح
خیلی ممنون دوستان. مشکلم رفع شد.
پیروز باشید.

free
سه شنبه 24 مرداد 1385, 08:08 صبح
یه مشکل دیگه که پیش اومده اینه که برای بار اول که button را کلیک می کنم درست عمل میکنه و فریم رو نمایش میده اما اگه دو بار یا بیشتر از یک بار کلیک کنم error میده.
هر چه هم parent را nil می کنم باز همونه!
ممنون میشم راهنمایی کنید.

mzjahromi
سه شنبه 24 مرداد 1385, 13:16 عصر
میشه خطا رو بنویسید؟
توجه داشته باشید که وقتی یک بار یک فریم رو ایجاد میکنید اگر بخواهید برای بار دوم فریم رو با همون نام ایجاد کنید خطا میده که همچین نامی وجود داره برای اینکه این اتفاق نیافته یک راهش اینه که هر وقت کارتون تموم شد اونو Free کنید