Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-65824
AndreyA
2003-11-09 14:51
2003.11.20
QRRichEdit


4-66162
Andrey Voznesenskiy
2003-09-24 18:18
2003.11.20
убийство и рождение потока


1-65947
staryx
2003-11-11 12:32
2003.11.20
Отслеживание мыши.


1-65895
Xedin
2003-11-08 14:42
2003.11.20
writeln и printf ??????????????


4-66171
alex25
2003-09-26 10:57
2003.11.20
CreateProcess





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский