📄 settree.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 + -