Не вызывается TCalendarDialog.OnClose !

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Роман1971
новенький
Сообщения: 69
Зарегистрирован: 30.05.2007 09:14:53

Не вызывается TCalendarDialog.OnClose !

Сообщение Роман1971 »

Не вызывается событие TCalendarDialog.OnClose.
Проблема как минимум в двух компонентах TCalendarDialog, TCalculatorDialog.
В чём причина непонятно, не вызывается также и TCalendarDialog.OnCanClose, TCalculatorDialog.OnClose, TCalculatorDialog.OnCanClose.

Проследил их "предков" вплоть до TCommonDialog, выдержки из кода:
Определение TCommonDialog в файле "..\lazarus\lcl\dialogs.pp",
методы Close, и DoClose определены как виртуальные, но нигде в потомках не видно переопределений (может я пропустил где-то...).
Определения методов в файле "..\lazarus\lcl\include\commondialog.inc ":

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

procedure TCommonDialog.Close;
begin
  DoClose;
  TWSCommonDialogClass(WidgetSetClass).DestroyHandle(Self);
  FHandle := 0;
end;

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

procedure TCommonDialog.DoClose;
begin
  if Assigned(FOnClose) then FOnClose(Self);
end;

Самое интересное, что многие диалоги являются, так или иначе, наследниками "TCommonDialog", например "TOpenDialog". Его предки "TFileDialog" и "TCommonDialog", но в "TOpenDialog" обработка события "OnClose" происходит нормально.

Как у остальных, кто-нибудь сталкивался с этой проблемой?
Что делать? Без этих событий использовать эти компоненты невозможно.
:!: :?:
Аватара пользователя
B4rr4cuda
энтузиаст
Сообщения: 693
Зарегистрирован: 28.12.2007 06:48:35

Сообщение B4rr4cuda »

а зачем события онклосе?

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

if xdialog.execute then
begin
//обработка полученных диалогом данных
end;
Ответить