掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TtreeViewのアイテムを移動させれるコンポについて (ID:16414)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
unit MyTreeView; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls; type TMyTreeView = class(TTreeView) private procedure DragDrop(Sender, Source: TObject; X, Y: Integer); procedure DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); public constructor Create(AOwner: TComponent); override; end; procedure Register; implementation procedure Register; begin RegisterComponents('Samples', [TMyTreeView]); end; constructor TMyTreeView.Create(AOwner: TComponent); begin inherited Create(AOwner); DragMode := dmAutomatic; OnDragDrop := DragDrop; OnDragOver := DragOver; end; procedure TMyTreeView.DragDrop(Sender, Source: TObject; X, Y: Integer); procedure MoveNode(dstNode, srcNode : TTreeNode); var aNode : TTreeNode; i : Integer; begin with TMyTreeView(Sender) do begin aNode := Items.AddChild(dstNode, srcNode.Text); for i := 0 to srcNode.Count - 1 do begin MoveNode(aNode, srcNode.Item[i]); end; end; end; var dstNode, srcNode : TTreeNode; begin with TMyTreeView(Sender) do begin srcNode := Selected; dstNode := GetNodeAt(X, Y); // dstNodeがnilならRootにDrop if dstNode = srcNode then exit; MoveNode(dstNode, srcNode); srcNode.Delete; end; end; procedure TMyTreeView.DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean); begin Accept := (Sender = Source); end; end.
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.