Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.07;
Скачать: [xml.tar.bz2];




Вниз

Обработка исключительной ситуации... 


MaXie   (2002-02-20 12:34) [0]

Пожалуйста подскажите, каким образом можно перехватывать сообщения о возникновении исключительной ситуации при работе с элементами класса TMaskEdit?

Как подавить появление сообщения об ошибке, выдаваемого в ответ на потерю фокуса одним из элементов класса TMaskEdit, когда текс, введенный в его поле, не соответствует его маске?



Pete   (2002-02-20 12:47) [1]

попробуй

try
.
.
.
except
.
.
end;



MaXie   (2002-02-20 13:59) [2]

Да, нет! Это все понятно!
Не понятно другое. Есть обработчик события:

procedure TForm1.MaskEdit2_KorSchetExit(Sender: TObject);
begin
try
B[2] := MaskEdit2_KorSchet.Text
except
on EAbort do MaskEdit2_KorSchet.SetFocus
end
end;

, т.е. значение вводимое в поле элемента MaskEdit2_KorSchet должно быть присвоено третьему элементу массива B[]. Исключительная ситуация возникает в момент выхода из поля элемента MaskEdit2_KorSchet в случае незавершенной операции ввода.
В качестве класса исключения выбран EAbort, обеспечивающий обработку любого типа исключений. Предполагается, что в случае возбуждения исключительной ситуации, фокус не покинет элемента ввода.
В теории должен, но на практике не работает. Вот и возникает вопрос: каким образом необходимо обработать исключение?



Набережных С.   (2002-02-20 18:00) [3]

Ты пытаешся обработать исключение в строке
B[2] := MaskEdit2_KorSchet.Text
Откуда оно здесь возмется, если B[2]- типа string? Исключение возникает раньше, до вызова обработчика OnExit. Посмотри исходники TMaskEdit.



MaXie   (2002-02-21 12:18) [4]

Верное замечание, и все же!!!
Каким образом в этом случае необходимо обработать исключение, чтобы перехватить появление окна с сообщением об ошибке?
Как построить алгоритм обработки исключительной ситуации try-except-end?
Подскажите пожалуйста, ведь наверняка решение этой задачи более чем тривиально...



DieHard   (2002-02-21 12:26) [5]

>В качестве класса исключения выбран EAbort, обеспечивающий обработку любого типа исключений.
Это неверно. Базовый класс для исключений - Exception



Набережных С.   (2002-02-21 16:16) [6]

Сделай свой компонент, перекрыв у него ValidateError(или ValidateEdit - по вкусу).




Форум: "Основная";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.03.07;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.014 c
1-19187           Gayrus                2002-02-18 03:15  2002.03.07  
Строки


1-19157           vitnt2000             2002-02-21 12:14  2002.03.07  
Приложение без формы


1-19252           Марина                2002-02-20 09:44  2002.03.07  
FastReport


1-19200           MK                    2002-02-16 18:28  2002.03.07  
Форма на весь экран


7-19365           Drv                   2001-12-02 14:53  2002.03.07  
Реестр