u_form.~pas

来自「很好地delphi书籍源码」· ~PAS 代码 · 共 89 行

~PAS
89
字号
unit U_Form;

interface

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

type
  TForm1 = class(TForm)
    TreeView1: TTreeView;
    CreateButton: TButton;
    DelButton: TButton;
    ImageList1: TImageList;
    procedure CreateButtonClick(Sender: TObject);
    procedure TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure DelButtonClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.CreateButtonClick(Sender: TObject);
var
  MyTreeNode1, MyTreeNode2: TTreeNode;
begin
  with TreeView1.Items do
  begin
    Clear; { 清除树上原有节点 }
    MyTreeNode1 := Add(nil, '山东省');//增加第1个根节点
    AddChild(MyTreeNode1,'济南市');  // 在第1个根节点添加一个子节点
    MyTreeNode2:=AddChild(MyTreeNode1,'青岛市');//在第1个根节点添加另一个子节点
    AddChild(MyTreeNode2,'市南区');
    AddChild(MyTreeNode2,'市北区');
    AddChild(MyTreeNode2,'崂山区');
    MyTreeNode2 := Add(MyTreeNode1, '江苏省');//增加第2个根节点
    MyTreeNode2 :=AddChild(MyTreeNode2,'南京市');
    Add(MyTreeNode2,'无锡市');
    Add(MyTreeNode2, '扬州市');
    MyTreeNode2:=Add(MyTreeNode1, '辽宁省');//增加第3个根节点
    AddChild(MyTreeNode2, '沈阳市');
    AddChild(MyTreeNode2, '大连市');
  end;
  TreeView1.FullExpand; //展开树结构
end;

procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
  AnItem: TTreeNode;
  AttachMode: TNodeAttachMode;
  HT: THitTests;
begin
  if TreeView1.Selected = nil then Exit;
  HT:=TreeView1.GetHitTestInfoAt(X, Y);
  AnItem:= TreeView1.GetNodeAt(X, Y);
  if (HT - [htOnItem,htOnButton, htNowhere, htOnIndent] <> HT) then
  begin
    if (htOnItem in HT) then AttachMode := naAddChild
    else if (htOnButton in HT) then AttachMode := naAddChildFirst
    else if htNowhere in HT then AttachMode := naAdd
    else if htOnIndent in HT then AttachMode := naInsert;
    TreeView1.Selected.MoveTo(AnItem, AttachMode);
  end;
end;

procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
  State: TDragState; var Accept: Boolean);
begin
  Accept:= Source is TTreeView ;
end;

procedure TForm1.DelButtonClick(Sender: TObject);
begin
  TreeView1.Selected.Delete;
  TreeView1.FullExpand;
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?