Event - Delphi 2005

Вопросы стыковки визуальных компонент (DataControls, EhGrid, VirtualTreeView, DevExpress и т.п.) с данными из БД.

Модераторы: kdv, CyberMax

Ответить
bratslav
Сообщения: 5
Зарегистрирован: 26 апр 2010, 06:56

Event - Delphi 2005

Сообщение bratslav » 16 дек 2010, 12:43

Привет всем!

Использую FB2.1
На тригерах вешаю post_event 'RefreshDB';

На клиенте

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

procedure TfZakaz.IBEvents1EventAlert(Sender: TObject; EventName: string;
  EventCount: Integer; var CancelAlerts: Boolean);
begin
  try
//     ShowMessage('Поймал');

    BuildSQL(False); // Переоткрыть запрос
    if not IBEvents1.Registered then IBEvents1.RegisterEvents;
  except
  end;
end;

По умолчанию IBEvents1.Registered == False
При активации формы IBEvents1.RegisterEvents;


На клиенте Event ловится, но вешает программу везде кроме того клиента откуда событие генерируется (я знаю, что генерирует сервер:-))

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: Event - Delphi 2005

Сообщение hvlad » 16 дек 2010, 14:04

В обработчике событий нельзя выполнять запросы к БД

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Re: Event - Delphi 2005

Сообщение Dimitry Sibiryakov » 16 дек 2010, 14:42

В общем случае это зависит от того как написан компонент. Но в данном конкретном случае - руки всё равно надо отрывать.

bratslav
Сообщения: 5
Зарегистрирован: 26 апр 2010, 06:56

Re: Event - Delphi 2005

Сообщение bratslav » 17 дек 2010, 15:53

Не понял.
Мне руки отрывать? А в каком месте?

Или разработчику?
Тогда где взять нормальный компанент?

С уважением, Брацлавский Вячеслав.

Dimitry Sibiryakov
Заслуженный разработчик
Сообщения: 1436
Зарегистрирован: 15 сен 2005, 09:05

Re: Event - Delphi 2005

Сообщение Dimitry Sibiryakov » 18 дек 2010, 14:54

Тебе, тебе. И отрывать в месте их роста - у самой ж. Влад же чёрным по-русски сказал - не надо рефрешить датасеты по эвенту.

А нормальных алертеров в природе не существует. Для правильной работы с событиями надо код, использующий непосредственно API адаптировать к каждому конкретному приложению.

Ответить