Главная страница
    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
3-65725
Murder
2003-11-03 13:25
2003.11.20
Работа с Excel


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


3-65793
Davinchi9
2003-10-30 16:35
2003.11.20
Help по ADO


3-65758
Peter
2003-11-03 10:49
2003.11.20
Отчеты


6-66030
zarochka
2003-09-24 22:29
2003.11.20
Как закачать файды на сервер





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