Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.01.06;
Скачать: [xml.tar.bz2];

Вниз

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

 
Максим_В.   (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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.004 c
15-1196686111
@!!ex
2007-12-03 15:48
2008.01.06
ATX матери не подходит питание от ATX БП.


6-1177413145
DVM
2007-04-24 15:12
2008.01.06
Почему начинает подтормаживать сервер.


15-1196722280
Jolik
2007-12-04 01:51
2008.01.06
Не встечал ли кто оффлайн браузеров м мохранением в mht формате.


9-1164923413
Gigatrop
2006-12-01 00:50
2008.01.06
Проблемы с координатами


3-1188556394
Yurikon
2007-08-31 14:33
2008.01.06
Логическое поле в grid`е





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский