⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 frmmainunit.pas

📁 此为Delphi树控件的一个数据库运用
💻 PAS
字号:
unit frmMainUnit;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls, Buttons,
  TreeUtils, ActnList, ExtCtrls, ImgList, Menus;

type
  TfrmMain = class(TForm)
    TreeView1: TTreeView;
    StatusBar1: TStatusBar;
    ActionList1: TActionList;
    acAdd: TAction;
    acAddChild: TAction;
    Panel1: TPanel;
    ImageList1: TImageList;
    Panel2: TPanel;
    btnDelete: TButton;
    btnAddChild: TBitBtn;
    btnAdd: TBitBtn;
    edtCaption: TEdit;
    Label2: TLabel;
    Panel3: TPanel;
    acDelete: TAction;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    Label1: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    lblNodeCaption: TLabel;
    lblNodeIndex: TLabel;
    lblParentCaption: TLabel;
    lblParentIndex: TLabel;
    Bevel1: TBevel;
    Splitter1: TSplitter;
    acEdit: TAction;
    N4: TMenuItem;
    N5: TMenuItem;
    procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
    procedure FormCreate(Sender: TObject);
    procedure acAddExecute(Sender: TObject);
    procedure acAddChildExecute(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure acDeleteExecute(Sender: TObject);
    procedure TreeView1Edited(Sender: TObject; Node: TTreeNode;
      var S: string);
    procedure acEditExecute(Sender: TObject);
    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 }
    TreeUtil: TTreeUtils;
  end;

var
  frmMain: TfrmMain;

implementation

uses DMUnit, TreeFillThrd;

{$R *.dfm}

procedure TfrmMain.TreeView1Change(Sender: TObject; Node: TTreeNode);
var Nod: TNodeData;
  // S: string;
begin
  //  S := 'AbsIndex:[' + IntToStr(TreeView1.Selected.AbsoluteIndex);
  //  S := S + '] Text:[' + TreeView1.Selected.Text;
  //  S := S + '] Index:[' + IntToStr(TreeUtil.getSelNodeIndex);
  //  S := S + '] Caption:[' + TreeUtil.getSelNodeCaption + ']';
  //  S := S + '] Caption:[' + PNodeData(TreeView1.Selected.Data)^.Caption;
  //  StatusBar1.Panels.Items[0].Text := S;
  lblNodeCaption.Caption := TreeUtil.getSelNodeCaption;
  lblNodeIndex.Caption := IntToStr(TreeUtil.getSelNodeIndex);
  Nod := TreeUtil.getTreeNodeData(TreeView1.Selected.Parent);
  lblParentCaption.Caption := Nod.Caption;
  lblParentIndex.Caption := IntToStr(Nod.Index);
end;

procedure TfrmMain.acEditExecute(Sender: TObject);
begin
  TreeView1.Selected.EditText;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
begin
  TreeUtil := TTreeUtils.Create(TreeView1, DM.Conn, 'Dir');
  TreeUtil.FillTree;
end;

procedure TfrmMain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  TreeUtil.Free;
end;

procedure TfrmMain.acAddExecute(Sender: TObject);
begin
  TreeUtil.AddNode(edtCaption.Text);
end;

procedure TfrmMain.acAddChildExecute(Sender: TObject);
begin
  TreeUtil.AddChildNode(edtCaption.Text);
end;

procedure TfrmMain.acDeleteExecute(Sender: TObject);
begin
  if MessageBox(handle, PChar('你确认要删除"' + TreeView1.Selected.Text + '"吗?'),
    '提示', MB_ICONQUESTION + MB_YESNO) = IDYES then
    TreeUtil.DeleteTree(TreeView1.Selected);
end;

procedure TfrmMain.TreeView1Edited(Sender: TObject; Node: TTreeNode;
  var S: string);
begin
  //修改Node的文本
  TreeUtil.ModifyNodeCaption(S, Node)
end;

procedure TfrmMain.TreeView1DragOver(Sender, Source: TObject; X,
  Y: Integer; State: TDragState; var Accept: Boolean);
begin
  if Source = TreeView1 then Accept := True
  else Accept := False;
end;

procedure TfrmMain.TreeView1DragDrop(Sender, Source: TObject; X,
  Y: Integer);
var TargetNode, SourceNode: TTreeNode;
begin
  TargetNode := TreeView1.DropTarget;
  SourceNode := TreeView1.Selected;
  if MessageBox(handle, '您确认要异动目录吗?', '提示', MB_ICONQUESTION
    + MB_YESNO) = IDYES then
    if TreeUtil.ModifyNodePID(PNodeData(TargetNode.Data)^.Index, SourceNode) then
      TreeUtil.FillTree;
end;

end.

⌨️ 快捷键说明

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