Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Фреймы и правильная обработка событий


Автор: filldomen 2.1.2011, 22:19
Есть фрейм Frame1: TFrameDBGrid в котором содержится DBGrid, у которого есть событие DBGrid.OnColumnClick. В обработчик этого события я размещаю определенный код.
Есть второй фрейм Frame2: TFrameMoveDBGrid который содержит в себе первый.
Есть форма MyForm, которая содержит в себе второй фрейм.
Возникла проблема, а именно код который содержался в обработчике еще первого фрейма не срабатывает, вообще сам обработчик OnColumnClick первого фрейма не срабатывает.
Такое впечатление наследование перестает работать, но если же разместить обработчик OnColumnClick для DBGrid в самой форме, то он срабатывает
т.е. Fame1.DBGridColumnClick это обработчик OnColumnClick первого фрейма
Код

procedure TMyForm.Frame2DBGridColimnClick(Sender..)
begin

  inherited; //по логике inherited должен был бы вызывать Frame1.DBGridColumnClick, но он его не вызывает в чем проблема?
  //код который был написан в MyForm
  ...
end;

Автор: bems 3.1.2011, 00:19
Нет, по логике inherited означает метод объекта, в  котором он упомянут, то ест ьв данном случае TMyForm. Форма же не наследуется от фрейма.

Автор: Delphist 3.1.2011, 09:54
Цитата(bems @  3.1.2011,  01:19 Найти цитируемый пост)
Нет, по логике inherited означает метод объекта, в  котором он упомянут, то ест ьв данном случае TMyForm. Форма же не наследуется от фрейма. 

Встречался с подобной проблемой, это косяк Delphi. Обходил я его так:
Код

{Frame2}
procedure TFrameMoveDBGrid.Frame1DBGridColumnClick(Sender..)
begin
   //вызывает принудительно обработчик из Frame1
   Frame1.DBGridColumnClick(Sender..);
end;


Код

procedure TMyForm.Frame2DBGridColimnClick(Sender..)
begin
  
  //вызываем принудительно обработчик из Frame2
  Frame2.Frame1DBGridColumnClick(Sender..)
  
  //код который был написан в MyForm
  ...
end;

Автор: БелАмор 3.1.2011, 20:12
Посмотрите статью:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=665

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)