Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Пару вопросов про ооп [D7, XP, 2003]


Максим_В. ©   (2007-12-08 17:05:00) 

1. У меня есть класс унаследованный от другого класса (другой в свою очередь унаследован от TComponent). В моем классе есть конструктор constructor Create; virtual;, каждый раз получаю предупреждение: Method 'Create' hides virtual method of base type '...'.
Этого можно избежать как-то? Я понял, что единственное решение - это переименовать конструктор в моем классе. Это единственное решение?

2. Про этот же класс, унаследованный. У родителя есть event: property OnOneEvent: TOnOneEvent read  FOnOneEvent;
Как в наследнике обработать этот event? Я делал в наследнике процедуру ( _OnOneEvent -- TOnOneEvent) и в конструкторе писал OnOneEvent := _OnOneEvent. Это делается так?


Максим_В.   (2007-12-08 17:39:00) [1]

Возможно я уже чушь несу. Приведу пример:
У меня есть у родителя свойство - TOnOne = procedure(Sender: TObject; Data1: string; Data2: Integer);. А у моего унаследованного класса есть свое свойство - TOnTwo = procedure(Sender: TObject; Data1: string; Data2: Boolean);. Я хочу в своем классе обработать событие родителя TOnOne, и возбудить вызвать вместо него в своем классе TOnTwo.

TClass1 = class(TClass0)
 constructor Create;
 procedure _OnOne(Sender: TObject; Data1: string; Data2: Integer)
 property OnTwo: TOnTwo read write
end;

constructor TClass1.Create;
begin
 inherited;
 OnOne := _OnOne;
end;

procedure _OnOne(Sender: TObject; Data1: string; Data2: Integer)
begin
 if Assigned(FOnTwo) then
   FOnTwo(Self, Data1 + IntToStr(Data2), False);
end;


MBo   (2007-12-08 17:30:00) [2]

непонятно, для чего это нужно
событие обычно вызывается из динамического метода (например, метод Click), вот его можно перекрыть и добавить нужный код


Максим_В.   (2007-12-08 17:20:00) [3]


> событие обрабатывается не в самом компоненте, а в другом
> - например, событие OnClick кнопки обрабатывается формой,
>  если задать обработчик

Так а я хочу обработать событие родителя в своем классе. Я пример привел, он походит на пример OnClick и формы, но нормально ли это?


MBo   (2007-12-08 17:15:00) [4]

constructor Create(Owner: TComponent); override;

>Как в наследнике обработать этот event
событие обрабатывается не в самом компоненте, а в другом - например, событие OnClick кнопки обрабатывается формой, если задать обработчик


Наверх

Титульная страница Поиск, карта сайта Написать письмо