PDA

View Full Version : غیر فعال کردن دکمه ی بستن(ضربدر) پیغام خطاها



hamid-nic
یک شنبه 23 اسفند 1388, 10:40 صبح
سلام دوستان
به چه شکلی می توان پیغام هایی که به کاربر نشان می دهیم ، دکمه ی بستن آن (ضربدر قرمز رنگ) را غیر فعال کنیم . که با این کار کاربر فقط از طریق دکمه های تعریف شده مثل OK یا No و . . . بتواند فرم خطا را ببندد برای نمایش هم من از MsgDlg استفاده می کنم . در ضمن از دلفی 7 استفاده می کنم .
ممنون .

حسین شهریاری
یک شنبه 23 اسفند 1388, 12:30 عصر
سلام

بعيد ميدونم بشه اين كارا كرد!
ولي خودتون ميتونيد يه فرم براي اين كار درست كنيد اينطوي بهتر هم هست.

موفق باشيد

vcldeveloper
یک شنبه 23 اسفند 1388, 13:15 عصر
وقتی اون دکمه Close کلیک میش، مقدار برگشتی از دایالوگ برابر با مقدار Cancel هست (idCancel یا mrCancel). پس با بررسی این مقدار می تونید متوجه بشید که آیا کاربر اون دکمه را کلیک کرده یا نه.

Felony
یک شنبه 23 اسفند 1388, 13:31 عصر
بعيد ميدونم بشه اين كارا كرد!
:چشمک:ای بابا هی میگید نمیشه ما هم میشینیم برای اثبات اینکه دلفی توانایی همه کار رو داره 1 ساعت با کدها ور میریم ، برای چند صدمین بار ، با دلفی کار نشد نداره :

داخل رویداد OnTimer یک تایمر با Interval پائین ( مثلا 100 ) کد زیر رو بنویسید :

var
Flag: UINT;
AppSysMenu: THandle;
begin
AppSysMenu:= FindWindow('#32770','Error');
AppSysMenu:=GetSystemMenu(AppSysMenu,False);
Flag:=MF_DISABLED;
EnableMenuItem(AppSysMenu,SC_CLOSE,Flag);
end;

حالا تو یک دکمه کد زیر رو برای نمایش یک MessageBox :

MessageBox(0,'','Error',0);

حالا برنامه رو اجرا کنید ... ، برای این کد رو داخل تایمر گزاشتیم که اگر کد رو قبل یا بعد از نمایش MessageBox بزاری کار نمیکنه چون برنامه منتظر پیغام بازگشتی از پنجره MessageBox میمونه و فریز میشه و در ضمن قبل از نمایش MessageBox پنجره ای نیست که هندلش رو بگیریم و بعد از نمایش هم که بسته شده و باز هم نمیشه هندلش رو گرفت ، پس مجبوریم در حین نمایش هندل رو به دست بیاریم و تنها کنترلی که در این زمان کار میکنه شئ Timer هست .

ولی در کل راه عقلانی تر همون بررسی مقدار بازگشتی یا طراحی فرم هست .

موفق باشید .