Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.20;
Скачать: 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 вся ветка

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

Наверх




Память: 0.48 MB
Время: 0.018 c
3-65755
chtr
2003-10-31 11:04
2003.11.20
Rave reports - две колонки.


14-66059
Gluk_3_Final
2003-10-28 17:06
2003.11.20
Зацените, скоро раздел новый будет


14-66057
sowell
2003-10-30 10:33
2003.11.20
Как получить сертификат от BrainBench?


8-66012
Юля
2003-07-24 14:17
2003.11.20
Пиксель


14-66096
isko
2003-10-29 08:50
2003.11.20
про одну игру(тоже навеяло)