MaskEdit, obsługa błędów

0

Mam w programie dużo pól MaskEdit z maską

00\.00\.0000;1;_

do wpisywania dat. Jak wiadomo gdy wpisana wartość nie pasuje do maski i próbujemy wyjść z pola pojawia się błąd "Invalid input...".

Chciałbym ten błąd przechwycić i dać tam coś po polsku bo starsze kobitki mnie męczą że nie rozumieją co do nich program mówi :-)

Jak do tego podejść?

0

wstaw na forme komponent ApplicationEvents i w zdarzeniu OnException daj:

procedure TForm1.ApplicationEvents1Exception(Sender: TObject; E: Exception);
begin
if e is EDBEditError
  then
    showmessage('Treść wiadomości')
  else
    MessageDlg(e.Message,mtError,[mbOk],0);
end;
0

Działa, dzięki.

A powiedz mi jeszcze jak przechwycić błąd konwersji daty np.

'2010-55-55' is not a valid date

można chyba przy pomocy EConvertError ale to złapie wszystkie błędy konwersji a ja chcę tylko te dotyczące dat.

0

try..except ?
mozesz tez przeciazyc strtodate() (napisac w swoim programie funkcje o tej samej nazwie tylko inaczej zachowujaca sie na blad):
przed implementation:

EDateConvertError = class(Exception);

w implementation:

function StrToDate(const S: string): TDateTime;
begin
  if not TryStrToDate(S, Result) then
   raise EDateConvertError.Create('blad konwersji bla bla bla');
end;
0

Prosciej obsluzyc OnKeyUp i OnChange Edita i nie pozwolic na bledne wpisanie czegokolwiek...

1 użytkowników online, w tym zalogowanych: 0, gości: 1