Guest User

Untitled

a guest
May 24th, 2018
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.67 KB | None | 0 0
  1. //Класс поправить следующим образом:
  2.   TMyTreeNode = class(TPersistent)
  3.   private
  4.     fChilds: TObjectList;
  5.     fVal: String;
  6.     function GetChildNode(Index: Integer): TMyTreeNode;
  7.   public
  8.     constructor Create; virtual;overload;//сделать конструктор виртуальным(без этого можно обойтись, если исправить функцию копирования)
  9.     constructor Create(Sizes: array of Integer); overload;
  10.     destructor Destroy; override;
  11.     function AddChildNode(Node: TMyTreeNode): Integer;
  12.     function RemoveChildNode(Node: TMyTreeNode): Integer;
  13.     function Count: Integer;
  14.     procedure toXml(FN: String);
  15.     property ChildNode[Index: Integer]: TMyTreeNode read GetChildNode; default;
  16.     procedure AddChildString(S: String);
  17.     Function FindByString(s:string):integer;
  18.     Procedure Delete;
  19.     procedure DeleteLast;
  20.     procedure Assign( M:TMytreeNode);
  21.   published
  22.     property Value: String read fVal write fVal; //это просто из public в published   перенести
  23.     //Добавить:
  24.     property Childs: TObjectList read fChilds write fChilds; //тоже published
  25.   end;
  26.  
  27.  TRootComponent = class(TComponent)
  28.  private
  29.   fVal: TMyTreeNode;
  30.  published
  31.   property Val: TMyTreeNode reaed fVal write fVal;
  32.  end;
  33. ...
  34.  
  35. //функция копирования:
  36. function GetCopy(const Obj: TObject): TObject;
  37. var
  38.  ms: TMemoryStream;
  39.  r: TRootComponent;
  40. begin
  41.  ms:= TMemoryStream.Create;
  42.  r:= TRootComponent.Create;
  43.  r.Val:= Obj;
  44.  ms.WriteComponent(r);
  45.  r.Val:= Obj.ClassType.Create;
  46.  ms.Position:=0;
  47.  ms.ReadComponent(r);
  48.  result:=r.Val;
  49. end;
Add Comment
Please, Sign In to add comment