Открыта ли форма?

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
santilaas
Сообщения: 51
Зарегистрирован: 27 авг 2005, 21:05

Открыта ли форма?

Сообщение santilaas » 31 мар 2007, 10:58

Привет всем!!!
СУБД - Fireburd 1.5.3, язык - Delphi, средство доступа - FIBPlus

Вопрос такой: с помощью компонента pFIBErrorHandler в DataModule стараюсь обработать все ошибки БД и на некоторые из них вывести свои сообщения.
НО!!! для 2-х форм (Form1, Form2) хочу сделать, чтобы для них выполнялся свой блок try ... except и выводились свои сообщения.
Т.е., другими словами, перед тем, как выполнять проверку того, какая ошибка произошла, проверить, произошла она в Form1 или Form2 и, если ни в одной из них обработать её по-своему.
Примечание: Form1 - форма подключения, которая закрывается до загрузки главной формы, Form2 - главная форма - не закрывается до окончания работы приложения. - притом здесь все гораздо сложнее - надо, чтобы свой блок try ... except выполнялся только при OnCreate главной формы, а на все остальные события выполнялся обработчик "onFIBErrorEvent".
Притом, где-то читал, что глобальные переменные вообще лучше не использовать.
Хотя для Form1 я при её закрытии писал Form1:= nil, а в обработчике "onFIBErrorEvent" писал

Код: Выделить всё

if Form1 = nil then
 тут пошли проверки на разного рода ошибки и мои сообщения
Но как в действительности правильно и особенно как быть с формой Form2 - подскажите, плз
Заранее спасибо!

stix-s
Заслуженный разработчик
Сообщения: 557
Зарегистрирован: 13 дек 2005, 11:52

Re: Открыта ли форма?

Сообщение stix-s » 07 апр 2007, 13:33

santilaas писал(а):Привет всем!!!
СУБД - Fireburd 1.5.3, язык - Delphi, средство доступа - FIBPlus

Притом, где-то читал, что глобальные переменные вообще лучше не использовать.
Хотя для Form1 я при её закрытии писал Form1:= nil, а в обработчике "onFIBErrorEvent" писал

Код: Выделить всё

if Form1 = nil then
 тут пошли проверки на разного рода ошибки и мои сообщения
Но как в действительности правильно и особенно как быть с формой Form2 - подскажите, плз
Заранее спасибо!
1 документацию по FIBPlus перечитать, даже на великом и могучем есть
2 если я не вру, то что мешает менять собственный обработчик исключений
например:

Код: Выделить всё

procedure TdmBase.ErrorHandlerFIBErrorEvent(Sender: TObject;
  ErrorValue: EFIBError; KindIBError: TKindIBError; var DoRaise: Boolean);
begin
 Check_SRV_Error(ErrorValue);
 DoRaise:=false;
end;

Ответить