PDA

View Full Version : مشکل با MDI Application



Silent Ninja
جمعه 27 اردیبهشت 1387, 22:12 عصر
سلام

من زیاد تو دلفی MDI کار نکردم حالا برای یه کار بهش احتیاج پیدا کردم اما یه مشکلی هست :

من میخوام اول یه فرم Logon معمولی بیاد بعد از Login کردن بره توی فرم MDI اما وقتی این کار رو میکنم Error میده فکر کردم مشکل از کارم هست اما از کسی که پرسیدم گفتن که نه درسته روش شاید دلفی ایرادی داره ! اما هرکارش کردم نشد ببینید من اینجوری فرم رو MDI میکنم :

اول یه فرم معمولی میذارم برای فرم Login
بعد یه فرم دیگه میذارم Form Style اش رو MDIForm میکنم بعد فرم های دیگه رو هم MDIChild :افسرده: حالا نمیدونم درسته یا نه

و یه مشکل دیگه :

من نمیخوام وقتی فرم MDI ام Load مشه تمام فرم های Child رو نشون بده اما متاسفانه اینجوری میشه و وقتی فرم MDI اصلی Load میشه تمام فرم های Child باز میشه !!! و فرم ها رو هم نمیشه Hide کرد Error میده ! :گریه:

ممنون میشم کمک کنید

Mahyaa
جمعه 27 اردیبهشت 1387, 23:22 عصر
Error میده یعنی چی ؟ ننوشتی چه Error ی ! AV میده ؟
احتمالا همه فرمها رو AutoCreate گذاشتی . اگه نمونه کدت رو بتونی بذاری ، بهتر میشه گفت .

موفق باشی

Amir_Safideh
جمعه 27 اردیبهشت 1387, 23:32 عصر
من نمیخوام وقتی فرم MDI ام Load مشه تمام فرم های Child رو نشون بده اما متاسفانه اینجوری میشه و وقتی فرم MDI اصلی Load میشه تمام فرم های Child باز میشه !!! و فرم ها رو هم نمیشه Hide کرد Error میده ! :گریه:

ممنون میشم کمک کنید
برای حل این مشکل شما باید فرمهای پروژه رو که به حالت Child ایجاد شده رو از حالت Auto Create به Available Forms تغییر بدید . برای اینکار شما از منوی Projects گزینه Options رو انتخاب کنید و در این فرم شما میتونید فرمهای Child رو به قسمت Available Forms ببرید تا با اجرای پروژه این فرمها به صورت خودکار ساخته نشوند .
-------------
موفق باشید .

Vahid_moghaddam
شنبه 28 اردیبهشت 1387, 11:59 صبح
1- فرم login رو از کجا صدا می زنید؟
2- فرم ها رو از حالت autocreate خارج کنید. برای نمایش فرمها از




Application.CreateForm(TSomeForm,SomeForm);


استفاده کنید و در رویداد onClose فرمها بنویسید:



action:=cafree;

Silent Ninja
شنبه 28 اردیبهشت 1387, 18:28 عصر
حالا اون مشکل باز نشدن فرمهای Child حل شد اما اون یکی نه :

یه پروژه نمونه میذارم ببینید خودتون - الان مشکل توی وقتی هست که فرم Child رو میخوام باز کنم ! خودتون ببینید :

Mahyaa
شنبه 28 اردیبهشت 1387, 20:16 عصر
تنطیم کن که فرم اصلی همون فرمی باشه که MDIFORM قرار دادی . توی مثالی که گداشتی میشه Form2
فرم لاگین (Form1) رو توی سورس خود پروژه (dpr) مدیریت کن که باید AutoCreate هم باشه

