![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
||||
|
||||
|
Создаю свой класс на основе TComponent (constructor Create(AOwner: TComponent); virtual;) в конструктор нужно добавить еще один параметр
Код:
type TFB2File = class(TComponent) private FFileName: String; public constructor Create(AOwner: TComponent; const FileName: String); override; property FileName: String read FFileName; end; |
|
#2
|
|||
|
|||
|
Например так
Код:
type TFB2File = class(TComponent) private FFileName: String; public constructor CreateFromFile(AOwner: TComponent; const AFileName: String);overload; property FileName: String read FFileName; end; Код:
constructor TFB2File.CreateFromFile(AOwner: TComponent; const AFileName: String); begin inherited Create(AOwner); FFileName:=AFileName; end; Код:
constructor Create(AOwner: TComponent);override; |
| Этот пользователь сказал Спасибо icWasya за это полезное сообщение: | ||
Помидоркин (27.03.2015)
| ||
|
#3
|
||||
|
||||
|
Цитата:
В случае с перегрузкой, не обязательно inherited, достаточно вызвать перегруженный конструктор. |
|
#4
|
|||
|
|||
|
Цитата:
Так что вызывать его обязательно. |
|
#5
|
||||
|
||||
|
inherited передает управление в конструктор предка; в данном случае конструктор перегружен, второй перегруженный конструктор и есть предковый, так что inherited не обязателен.
Тем более, у тебя оверлоад, а не реинтродьюс; вот при реинтродьюсе нужен inherited. |
|
#6
|
||||
|
||||
|
Ничто не мешает из одного конструктора вызвать другой.
|
|
#7
|
||||
|
||||
|
так:
Код:
type
TZzzComponent = class(TComponent)
private
FParam: string;
public
property Param: string read FParam;
constructor Create(AOwner: TComponent; const AParam: string); reintroduce;
end;
...
{ TZzzComponent }
constructor TZzzComponent.Create(AOwner: TComponent; const AParam: string);
begin
inherited Create(AOwner);
FParam:=AParam;
end;использование: Код:
TZzzComponent.Create(Self, 'hello world'); |
| Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
Помидоркин (27.03.2015)
| ||
|
#8
|
|||
|
|||
|
Цитата:
Нам, а не подскажешь, с какой версии ввели reintroduce? |
|
#9
|
||||
|
||||
|
Цитата:
|
|
#10
|
||||
|
||||
|
с ходу не могу сказать. да и проверить сейчас только минимум на Delphi 7 есть возможность. старенькие версии (Delphi 4, 5, 6) дома на архивных болванках есть, но нужно время их найти, установить.
|