PDA

View Full Version : سوال: غیر فعال کردن فرم اول در صورت فعال بودن فرم دوم



soft-c
جمعه 05 شهریور 1389, 11:48 صبح
سلام.
یادمه در vb6 وقتی در فرم یک کلیک می کردیم تا فرم 2 را نشان بدهد یک کد داشت که وقتی آنرا اجرا می کردیم تا وقتی که فرم 2 فعال بود امکان دسترسی به فرم 1 را نداشتیم .
البته این به غیر از visible است .می خواستم بدانم در دلفی این کار چگونه است ؟
تشکر.

Mahmood_M
جمعه 05 شهریور 1389, 12:44 عصر
اگر منظورتون اینه که تا وقتی که فرم 2 نمایش داده میشه کاربر نتونه به فرم 1 دسترسی داشته باشه ، باید فرم 2 رو به صورت Modal نمایش بدید ، یعنی به صورت زیر :

Form2.ShowModal;

soft-c
جمعه 05 شهریور 1389, 12:58 عصر
اگر منظورتون اینه که تا وقتی که فرم 2 نمایش داده میشه کاربر نتونه به فرم 1 دسترسی داشته باشه ، باید فرم 2 رو به صورت Modal نمایش بدید ، یعنی به صورت زیر :

Form2.ShowModal;
سلام
برای اینکه وقتی به فرم بر می گردیم از چه کدی استفاده می کنید .
چون وقتی از کد بالا استفاده کردم جواب داد ولی وقتی به فرم اول بر می گردم همچنان فرم غیر قابل دسترس است .
تشکر

Delphi7_love
جمعه 05 شهریور 1389, 13:50 عصر
سلام
برای اینکه وقتی به فرم بر می گردیم از چه کدی استفاده می کنید .
چون وقتی از کد بالا استفاده کردم جواب داد ولی وقتی به فرم اول بر می گردم همچنان فرم غیر قابل دسترس است .
تشکر

برای برگشت به form1 باید از Close استفاده کنید

SAASTN
جمعه 05 شهریور 1389, 14:57 عصر
چون وقتی از کد بالا استفاده کردم جواب داد ولی وقتی به فرم اول بر می گردم همچنان فرم غیر قابل دسترس است .
چجوری برگشتید که این وضعیت ایجاد شد؟

برای برگشت به form1 باید از Close استفاده کنید
البته بهترش اینه که ModalResult رو برابر مقداری غیر صفر قرار بدیم. ShowModal در واقع یه تابع هست و مقدار برگشتی اون یه Integer و برابر ModalResult فرم هست. از طریق اون میشه فهمید کاربر توی دیالوگ چه تصمیمی گرفته.
باز کار قشنگتری که می شه کرد اینه که اصلا کد ننویسیم. کافی Property های ModalResult دکمه ها OK و Cancel فرم رو برابر mrOK و mrCancel قرار بدی. در اینصورت دیگه اصلا لازم نیست برای دکمه ها OnClick بنویسیم.
برای اینکه توی فرم اصلی هم بفهمیم توی دیالوگ (همون Form2) چه اتفاقی افتاده می نویسیم:
case Form2.ShowModal of
mrOK:
mrYes:
mrYesToAll:
mrNo:
mrCancel:
end;