TTreeNodeのコピーを保存するには?

解決


まる  2005-07-17 18:56:59  No: 16417

たびたび。たびたび、質問させていただきます^^;

今作っているプログラム内にて、TTreeViewで項目操作を行っています。
あとで別の処理に使用したいため、ある位置のTTreeNodeのコピーを取っておきたいのです。
例えば、MotoNode: TTreeNode を CopyNode: TTreeNode に保存しておくということです。

このとき、保存という意味での記述方法は、
MotoNode := CopyNode; ではなく
CopyNode.Assign(MotoNode); でいいのでしょうか?
また、それぞれの意味は、
MotoNode := CopyNode;  ===>  MotoNodeはCopyNodeを表す
CopyNode.Assign(MotoNode);   ===>   MotoNodeと同じ情報をCopyNodeに別コピー
(Cとかで言う、参照渡しと値渡しみたいなもの?)

いまいち整理がついていません。
よろしくお願いします。


篠田雅夫  2005-07-18 00:20:41  No: 16418

TTreeNode にかかわらず、Delphiのオブジェクトはポインタそのものと考えなければいけません。  したがって、以下の形は同じ実体を操作したことになります。

procedure Foo;
var
 obj: TObj;
begin
 obj := BaseObj;//名前は違っても同じもの
 obj.propt := 1;//BaseObj.propt := 1と同じ
end;
しかし、以下の例はクローンです。
procedure Foo;
var
 obj: TObj;
begin
 //Assignはオブジェクトによって自分の意図とは違う働きをする場合があります。
 obj := TObj.Create;
 {同じ値でもobjとBaseObjは独立した個体であるといえます}
 obj.propt := BaseObj.propt;
end;


まる  2005-07-19 06:02:50  No: 16419

ありがとうございます。
すっきりしました^^
しかし、私はまだまです^^;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加