VirtualStringTreeのD&D

解決


ぺぺ  2014-02-15 11:55:48  No: 46032

おせわになります。

現在、treeviewコンポーネントのVirtualStringTree を色々いじっており、D&Dで移動させたいのですが↓のexe版での動作は旨く動いているのですが、コン
ポーネント側のサンプルソースでROOTのものを重ねてchildにし、それを移動させると消えてしまいます。
http://www.soft-gems.net/index.php/all-downloads

また、子の有るものはフォルダーアイコンにしたいのですが、それも移動させるとCLEARされてしまいます。

そこら辺の処理に詳しい方おりましたら是非指導いただけますと助かります。


snail3  2014-02-18 21:15:48  No: 46033

社内資料をコピーします。これでわかりませんか。

Drag&Drop
Drag&Dropを利用するには2つの方法があります。
DragType が dtOLE と dtVCL
dtOLE はActiveXを利用するため汎用性があります。
dtVCL はDelphi環境に特化されています。VirtualTreeView 内のDrag Drop専用と考えてください。

  DragMode = dmAutomatic
  DragType = dtOLE,dtVCL
※   [dtOLE]を利用する場合は必ず ClipbordFormats.Virtual Tree Dasta を True にセットする
    これをしないとTreeViewノードのドラッグが判断できない。

☆ Drop & Drag 、ノード移動で移動したノードが消える
FormCreateで指定
  VirtualStringTree1.TreeOptions.AutoOptions := VirtualStringTree1.TreeOptions.AutoOptions - [toAutoDeleteMovedNodes];
※ V5.0.0 で以前のバージョンと変更された
http://www.soft-gems.net/forum/viewtopic.php?f=5&t=2498

----------------------------------------------------------------------------------------
データ受け渡しには以下のメソッドを作成する必要がある。
procedure TfrmMain.VTLoadNode(Sender: TBaseVirtualTree; Node: PVirtualNode;  Stream: TStream);
procedure TfrmMain.VTSaveNode(Sender: TBaseVirtualTree; Node: PVirtualNode;
----------------------------------------------------------------------------------------


ぺぺ  2014-02-25 13:44:24  No: 46034

snail3 さん、ご回答ありがとうございます。
確認してみました所。

・FormCreateで下記をした場合、Dragした際に前のノードが残ってしましまうようです。
  VirtualStringTree1.TreeOptions.AutoOptions := VirtualStringTree1.TreeOptions.AutoOptions - [toAutoDeleteMovedNodes];

上記をしない場合は、選択ノードは移動出来るのですが、その下に有ったノードが消えてしまい。ここをどうにか出来ればと思っています。

---------------------------------------------
※   [dtOLE]を利用する場合は必ず ClipbordFormats.Virtual Tree Dasta を True にセットする
-----------------------------

ClipbordFormats.Virtual Tree Dasta という部分と下記の部分が何も出来てないので
この部分を詳しく教えて頂けますと助かります。

procedure TfrmMain.VTLoadNode(Sender: TBaseVirtualTree; Node: PVirtualNode;  Stream: TStream);
procedure TfrmMain.VTSaveNode(Sender: TBaseVirtualTree; Node: PVirtualNode;


ぺぺ  2014-02-26 21:40:40  No: 46035

snail3 さん、ありがとうございました。
おかげさまで解決いたしました。

原因は
ClipbordFormatsの Virtual Tree Data にチェックが入って居なかった事と
Treeの子が破棄されてしまうのは、toAutoDeleteMovedNodes がTrueになっていたせいでした。

的確な回答ありがとうございました。


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

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






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