PDA

View Full Version : سوال: اجراي يك پروسيجر بلافاصله بعد از اجراي Load فرم



rezamahdizadeh
دوشنبه 17 تیر 1387, 15:17 عصر
آيا راهي وجود دارد كه يك procedure بلافاصله بعد از اجراي كامل(در واقع بعد از اجراي Show فرم و خروج از آن) اجرا گردد؟

Mahyaa
دوشنبه 17 تیر 1387, 17:18 عصر
با OnActivate کارت راه نمیفته ؟
فقط اگر فرم به صورت Modalless نمایش داده شده باشه هر بار که روی فرم فوکوس بشه ، این رویداد اتفاق میفته و کدش اجرا میشه .

Hsimple11
دوشنبه 17 تیر 1387, 20:38 عصر
منظورتان بعد از بسته شدن فرم است یا درهنگام آن؟ اگر در هنگام آن می توانید از رویداد Onclose فرم استفاده کنید ولی نمیتوانید پروسیجری را از درون یونیتی اجرا کنید که بسته شده است.

rezamahdizadeh
سه شنبه 18 تیر 1387, 07:37 صبح
فرض كنيد دو تا فرم داريم
در فرم اول مثلا به نام Form1 يك دكمه گذاشته ايم كه در روال Click آن كد زير نوشته ايم:
var f: TForm2
begin
f:=TForm2.Create(Self);//Create Form
f.Top:=45;// Set Top
f.Left:=65;// Set Left
f.Showmodal(); // Show

وقتي كه FormStyle فرم دوم fsMDIChild باشد درست كار نمي كند. مشگل اينست كه با اجراي Create كل رويداد FormShow فرم دوم را اجرا مي كند و بقيه كدهاي تنظيم فرم كه در اينجا f.Top:=45 و f.Left:=65 ديگر بي اثر است.

Mahyaa
سه شنبه 18 تیر 1387, 08:37 صبح
فرض كنيد دو تا فرم داريم
در فرم اول مثلا به نام Form1 يك دكمه گذاشته ايم كه در روال Click آن كد زير نوشته ايم:
var f: TForm2
begin
f:=TForm2.Create(Self);//Create Form
f.Top:=45;// Set Top
f.Left:=65;// Set Left
f.Showmodal(); // Show

وقتي كه FormStyle فرم دوم fsMDIChild باشد درست كار نمي كند. مشگل اينست كه با اجراي Create كل رويداد FormShow فرم دوم را اجرا مي كند و بقيه كدهاي تنظيم فرم كه در اينجا f.Top:=45 و f.Left:=65 ديگر بي اثر است.

ربط این پست رو پست قبلیتون نفهمیدم ولی

در منوی Project > Options فرم Form2 رو از لیست Auto Create Forms حذف کنید . (این لیست در تب Forms قرار داره )
برای نوشتن یک MDI Apllication تالار دلفی رو جستجو کنید ، نمونه های خوبی پیدا میکنید چون بارها راجع به این موضوع صحبت شده و اکثرا به جواب هم رسیده .

موفق باشید .

Hsimple11
سه شنبه 18 تیر 1387, 12:21 عصر
همانطور که گقته شد ساخت Object در Runtime زمانی معنی پیدا میکند که آن را AutoCreate نکنید. در واقع فرم دوم شما در زمان کامپایل ساخته میشود و باید از این اتفاق با حذف نام آن از لیست AutoCreate جلوگیری کنید و خود آن را بسازید.
FormStyle فرم اصلی خود را بایستی برابر MDIForm قرار دهید.

rezamahdizadeh
سه شنبه 18 تیر 1387, 13:05 عصر
فرم دوم بصورت Auto Create نيست

Hsimple11
سه شنبه 18 تیر 1387, 15:57 عصر
فرم دوم بصورت Auto Create نيست

FormStyle فرم اصلی خود را بایستی برابر MDIForm قرار دهید. و فرم دوم را fsMDIChild.
Top و Left شما بر اساس MDIForm شما تنظیم میشوند. در مورد برنامه های MDI جستجو کنید.