喫茶XRAYトップページ


[5856] ウィンドウの階層のツリー表示 返信 削除
2012/3/8 (木) 17:47:43 Mr.XRAY
サンプルプログラム集にUPしました.
Halbow資料館の同名のものですが,Halbow資料館のコードですと,Delphi 2009
以降でコンパイルすると,コンパイルはできるのですが,実行時に例外が
発生します.

そこで,Delphi 2009以降でも使用可能にしました.
Delphi 2009以前でも使用可能です.

http://mrxray.on.coocan.jp/Delphi/plSamples/645_WindowTree.htm

某掲示板でTreeViewのことがあったので,思い出して... (^^;
TreeViewのノードのDrag and Dropは,いまだによく動作仕様が把握できて
いません.現在は簡単なテストコードを作成して眺めています.


[5857] Re:ウィンドウの階層のツリー表示 返信 削除
2012/3/8 (木) 21:03:51 snail3
▼ Mr.XRAYさん
Drag and Drop サンプル、

procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  WrkDestNode,
  WrkSourceNode: TTreeNode;
  NodeAttachMode: TNodeAttachMode;
begin
  if Sender <> TreeView1 then
    exit;

  WrkDestNode := TreeView1.GetNodeAT(X, Y);

  if Assigned( WrkDestNode ) = False then
    exit;

  if ((GetKeyState(VK_CONTROL) and $8000) <> 0)
   or (TreeView1.TopItem = WrkDestNode) then
    NodeAttachMode := naAddChild
   else
    NodeAttachMode := naInsert;


  WrkSourceNode := TreeView1.Selected;

  TreeView1.Items.BeginUpdate;
  WrkSourceNode.MoveTo(WrkDestNode, NodeAttachMode);
  TreeView1.Items.EndUpdate;
end;


[5859] Re2:ウィンドウの階層のツリー表示 返信 削除
2012/3/9 (金) 13:53:10 Mr.XRAY
▼ snail3さん

サンプルどうも.

>   if ((GetKeyState(VK_CONTROL) and $8000) <> 0)
>    or (TreeView1.TopItem = WrkDestNode) then


ヘヘヘッ.実はですね.
キー操作なしでのを考えているんです.
図のように,横線を表示して,挿入,追加等を視覚的に表示しようという
もくろみです.ハイ.
このコードも参考にさせていただきます.


INCM/CMT
Cyclamen v3.82