![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Подскажите как отловаить исключение [D6, WinXP]
Алексей Коптенков © (2002-10-31 13:33:00)На пустую форму киньте кнопку и MaskEdit, последний отредактируйте на ввод времени, скомпильте и запустите приложение. Введите в поле к примеру _4.__.4_ выскачит исключение EDBEditError.
Мне нужно поймать это исключение и вывести другой диалог.
Куда ловушку ставить даже и не знаю.
evgeg (2002-10-31 23:07:00) [1]отловаить-- шедевр.
Zemal (2002-10-31 18:24:00) [2]>> pusrg
Совершенно верно! Молодчик! Кстати, я тоже использую простой TEdit... согласен полностью... с маской ввода геморой :(. Я вообще предпочитаю писать свои компоненты... ну типа потомка TEdit с проверкой ввода каждого символа :)... так больше уверенности в содеяном :). Ещё раз спасибо за поправку. Удачи! :)
pusrg (2002-10-31 17:51:00) [3]To Zemal
Кстати переменную TmpTime можно не обьявлять :), если результат ф-ции StrToTime далее не используется.
компилятор спокойно схавает конструкцию
StrToTime(_Time);
Честно говоря, довольно "геморойный", этот компонент TMaskEdit :(
Я предпочитаю использовать обычный TEdit, и обрабатывать события OnKeyPress и OnExit с проверкой на ввод только нужных символов времени.
Алексей Коптенков (2002-10-31 17:02:00) [4]Большое спасибо
Zemal (2002-10-31 16:44:00) [5]P.S. Забыл сказать... объяви переменную TmpTime : TTime; (как в верхнем примере).
Zemal (2002-10-31 16:42:00) [6]try
TmpTime := StrToTime(EDBEdit1.Text);
except
on E:EDBEditError do
begin
... // действия при возникновении исключительной ситуации
ShowMessage("Возникло исключение: "+E.Message);
end;
end;
Поставь подобный код в событие типа OnEnter своего DBEdit-а... увидишь сам чего получится :).
REP (2002-10-31 15:03:00) [7]Если маска типа !90:00:00;1;_, то ты должен ввести все цифры, где стоят 0.
Замени все 0 на 9 - это означает, что можно вводить или не вводить цифру.
И отрабатывай по выходе из MaskEdit"a:
Function ValidTime(_Time:String):Boolean;
Var
tmp:TTime;
begin
Try
tmp:=StrToTime(_Time);
Result:=True;
Except
//ShowMessage("Не то время!!!");
Result:=False;
end;