Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.01.06;
Скачать: CL | DM;

Вниз

Пару вопросов про ооп   Найти похожие ветки 

 
Максим_В.   (2007-12-08 17:05) [0]

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. Это делается так?


 
MBo ©   (2007-12-08 17:15) [1]

constructor Create(Owner: TComponent); override;

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


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


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

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


 
MBo ©   (2007-12-08 17:30) [3]

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


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

Возможно я уже чушь несу. Приведу пример:
У меня есть у родителя свойство - 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;



Страницы: 1 вся ветка

Текущий архив: 2008.01.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.009 c
2-1197035679
copron
2007-12-07 16:54
2008.01.06
шрифты


15-1196611257
begin...end
2007-12-02 19:00
2008.01.06
Шоу двойников...


2-1197015502
Zheksik
2007-12-07 11:18
2008.01.06
Можно ли разукрашивать StringGrid в событии отличном от DrawCell?


2-1197206756
fog
2007-12-09 16:25
2008.01.06
Shell Controls


2-1197137950
unknowing
2007-12-08 21:19
2008.01.06
Указатели