PDA

View Full Version : غیر فعال شدن فرم اصلی



rmb_ali
شنبه 12 آبان 1386, 10:44 صبح
دوستان درون پروژه من وقتی میخوام یه فرم دیگه رو درون onactive فرم اصلی showmodal کنم بعد از اینکه فرم دوم رو clos میکنم فرم اصلی فعال نمیشه خیلی هم ور رفتم نمیشه البته بگم که این موضوع یهو اتفاق افتاد و قبلش هیچ مشکلی نداشت

hossein taghi zadeh
شنبه 12 آبان 1386, 10:56 صبح
با سلام


وقتی میخوام یه فرم دیگه رو درون OnActivate فرم اصلی showmodal کنم بعد از اینکه فرم دوم رو close میکنم فرم اصلی فعال نمیش
مطمئن هستید که فرم دوم را Close می کنید نه Hide?

Bahmany
شنبه 12 آبان 1386, 10:59 صبح
بهتره از Event دیگری برای نشان دادن پیغامتان استفاده کنید مثل OnShow

rmb_ali
شنبه 12 آبان 1386, 12:30 عصر
اینکارو کردم ولی مشکل به قوت خودش باقیه یعنی کد ها رو تو onshow نوشتم ولی مشکل حل نشد
حتما هم فرم رو clos میکنم

hossein taghi zadeh
شنبه 12 آبان 1386, 13:00 عصر
با سلام

بهتره برای حل شدن مشکلتون قسمت‌هایی از کدتون رو که مربوط به این دو فرم میشه رو ضمیمه کنید یا توضیحات بیشتری بدید تا بشه راهنمایی کرد.
در ضمن رویدادهای OnClose و OnCloseQuery و OnShow و OnActivate (در صورت وجود) مربوط به فرم دومتان را بررسی کنید.

AlirezaBahredar
شنبه 12 آبان 1386, 13:17 عصر
سلام...
من دقیقا به همچین مشکلی برخوردم....البته توی دلفی 7.نمی دونم شاید چیزی که بگم یکم عجیب باشه یا واقعا یک باگ دلفی7 باشه؟!!!
توی یک پروژه من ناچار بودم که با تعدادی از فرم هاWizard ایجاد کنم.این ویزارد 7 مرحله داشت روزی که من داشتم فرمهای ویزارد رو ایجاد می کردم تنها تونستم 3 فرم از 7 فرم رو ایجاد کنم.فردای اون روز زمانی که فرم 4 رو ایجاد کردم و برنامه رو تست کردم دیدم درست کار نمی کنه در صورتی که تا روز قبل و قبل از اضافه نمودن فرم 4 برنامه با 3 فرم کاملا درست کار می کرد.بعد از کلی ور رفتن با برنامه به این نتیجه رسیدم که بایستی کلیه فرم های ویزارد رو یکباره ایجاد کرد بدون آنکه پروژه را ببندید و ثانیا سعی کنید ترتیب فرمها نیز پشت سر هم بشه نه اینکه در یا پروژه ویزاردی Form1 به Form3 و Form 5 به Form2 بره.....
همونجوری که گفتم مطالبه من فقط وفقط جنبه تجربی داره و هیچ استدلالی منطقی واسه اوناندارم.
موفق باشی.

hr110
شنبه 12 آبان 1386, 14:22 عصر
گاهی اوقات استفاده از یک تایمر میتونه مشکلات این چنینی رو حل کنه ، چرا که گاهاً استفاده از OnShow, OnCreate, OnActive و ... ممیتونه مشکل سازه:



procedure Timer1OnTimer(...)
begin
Timer1.Enabled:=False;
Application.CreateForm(TForm1,Form1);
Form1.Showmodal;
Form1.Free
end;

Mahmood_M
شنبه 12 آبان 1386, 14:41 عصر
راه بهتر برای ساخت ویزارد استفاده از PageControl هست ...
در این صورت فقط یک فرم برای ویزارد در نظر میگیرید ، توی فرم مربوط به ویزارد یک PageControl‌ قرار بدید و به تعداد صفحات مورد نیاز ، صفحه ایجاد کنید ( به جای استفاده از فرم برای هر صفحه از ویزارد ) بعد میتونید برای هر صفحه مثلا یک نام انتخاب کنید ( خصوصیت Name هر Page از PageControl ) و بعد با استفاده از نام هر صفحه بین اونها حرکت کنید ...

این کار ساده تر ، منظم تر و منطقی تر به نظر میرسه ...

موفق باشید ...

Hamid_PaK
شنبه 12 آبان 1386, 17:52 عصر
اگه اول درست کار می کرده و حالا نه ! باید ببینی قبل از showmodal فرم چه کدهایی اجرا می شن و یا در پایان بستن فرم دوم !!!

یا حق ...

vcldeveloper
یک شنبه 13 آبان 1386, 01:17 صبح
راه بهتر برای ساخت ویزارد استفاده از PageControl هست ...تاپیک درباره ساخت Wizard نیست. با این حال، راه درست و منطقی ساخت Wizard استفاده از Frame هست، نه PageControl. در صورت استفاده از PageControl، تمام صفحات و کنترلهایشان یک جا ساخته میشند، کد مربوط به صفحات هم در یک یونیت نوشته میشه. اما Frame را فقط زمانی که نمایش داده میشه میسازیم و وقتی نمایش داده نمیشه، میشه به راحتی آزادش کرد . کد مربوط به هر صفحه هم در یونیت های مجزا نوشته میشه.

rmb_ali
یک شنبه 13 آبان 1386, 08:15 صبح
پس از بررسی هایی که کردم و تمام کدهای داخل onactive رو disable کردم دیدم که این مشکل بازم وجود داره یعنی فرم اصلی روی صفحه میاد ولی غیر فعاله یعنی تمیتونی با موس روش کلیک کنی و وقتی اینکارو میکنی ویندوز یه صدایی میده و خلاصه نه با کی برد و نه با موس نمیشه رو فرم کلیک کرد
ولی با یه اقدام عملیاتی دیدم که خصوصیت Enable فرم false شده کلی حالم گرفته شد و یاد این جک افتادم (البته منظورمن خودم هستم دوستان به شما بی ادبی نمیکنم)
یه روز دوتا دانشجوی پزشکی یه آدم رو میبینند که داره گشاد گشاد راه میره اولی به دومی میگه من فکر کنم که اون بواسیر داره . دومی میگه من فکر کنم مشکل مفصل زانوی مادر زادی داره خلاصه باهم شرط میبندن و میرن پیش یارو از خودش بپرسن یارو میگه دوستان هر سه مون اشتباه کردیم من فکر میکردم گوزه نگو .....

Hamid_PaK
یک شنبه 13 آبان 1386, 08:39 صبح
تبریک می گم که حداقل مشکل حل شد !!!

یا حق ...