TtreeViewのアイテムを移動させれるコンポについて


ggh  2005-07-17 10:05:01  No: 16412

アイテムをドラッグ&ドロップで移動させられるような機能のついたTTreeViewのような(派生したものでも、そうでなくとも)コンポーネントはなにかないのでしょうか?

探しては見たものの見つからなかったので皆様のお力を借りたいと重い、質問させていただきました。
一応、自分でその機能を持たせたTtreeViewはできるのですが、少し不具合があったり、コンポーネント化できなかったりと問題が多いので、このくらいのコンポーネントならどこかにないだろうか、という考えです。

もし、ないようでしたら、もう一度自分で頑張ってみようかと思います。
参考程度のものでもよいので、もしご存知の方がいらっしゃいましたらぜひ教えていただきたいです。
宜しくお願いします><


ggh  2005-07-17 18:00:30  No: 16413

アイテムではなく、ノードですね。
間違い申し訳ないです


こんなカンジ?  2005-07-18 01:29:05  No: 16414

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.


嫌韓厨房  2005-08-08 19:30:17  No: 16415

> 移動させれる
君はプログラム言語よりまず日本語をマスターしたまえ。


↑もっと大人になってね!  2005-08-08 19:54:19  No: 16416

嫌韓厨房さん


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

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






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