Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Класс поправить следующим образом:
- TMyTreeNode = class(TPersistent)
- private
- fChilds: TObjectList;
- fVal: String;
- function GetChildNode(Index: Integer): TMyTreeNode;
- public
- constructor Create; virtual;overload;//сделать конструктор виртуальным(без этого можно обойтись, если исправить функцию копирования)
- constructor Create(Sizes: array of Integer); overload;
- destructor Destroy; override;
- function AddChildNode(Node: TMyTreeNode): Integer;
- function RemoveChildNode(Node: TMyTreeNode): Integer;
- function Count: Integer;
- procedure toXml(FN: String);
- property ChildNode[Index: Integer]: TMyTreeNode read GetChildNode; default;
- procedure AddChildString(S: String);
- Function FindByString(s:string):integer;
- Procedure Delete;
- procedure DeleteLast;
- procedure Assign( M:TMytreeNode);
- published
- property Value: String read fVal write fVal; //это просто из public в published перенести
- //Добавить:
- property Childs: TObjectList read fChilds write fChilds; //тоже published
- end;
- TRootComponent = class(TComponent)
- private
- fVal: TMyTreeNode;
- published
- property Val: TMyTreeNode reaed fVal write fVal;
- end;
- ...
- //функция копирования:
- function GetCopy(const Obj: TObject): TObject;
- var
- ms: TMemoryStream;
- r: TRootComponent;
- begin
- ms:= TMemoryStream.Create;
- r:= TRootComponent.Create;
- r.Val:= Obj;
- ms.WriteComponent(r);
- r.Val:= Obj.ClassType.Create;
- ms.Position:=0;
- ms.ReadComponent(r);
- result:=r.Val;
- end;
Add Comment
Please, Sign In to add comment