برای نوشتن فرم لاگین اینجا (http://delphi.about.com/od/windowsshellapi/a/password_login.htm) رو ببین .

Silent Ninja
شنبه 28 اردیبهشت 1387, 21:03 عصر
یعنی نمیتونم یه فرم معمولی رو Mainform بذارم بعد از توی اون فرم MDI رو باز کنم ؟! :ناراحت:

Mahyaa
شنبه 28 اردیبهشت 1387, 23:43 عصر
تا جایی که من میدونم نمیشه .

چرا اصرار داری فرم دیگه ای رو فرم اصلی بذاری ؟
راه حلی رو که در پست قبلیم گفتم امتحان کردی ؟

Silent Ninja
پنج شنبه 02 خرداد 1387, 13:39 عصر
یعنی اصلا راهی نداره ؟!!! آخه مشکل من فقط فرم Login نیست ! اول برنامه یه Animation میاد بعدش میره به فرم Login بعدش میره به فرم اصلی ! :ناراحت:

B-Vedadian
پنج شنبه 02 خرداد 1387, 16:12 عصر
فرمهايي که اول به نمايش در ميآن، لازم نيست فرم اصلي باشن. فرمهايي که فقط اول اجراي برنامه بکار ميان رو از حالت AutoCreate در بيآر، بعدش تو پروژه قبل از اولين Application.CreateForm بصورت معمول فرمتو درست کن

frmLogin := TfrmLogin.Create(nil);

دست آخر هم بعد نمايش فرم مربوطه از بين ببرش

frmLogin.ّFree;

Silent Ninja
پنج شنبه 02 خرداد 1387, 17:23 عصر
فرمهايي که اول به نمايش در ميآن، لازم نيست فرم اصلي باشن. فرمهايي که فقط اول اجراي برنامه بکار ميان رو از حالت AutoCreate در بيآر، بعدش تو پروژه قبل از اولين Application.CreateForm بصورت معمول فرمتو درست کن
کد:
frmLogin := TfrmLogin.Create(nil);
دست آخر هم بعد نمايش فرم مربوطه از بين ببرش
کد:
frmLogin.ّFree;
آخه توی پروژه ای که یه فرم MDI باشه اصلا نمیشه فرم معمولی گذاشت حتی اگه Auto Create هم نباشه ! http://iraniansoft.ir/smileys/2.gif حالا یا من منظور شما رو دقیق نگرفتم یا شما منظور منو دقیق نگرفتین ! http://iraniansoft.ir/smileys/4.gif ممنون میشم اگه یه Sample بذارین http://iraniansoft.ir/smileys/8.gif http://iraniansoft.ir/smileys/8.gif http://iraniansoft.ir/smileys/8.gif

B-Vedadian
شنبه 04 خرداد 1387, 05:59 صبح
آخه توی پروژه ای که یه فرم MDI باشه اصلا نمیشه فرم معمولی گذاشت
کي اينو گفته! تو دلفي تا به يه فرم نگي MDI Child يا اصلي MDI باشه، بصورت پيش فرض معموليه. من بارها اين کار رو کردم...

Silent Ninja
یک شنبه 12 خرداد 1387, 16:11 عصر
کي اينو گفته! تو دلفي تا به يه فرم نگي MDI Child يا اصلي MDI باشه، بصورت پيش فرض معموليه. من بارها اين کار رو کردم...
ما که هرکار کردبم نشد !!! :ناراحت::ناراحت: ممنون میشم یه Sample بذاری :قلب:

B-Vedadian
دوشنبه 13 خرداد 1387, 04:01 صبح
ضميمه رو ببين...

Silent Ninja
دوشنبه 13 خرداد 1387, 20:38 عصر
ModalResult := mrOk;یه توضیح راجع به این میدی ؟ چیکار میکنه این ؟!! حتما باید اینجوری برم به فرم بعدی ؟

ممنون از کمکهاتون

B-Vedadian
سه شنبه 14 خرداد 1387, 16:09 عصر
به راهنماي دلفي مراجعه کني، راحتتر جواب ميگيري. جواب خلاصه اينه که کد بالا باعث ميشه اگه فرم بصورت Modal نمايش داده شده باشه، نمايشش تموم بشه. اين تنها راه نمايش يک فرم نيست، کارهاي زيادي ميشه کرد و علاوه بر اون اصلا نياز نيست که فرم معمولي بسته شه تا بشه فرم MDI رو نمايش بدي.