Чёта я запутался, собственно что я пытаюсь сделать: есть класс и массив его экземпляров
Код:
TPart = class (TObject)
private
FName: string;
FNeed: Word;
FDone: Word;
public
property Name: string read FName write FName;
property Need: Word read FNeed write FNeed;
property Done: Word read FDone write FDone;
end;
TPartsArray = array of TPart;
.............
AllParts: TPartsArray;
есть класс у которого есть свой массив (пока не понятно чего, это собственно и пытаюсь понять)
Код:
TProduct = class(TObject)
private
FName: string;
function GetPart(const Index: Byte): TProductPart;
procedure SetPart(const Index: Byte; const Value: TProductPart);
public
property Name: string read FName write FName;
property Part[Index]: TProductPart read GetPart write SetPart; //<<<????
end;
.............
Product: TProduct
нужно чтобы TProductPart указывал на TPart, но при этом содержал другие поля. Первое что приходит в голову:
Код:
TProductPart = class(TObject)
private
FItem: TPart;
FCount: Byte;
public
property Item: TPart read FItem write FItem;
property Count: Byte read FCount write FCount; //к количесву элементов отношения не имеет
end;
выглядит не очень, Product.Part[i].Item, по-моему наследование и полиморфизм не для этого придумывали.
Вроде как нужно наследовать
Код:
TProductPart = class(TPart)
private
FCount: Byte;
public
property Count: Byte read FCount write FCount;
end;
непонятно что дальше, допустим
Код:
(Produdct.Part[i] as TPart):= AllPart[k]; //ну или типа того
ну т.е. если я не создаю Produdct.Part[i], то где будет храниться Сount? А если создаю, то выделяется память и все вот это становится бессмысленным.
upd. Пришел в голову вот такой вариант:
Код:
TProductPart = class(TObject)
private
FPart: TPart;
FCount: Byte;
function GetName: string; //SetName - по аналогии;
public
property Name: string read GetName write SetName;
// и все остальное так же
property Count: Byte read FCount write FCount; //к количесву элементов отношения не имеет
end;
.....
function TProductPart.GetName: string
begin
Result:= FPart.Name;
end;
Вроде должно работать, но вот это вот - дублировать каждое свойство с прописыванием для каждого Get\Set. Есть у меня ощущение что все это можно как-то проще и в Delphi давно уже придумано.