📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, ADODB, ComCtrls;
type
TForm1 = class(TForm)
TreeView1: TTreeView;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
procedure AddClass(AId:integer;FatherNode:TTreeNode);//添加分类过程
procedure AddDataToDB(CurrNode,FatherNode:TTreeNode);//添加实际数据到数据库
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.AddClass(AId: integer;FatherNode:TTreeNode);
var
QryTmp:TADOQuery;
myNode:TTreeNode;
myLabel:TLabel;
begin
QryTmp:=TADOQuery.Create(self);
QryTmp.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+extractfilepath(application.ExeName)+'test.mdb;Persist Security Info=False';
QryTmp.SQL.Add('select * from tb1');
QryTmp.SQL.Add('where FatherId='+inttostr(AId));
QryTmp.Open;
while not QryTmp.Eof do
begin
myNode:=Treeview1.Items.AddChild(FatherNode,QryTmp.fieldbyname('CName').AsString);
//创建标签,caption存放各分支的AutoId表识
myLabel:=TLabel.Create(self);
myLabel.Visible:=false;
myLabel.Caption:=QryTmp.fieldbyname('AutoId').AsString;
myNode.Data:=myLabel;
AddClass(QryTmp.fieldbyname('AutoId').AsInteger,myNode); //递归调用过程
QryTmp.Next;
end;
QryTmp.Free;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
AddClass(0,nil);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
strName:string;
myNode:TTreeNode;
begin
strName:=inputbox('新增公司','请输入分类名称: ','');
strName:=trim(strName);
if strName='' then
exit;
myNode:=treeview1.Items.Add(treeview1.Selected,strName);
if assigned(treeview1.Selected) then
AddDataToDB(myNode,treeview1.Selected.Parent)
else
AddDataToDB(myNode,nil);
myNode.selected:=true;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
strName:string;
myNode:TTreeNode;
begin
strName:=inputbox('新增部门','请输入分类名称: ','');
strName:=trim(strName);
if strName='' then
exit;
myNode:=treeview1.Items.AddChild(treeview1.Selected,strName);
AddDataToDB(myNode,treeview1.Selected);
myNode.selected:=true;
end;
procedure TForm1.AddDataToDB(CurrNode,FatherNode: TTreeNode);
var
myLabel:TLabel;
QryTmp:TADOQuery;
AId:integer;
begin
if not assigned(FatherNode) then
AId:=0
else if not assigned(FatherNode.Data) then
AId:=0
else
AId:=strtoint(TLabel(FatherNode.Data).caption);
QryTmp:=TADOQuery.Create(self);
QryTmp.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+extractfilepath(application.ExeName)+'test.mdb;Persist Security Info=False';
QryTmp.SQL.Add('select * from tb1');
QryTmp.SQL.Add('where FatherId='+inttostr(AId));
QryTmp.Open;
QryTmp.Append;
QryTmp['FatherId']:=AId;
QryTmp['CName']:=CurrNode.Text;
QryTmp.Post;
//创建记录currNode的AutoId表识标
myLabel:=TLabel.Create(self);
myLabel.Visible:=False;
MyLabel.Caption:=QryTmp.fieldbyname('AutoId').AsString;
CurrNode.Data:=myLabel;
QryTmp.Free;
end;
procedure TForm1.Button3Click(Sender: TObject);
var
QryTmp:TADOQuery;
begin
if not assigned(treeview1.Selected) then
exit;
if application.MessageBox('是否删除分类及下级分类?','提示',mb_yesno+mb_iconquestion)=idno then
exit;
//删除下级别分类
QryTmp:=TADOQuery.Create(self);
QryTmp.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+extractfilepath(application.ExeName)+'test.mdb;Persist Security Info=False';
QryTmp.SQL.Add('delete * from tb1');
QryTmp.SQL.Add('where FatherId='+TLabel(Treeview1.Selected.data).Caption);
QryTmp.ExecSQL;
QryTmp.SQL.Clear;
QryTmp.SQL.Add('delete * from tb1');
QryTmp.SQL.Add('where AutoId='+TLabel(Treeview1.Selected.data).Caption);
QryTmp.ExecSQL;
Treeview1.Selected.Delete;
end;
procedure TForm1.Button4Click(Sender: TObject);
var
QryTmp:TADOQuery;
strName:string;
begin
if not assigned(treeview1.Selected) then
exit;
strName:=inputbox('修改','请输入新的名称: ','');
strName:=trim(strName);
if strName='' then
exit;
//删除下级别分类
QryTmp:=TADOQuery.Create(self);
QryTmp.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+extractfilepath(application.ExeName)+'test.mdb;Persist Security Info=False';
QryTmp.SQL.Add('update tb1 set CName='+''''+strName+'''');
QryTmp.SQL.Add('where AutoId='+TLabel(Treeview1.Selected.data).Caption);
QryTmp.ExecSQL;
Treeview1.Selected.Text:=strName;
end;
end.
//autoid cname fatherid
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -