Вниз
Скачать: CL | DM;

Множественное порождение классов   Найти похожие ветки 

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.015 c
1-65964
Dmitry
2003-11-06 06:42
2003.11.20
Увеличивается размер занимаемой памяти


1-65903
Meronikol
2003-11-08 16:04
2003.11.20
Масштаб программы при разных разрешениях экрана


14-66108
mip
2003-10-29 09:30
2003.11.20
Delphi и код активации


3-65718
lmatveev
2003-10-30 13:35
2003.11.20
Как узнать номер строки с ошибкой в MS SQL Server?


6-66039
rks
2003-09-24 19:21
2003.11.20
Определение интернет трафика каждого компьютера в сети(отдельно)




   Наверх