View Full Version : نمایش فرم دلخواه روی فرم های دیگر
mahdy.asia
جمعه 31 خرداد 1392, 20:25 عصر
من یک برنامه نوشتم که می تونم چند فرم را بصورت همزمان باز کنم می خواهم اگر یکی از فرم های باز شده را دوباره کاربر صدا زد یک نسخه از آن دوباره نمایش داده نشود بلکه نسخه ایی که قبلا ایجاد شده روی فرم های دیگر قرار گیرد مانند کاری که Ctrl+Tab انجام می دهد
tdkhakpur
جمعه 31 خرداد 1392, 20:35 عصر
میتونی فرمها رو اکتیو کنی
SetActiveWindow(Form1.Handle);
Felony
جمعه 31 خرداد 1392, 21:15 عصر
فرم های ساخته شده در برنامه در خصیصه Forms شئ Application نگهداری میشن ، هر وقت کاربر روی دکمه فرم n کلیک کرد اول تو یک حلقه کل فرم های برنامه رو چک میکنید و بررسی میکنید فرم مذکور تو لیست فرم های خصیصه Froms وجود داره یا نه ( با استفاده از اسمش ) ، اگر موجود بود فعالش میکنید ( FormName.Active یا تابع SetForegroundWindow ) ، اگر هم موجود نبود میسازیش و نمایشش میدی .
mahdy.asia
شنبه 01 تیر 1392, 15:55 عصر
میتونی فرمها رو اکتیو کنی
SetActiveWindow(Form1.Handle);
من با کمک کد شما نتونستم به جواب برسم
procedure TF_ParentMenu.ShowForm2(MyForm,CapForm: string);
var
FF : TForm;
FC : TFormClass;
iFound,i : integer ;
begin
FF := nil;
FC := TFormClass(findClass('T'+MyForm));
iFound := -1;
for i := 0 to Screen.FormCount -1 do
if Screen.Forms[i] is FC then
iFound := i;
FF := FC.Create(Application);
if iFound > -1 then
begin
SetActiveWindow(FF.Handle);
exit ;
end;
if (FF<>nil) then
begin
FF.Position := poDesigned;
ShowForm(ff,K_Form);
end;
end;
mahdy.asia
شنبه 01 تیر 1392, 16:10 عصر
از دوستان عزیزم که راهنمایی کردند متشکرم من مشکل رو با کد زیر بر طرف کردم
procedure TF_ParentMenu.ShowForm2(MyForm,CapForm: string);
var
FF : TForm;
FC : TFormClass;
iFound,i : integer ;
begin
FF := nil;
FC := TFormClass(findClass('T'+MyForm));
iFound := -1;
for i := 0 to Screen.FormCount -1 do
if Screen.Forms[i] is FC then
iFound := i;
if iFound > -1 then
begin
FF := Screen.Forms[iFound] ;
end
else
FF := FC.Create(Application);
if (FF<>nil) then
begin
FF.Position := poDesigned;
ShowForm(ff,K_Form);
end;
end;
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.