Форум: "Основная";
Текущий архив: 2003.11.20;
Скачать: [xml.tar.bz2];
ВнизМножественное порождение классов Найти похожие ветки
← →
mc_duck (2003-11-09 18:16) [0]Можно ли как -нибудь породить класс от двух родительских,конкретно
TPaintBox И TCollectionItem?
← →
mc_duck (2003-11-09 18:38) [1]Или никак?
← →
Anatoly Podgoretsky (2003-11-09 18:51) [2]Или
← →
mc_duck (2003-11-09 19:02) [3]Ну а если обязательно нужно создать класс,имеющий свойства 2 классов, то что,тупик? А с помощью интерфейса как-нибудь породить
от TPaintBox И TCollectionItem можно?
← →
y-soft (2003-11-09 19:07) [4]Нельзя - в Object Pascal это не поддерживается.
Но можно инкапсулировать хоть сколько классов. Или интерфейсов
← →
mc_duck (2003-11-09 19:08) [5]->y-soft
По цепочке?
← →
y-soft (2003-11-09 19:20) [6]>mc_duck (09.11.03 19:08) [5]
Нет, в этом случае новый класс становится контейнером для этих классов. Вот очень простой пример:
type
TMyClass = class(TObject)
private
fFirstClass : TFirstClass;
fSecondClass : TSecondClass;
public
constructor Create;
destructor Destroy; override;
property FirstClass : TFirstClass
read fFirstClass write fFirstClass;
property SecondClass : TSecondClass
read fSecondClass write fSecondClass;
end;
...
constructor TMyClass.Create;
begin
inherited Create;
fFirstClass := TFirstClass.Create;
fSecondClass := TSecondClass.Create;
end;
destructor TMyClass.Destroy;
begin
if assigned(fFirstClass) then
fFirstClass.Free;
if assigned(fSecondClass) then
fSecondClass.Free;
inherited;
end;
← →
y-soft (2003-11-09 19:31) [7]Да, правильней было написать немного не так:
type
TMyClass = class(TObject)
private
fFirstClass : TFirstClass;
fSecondClass : TSecondClass;
procedure SetFirstClass(Value : TFirstClass);
procedure SetSecondClass(Value : TSecondClass);
public
constructor Create;
destructor Destroy; override;
property FirstClass : TFirstClass
read fFirstClass write SetFirstClass;
property SecondClass : TSecondClass
read fSecondClass write SetSecondClass;
end;
...
constructor TMyClass.Create;
begin
inherited Create;
fFirstClass := TFirstClass.Create;
fSecondClass := TSecondClass.Create;
end;
destructor TMyClass.Destroy;
begin
if assigned(fFirstClass) then
fFirstClass.Free;
if assigned(fSecondClass) then
fSecondClass.Free;
inherited;
end;
procedure TMyClass.SetFirstClass(Value : TFirstClass);
begin
//Ничего не делаем
end;
procedure TMyClass.SetSecondClass(Value : TSecondClass);
begin
//Ничего не делаем
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.11.20;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.011 c