ورود

View Full Version : کنترل خطا



f
دوشنبه 22 تیر 1388, 12:32 عصر
سلام
من در فرمم یک maskedit دارم که تاریخ را دریافت میکنه. حالا اگر کاربر تاریخ را صحیح وارد نکنه error میده.
برای اینکه بتوانم این خطا را در زمان اجرا کنترل کنم و به کاربر اطلاع دهم که تاریخ را اشتباه وارد کرده از کد زیر استفاده کردم. ولی پیغام من را در نظر نگرفته و error خودش را نمایش میدهد. کسی میتواند به من کمک کند؟؟؟



procedure Tfrm_sanad_hesabdari.e_sanad_dateKeyDown(Sender: TObject;
var Key: Word; Shift: TShiftState);
begin
Try
if key=13 then
e_sanad_no.SetFocus;
except on EDBEditError do
ShowMessage('hello');
end;
end;

AliReza Vafakhah
دوشنبه 22 تیر 1388, 14:37 عصر
از شی ApplicationEvent استفاده کن و در رویداد Exception این کد رو بنویس



procedure TFrmMain.ApplicationEvents1Exception(Sender: TObject; E: Exception);
begin
if (e.Message ='Invalid input value. Use escape key to abandon changes') then
Application.MessageBox('.استفاده کنيد "ESC" در صورتي که نمي خواهيد مقداري وارد شود از کليد ',
'Warning', MB_OK + MB_ICONWARNING);
end;

البته من از متن پیغام خطا استفاده کردم اگر ID رو بگیری خیلی بهتره

راستی من با MaskEdit شرکت DevExpress استفاده کردم

f
سه شنبه 13 مرداد 1388, 15:31 عصر
از شی ApplicationEvent استفاده کن و در رویداد Exception این کد رو بنویس



procedure TFrmMain.ApplicationEvents1Exception(Sender: TObject; E: Exception);
begin
if (e.Message ='Invalid input value. Use escape key to abandon changes') then
Application.MessageBox('.استفاده کنيد "ESC" در صورتي که نمي خواهيد مقداري وارد شود از کليد ',
'Warning', MB_OK + MB_ICONWARNING);
end;

البته من از متن پیغام خطا استفاده کردم اگر ID رو بگیری خیلی بهتره

راستی من با MaskEdit شرکت DevExpress استفاده کردم



سلام
از این روش هم استفاده کردم ولی اثری نداره همچنان پیغام خطای خود دلفی را نمیش میده.ضمنا خطایی که .(maskedit خود دلفی)نمایش میده مثل همینه که شما نوشتید فرقی نمیکنه.
لطفا کمک کنید که بتونم این خطا را کنترل کنم، خیلی مهمه!!!

vcldeveloper
سه شنبه 13 مرداد 1388, 18:18 عصر
اثری نداره همچنان پیغام خطای خود دلفی را نمیش میده.
تا زمانی که برنامه در داخل دیباگر دلفی اجرا میشه، دیباگر دلفی همه خطاهای رخ داده را به برنامه نویس نشان میده تا چیزی از دستش در نره. اما زمانی که برنامه خارج از دیباگر اجرا میشه، فقط اون خطاهایی که شما هندل نکردید نمایش داده میشند.
برای اجرای برنامه بدون دیباگر باید یا برنامه را خارج از محیط دلفی اجرا کنید، یا از منوی Run گزینه Run without debugger را اجرا کنید.

سيد مجتبي هاشمي
چهارشنبه 14 مرداد 1388, 12:29 عصر
به جای ماسک ادیت میتونید از کامپوننت تقویم شمسی که یه قسمت شبیه ماسک ادیت داره استفاده کنید. توی سایت عبارت "تقویم شمسی" رو جستجو کنید.

K.Mohammadreza
چهارشنبه 14 مرداد 1388, 21:14 عصر
کد زير را امتحان کن
البته شما نبايد کد خود را در رويداد KeyDown بنويسيد بلکه بايد در رويداد KeyPress بررسي صحت ارقام را انجام دهيد و در رويدا OnExit بررسي صحت تاريخ مثال



procedure TfrmFDate.edtWDDKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
Key := #0;
Perform(WM_NEXTDLGCTL, 0, 0);
end;
if not (Key in ['0'..'9', #8]) then
Key := #0;
end;



جهت بدست گرفتن کنترل پيغامها نيز کد زير فکر کنم مناسب باشه



try
//کدهاي بررسي کننده تاريخ
except
on e: Exception do
begin
MessageDlg(, 'خطایی در عملکرد برنامه بوجود آمده است', mtError,
[mbOk]);
//other code end;
end;