zoukankan      html  css  js  c++  java
  • TreeView节点拖拉操作





    //这个拖拽的感觉不对
        
    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      ComCtrls;

    type
      TForm1 = class(TForm)
        TreeView1: TTreeView;
        procedure TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
          Shift: TShiftState; X, Y: Integer);
        procedure TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
          State: TDragState; var Accept: Boolean);
        procedure TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;

    implementation

    {$R *.DFM}

    {鼠标左键按下,准备开始拖拉操作}
    procedure TForm1.TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    begin
      if ( Button = mbLeft ) and
         ( htOnItem in Treeview1.GetHitTestInfoAt( X, Y ) ) then
      begin
        Treeview1.BeginDrag( False );
      end;
    end;

    {鼠标拖拉操作}
    procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    var
      Node : TTreeNode;
    begin
      if Source = Treeview1 then
      begin
        Node := Treeview1.GetNodeAt( X, Y );
        if Node <> nil then
          Accept := true;
      end;
    end;

    {拖拉放下}
    procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
    var
      TempNode : TTreeNode;
      AttachMode : TNodeAttachMode;
    begin
      if Treeview1.Selected = nil then
        Exit;
      AttachMode := naAddChild;
      Treeview1.Items.BeginUpdate;
      try
        TempNode := Treeview1.Items.AddChild( Treeview1.DropTarget,'Temp' );
        try
          Treeview1.Selected.MoveTo( Treeview1.DropTarget, AttachMode );
        finally
          TempNode.Free;
        end;
      finally
        Treeview1.Items.EndUpdate;
      end;
    end;

    end.




    附件列表

    • 相关阅读:
      QML学习笔记(三)-引入Font-awesome
      QML学习笔记(一)-防止鼠标穿透事件
      JS小积累(一)— 判断在线离线
      electron入门笔记(三)- 引入bootstrap
      express搭建服务器
      生成SSH密钥添加到GitHub
      python中常见的错误
      PyCharm在同一个包(package)下,如何把一个.py文件导入另外一个.py文件下
      在PyCharm中导入Numpy和Pygame模块 (win8.1)
      Pycharm中安装Pygame并写第一个程序
    • 原文地址:https://www.cnblogs.com/xe2011/p/3876296.html
    Copyright © 2011-2022 走看看