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

📄 settree.pas

📁 一款不错的商务程序商品管理系统,有简易的窗体皮肤
💻 PAS
字号:
unit SetTree;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, Buttons, ExtCtrls, StdCtrls, Menus, ImgList,ADODB,DB,Theme;

type
  TTreeForm = record
    Name:string;
    NameCH:string;
    IsShow:Boolean;
  end;
  TFrm_SetTree = class(TBaseForm)
    TreeView1: TTreeView;
    Panel1: TPanel;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    N3: TMenuItem;
    N4: TMenuItem;
    N5: TMenuItem;
    ImageList1: TImageList;
    procedure SpeedButton3Click(Sender: TObject);
    procedure TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure RadioButton1Click(Sender: TObject);
    procedure RadioButton2Click(Sender: TObject);
    procedure TreeView1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure N4Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure TreeView1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure SpeedButton1Click(Sender: TObject);
    procedure SpeedButton2Click(Sender: TObject);
  private
    TreeForm:^TTreeForm;
    ChildNode:Boolean;
    { Private declarations }
    procedure init;
    procedure Post;
    procedure LoadTree(Node:TTreeNode;PID:string);
  public
    { Public declarations }
  end;

var
  Frm_SetTree: TFrm_SetTree;

implementation
uses Main,DM;
{$R *.dfm}

procedure TFrm_SetTree.init;
var
  i:Integer;

begin
  TreeView1.Items.Clear;
   for i:=0 to Application.ComponentCount-1 do
   begin
    if Application.Components[i] is TForm then
    begin
      New(TreeForm);
      TreeForm.Name:=TForm(Application.Components[i]).Name;
      TreeForm.NameCH:=TForm(Application.Components[i]).Caption;
      TreeForm.IsShow:=True;
      TreeView1.Items.AddObject(nil,TreeForm.NameCH,TreeForm);
    end;
   end;
end;

procedure TFrm_SetTree.SpeedButton3Click(Sender: TObject);
begin
  init;
end;

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

procedure TFrm_SetTree.TreeView1DragDrop(Sender, Source: TObject; X,
  Y: Integer);
var
  Node:TTreeNode;
begin
  Node:=TreeView1.GetNodeAt(X,Y);
  if ChildNode then
    TreeView1.Selected.MoveTo(Node,naAddChild)
  else
    TreeView1.Selected.MoveTo(Node,naAdd);
end;

procedure TFrm_SetTree.RadioButton1Click(Sender: TObject);
begin
  ChildNode:=False;
end;

procedure TFrm_SetTree.RadioButton2Click(Sender: TObject);
begin
  ChildNode:=True;
end;

procedure TFrm_SetTree.TreeView1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin


  if Assigned(TreeView1.GetNodeAt(X,Y)) then
  begin
    TreeView1.GetNodeAt(X,Y).Selected:=True;
  end;
end;

procedure TFrm_SetTree.N4Click(Sender: TObject);
begin
  TTreeForm(TreeView1.Selected.Data^).IsShow:=True;
  TreeView1.OnClick(Self);
end;

procedure TFrm_SetTree.N5Click(Sender: TObject);
begin
  TTreeForm(TreeView1.Selected.Data^).IsShow:=False;
  TreeView1.OnClick(Self);
end;

procedure TFrm_SetTree.TreeView1MouseUp(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  Node:TTreeNode;
begin
  Node:=TreeView1.GetNodeAt(X,Y);

  if Node.SelectedIndex=0 then
  begin
    Node.SelectedIndex:=1;
    Node.ImageIndex:=1;
    TTreeForm(TreeView1.Selected.Data^).IsShow:=True;
  end
  else
  begin
    Node.SelectedIndex:=0;
    Node.ImageIndex:=0;
    TTreeForm(TreeView1.Selected.Data^).IsShow:=False;
  end;
  TreeView1.Refresh;
end;

procedure TFrm_SetTree.Post;
var
  i:Integer;
  SQLStr:string;
  ID,PID,Name,NameCH:string;
  IsShow:string;
begin
  FDM.ADOConnection1.Execute('Delete From MR_SetFrmTree_Tab');
  for i:=0 to TreeView1.Items.Count-1 do
  begin
    ID:=IntToStr(TreeView1.Items[i].AbsoluteIndex+1);
    if Assigned(TreeView1.Items[i].Parent) then
      PID:=IntToStr(TreeView1.Items[i].Parent.AbsoluteIndex+1)
    else
      PID:='0';
    Name:=TTreeForm(TreeView1.Items[i].Data^).Name;
    NameCH:=TTreeForm(TreeView1.Items[i].Data^).NameCH;
    if TTreeForm(TreeView1.Items[i].Data^).IsShow then
      IsShow:='1'
    else
      IsShow:='0';
    SQLStr:='Insert Into MR_SetFrmTree_Tab (MR_ID,MR_PID,Frm_Name,Frm_NameCH,IsShow)'+
        ' values ('+ID+','+PID+','+QuotedStr(Name)+','+QuotedStr(NameCH)+','+IsShow+')';
    FDM.ADOConnection1.Execute(SQLStr);
  end;
end;

procedure TFrm_SetTree.SpeedButton1Click(Sender: TObject);
begin
  Post;
end;

procedure TFrm_SetTree.LoadTree(Node:TTreeNode;PID:string);
var
  ADOQ:TADODataSet;
  i:Integer;
  ChileID:string;
  CHNode:TTreeNode;
begin
  ADOQ:=TADODataSet.Create(nil);
  ADOQ.Connection:=FDM.ADOConnection1;
  ADOQ.CommandText:='Select * from MR_SetFrmTree_Tab where MR_PID='+PID+' order by MR_ID';
  ADOQ.Active:=True;

  for i:=0 to ADOQ.RecordCount-1 do
  begin
    New(TreeForm);
    TreeForm.Name:=ADOQ.FieldByName('Frm_Name').AsString;
    TreeForm.NameCH:=ADOQ.FieldByName('Frm_NameCH').AsString;
    TreeForm.IsShow:=ADOQ.FieldByName('IsShow').AsBoolean;
    ChileID:=ADOQ.FieldByName('MR_ID').AsString;
    CHNode:=TreeView1.Items.AddChildObject(Node,TreeForm.NameCH,TreeForm);
    if TTreeForm(CHNode.Data^).IsShow then
      CHNode.ImageIndex:=1;
    LoadTree(CHNode,ChileID);
    ADOQ.Next;
  end;

end;

procedure TFrm_SetTree.SpeedButton2Click(Sender: TObject);
begin
  TreeView1.Items.Clear;
  LoadTree(nil,'0');
end;

end.

⌨️ 快捷键说明

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