delphi - Некорректное отображение сообщения об ошибке (MaskEdit в IBDataSet)


0

У меня есть Dataset, в котором есть поле Field1, которое имеет свойство EditMask = 00000000;1;_ (важно, чтобы пользователь именно видел количество необходимых символов).
При вводе не всего количества чисел, формируется исключение класса EDBEditError.
Я пытаюсь его поймать:

procedure TForm2.FormCreate(Sender: TObject); 
begin 
  Application.OnException := AppException; 
end; 

procedure TForm2.AppException(Sender: TObject; E: Exception); 
begin 
  if E is EDBEditError then 
    Вывод сообщения; 
end; 

Оно ловится, выводится сообщение – все нормально.
Но т.к. это форма 2, то после выдачи сообщения, она прячется.
Вопросы:

  1. Как сделать так, чтобы она не пряталась? (Form2.Show - не помогает).
  2. Насколько корректна такая обработка исключения?

Заранее спасибо за ответ.

на счет формы разобрался. Ответьте пожалуйста на второй вопрос. — 22 янв 20182018-01-22 03:57:08.000000
"т.к. это форма 2, то после выдачи сообщения, она прячется." - ?? — 22 янв 20182018-01-22 01:42:44.000000

1 ответ

0

Отвечаю на второй вопрос.

Такая обработка исключения некорректна. Представьте, что каждая форма будет так делать. Что из этого получится?

Возможно, Вам подойдет TDataSet.OnEditError:

http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/delphivclwin32/DB_TDataSet_OnEditError.html

  • 22 янв 2018 2018-01-22 13:51:21