PDA

View Full Version : ساختن فرم بدون والد



Hamid_PaK
یک شنبه 06 مرداد 1387, 22:31 عصر
سلام دوستان.
من نیاز دارم که فرمی رو در برنامه ام بسازم که هنگامی که این فرم به نمایش در خواهد آمد فرم اصلی برنامه باید مخفی باشد.
ولی متاسفانه هنگامی که فرم ساخته میشود حتی اگر فرم اصلی را مخفی کرده باشیم به نمایش در خواهد آمد !!!

دوستان راهی برای حل این مشکل دارن ؟؟؟

با تشکر، یا حق ...

mms_4004
یک شنبه 06 مرداد 1387, 22:45 عصر
لطفاً بیشتر توضیح بدید تا بتونن دوستان درست شما رو راهنمایی کنن

mms_4004
یک شنبه 06 مرداد 1387, 22:48 عصر
اگه این چیزی که شما گفتید من ازش فهمیدم آیا اینه که ؟؟؟

من خودم یه فرم اصلی داشتم اما هنگام اجرا نمی خواستم نمایش داده بشه می خواستم فرم دیگری برای چک اعتبار باز بشه و بعد از اون فرم اصلیم نمایش داده بشه

آیا منظورتون اینطوری است؟؟

Hsimple11
دوشنبه 07 مرداد 1387, 01:22 صبح
من نیاز دارم که فرمی رو در برنامه ام بسازم که هنگامی که این فرم به نمایش در خواهد آمد فرم اصلی برنامه باید مخفی باشد.

این دو لینک را ببینید :

1 (http://delphi.about.com/od/delphitips2008/qt/no_main_form.htm)
2 (http://en.allexperts.com/q/Delphi-1595/Top-Main-form-Hidden.htm)

Hamid_PaK
دوشنبه 07 مرداد 1387, 05:31 صبح
این لینکها چیزی که من گفتم نبود!
من فرم اصلی خودم رو دارم و تنها نیاز دارم که مخفی باشه و هیچ مشکلی هم نداره ولی هنگامی که مخفی هست اگر فرم جدیدی بسازم و نمایش بدم فرم اصلی برنامه هم ظاهر میشه که نباید بشه.
چیزی که میخوام باید مثل فرمهای Toolwindow که یاهو هنگام Online و Offline شدن یه کاربر نشون می ده باشه.

یا حق ...

vcldeveloper
دوشنبه 07 مرداد 1387, 08:42 صبح
چیزی که میخوام باید مثل فرمهای Toolwindow که یاهو هنگام Online و Offline شدن یه کاربر نشون می ده باشه.
توی مجموعه JEDI کامپوننتی برای این کار هست که امکان نمایش پیام در یک پنجره کوچک در پایین صفحه نمایش را فراهم میکنه (مثل همون پنجره یاهو مسنجر)، از طرفی برای بستن آن هم افکت هایی مثل Fade شدن یا Slide ارائه میکنه. فکر کنم اون کامپوننت برای کار شما مناسب باشه. اگر هم خودتون خواستید بنویسید، حداقل می تونید سورسش را ببینید.

Hamid_PaK
دوشنبه 07 مرداد 1387, 09:41 صبح
حاج علی مطمئنی که وقتی فرم اصلی مخفی باشه در هنگام استفاده از این کامپوننت فرم اصلی نمایش داده نمیشه ؟؟؟
اسم کامپوننت رو هم بگو.

یا حق ...

vcldeveloper
دوشنبه 07 مرداد 1387, 10:35 صبح
مطمئنی که وقتی فرم اصلی مخفی باشه در هنگام استفاده از این کامپوننت فرم اصلی نمایش داده نمیشه ؟
بله.


اسم کامپوننت رو هم بگو.
JvDesktopAlert

این هم یک Screenshot از آن:
20997

Hamid_PaK
دوشنبه 07 مرداد 1387, 11:47 صبح
اصل فرم از کلاس TCommonDialog در یونت Dialogs.pas خود دلفی ساخته شده.

با تشکر یا حق ...

Hamid_PaK
دوشنبه 07 مرداد 1387, 19:51 عصر
حاج علی اینکه بازم فرم اصلی رو نمایش می ده حاجی !!!!
زمانی که فرم DesktopAlert نمایش داده میشه توی Taskbar هدر اصلی Application دیده میشه.
کسی نظری نداره ؟
پ.ن: تشکر از اینکه با JEDI آشنام کردی حاجی.

یا حق ...

vcldeveloper
دوشنبه 07 مرداد 1387, 23:33 عصر
زمانی که فرم DesktopAlert نمایش داده میشه توی Taskbar هدر اصلی Application دیده میشه.
فرم اصلی را با استفاده از Application.ShowMainForm := False مخفی کردید، یا با روش دیگه ایی؟

Mahyaa
دوشنبه 07 مرداد 1387, 23:46 عصر
من معمولا برای این کار، فرم دیتا ماژول رو فرم اصلی میذارم و در رویداد OnCreate دیتاماژول، فرمی رو که میخوام اول نمایش داده بشه، نمایش میدم و بعد از بسته شدن اون، فرمی رو که واقعا فرم اصلی برنامه است ShowModal میکنم.

Hamid_PaK
سه شنبه 08 مرداد 1387, 14:40 عصر
حاج علی جواب نمی ده چون من باید فرم اصلی رو بسازم و در بعضی اوقات که توی TRAY کمینه شد این فرم دوم رو نمایش بدم واسه همین جواب نمیده!
ولی مشکل رو خیلی ساده تر حل کردم با استفاده از override روال CreateParams فرم دوم، والد فرم رو Desktop کردم و مشکل حل شد.
منبع delphi.about.com

یا حق ...