?? unit1.pas
字號:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, DB, ADODB, Menus;
type
TForm1 = class(TForm)
TreeView1: TTreeView;
du: TButton;
ADOQuery1: TADOQuery;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
change: TButton;
add: TButton;
addchild: TButton;
PopupMenu1: TPopupMenu;
Nadd: TMenuItem;
Naddchild: TMenuItem;
Nchange: TMenuItem;
Ndelete: TMenuItem;
procedure duClick(Sender: TObject);
Function AddNode(TreeView:TTreeView;Node:TTreeNode;ADOQ:TADOQuery):TTreeNode;
Function SearchNode(TreeView:TTreeView;Txts:String):TTreeNode;
procedure TreeView1Change(Sender: TObject; Node: TTreeNode);
procedure changeClick(Sender: TObject);
procedure addClick(Sender: TObject);
procedure addchildClick(Sender: TObject);
procedure NaddClick(Sender: TObject);
procedure NaddchildClick(Sender: TObject);
procedure NchangeClick(Sender: TObject);
procedure NdeleteClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
Function TForm1.AddNode(TreeView:TTreeview;Node:TTreeNode;ADOQ:TADOQuery):TTreeNode;
var
Node1:TTreeNode;
s:PString;
begin
Node1:=TreeView.Items.AddChild(Node,ADOQ.FieldByName('text').Text);
New(s);
s^:=ADOQ.FieldByName('id').Text;
Node1.Data:=s;
Result:=Node1;
end;
Function TForm1.SearchNode(TreeView:TTreeView;Txts:String):TTreeNode;
var
i:integer;
s:PString;
begin
Result:=nil;
For i:=0 To TreeView.Items.Count-1 Do
begin
s:=TreeView.Items[i].Data;
If s^=Txts Then
begin
Result:=TreeView.Items[i];
Exit;
end;
end;
end;
procedure TForm1.duClick(Sender: TObject);
var
i,Rec_Num:integer;
Node1,Node2:TTreeNode;
begin
TreeView1.Items.Clear;
TreeView1.Items.BeginUpdate;
Node1:=TreeView1.Items.GetFirstNode;
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('select * from tree order by id');
open;
end;
If ADOquery1.RecordCount>0 Then
Begin
Rec_Num:= ADOQuery1.RecordCount;
For i:=0 To Rec_Num-1 Do
begin
If ADOQuery1.FieldByName('pid').Text='0' Then
Node2:=AddNode(TreeView1,Node1,ADOQuery1)
Else
begin
Node2:=SearchNode(TreeView1,ADOQuery1.FieldByName('pid').Text);
If Node2<>nil Then
AddNode(TreeView1,Node2,ADOQuery1);
end;
ADOQuery1.Next;
end;
End;
TreeView1.Items.EndUpdate;
end;
//以上是從數據庫顯示一個樹
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
var
p:pstring;
begin
p:=node.data;
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('select * from tree where id=:a');
parameters.ParamByName('a').Value :=p^;
open;
edit1.text:=fieldbyname('pid').Text;
edit2.Text:=fieldbyname('id').Text;
edit3.Text:=fieldbyname('text').Text;
end;
end;
//以上是顯示子目錄的ID,父ID,TEXT
procedure TForm1.changeClick(Sender: TObject);
begin
try
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('update tree set text=:a where id=:b');
parameters.ParamByName('a').Value :=edit3.Text;
parameters.ParamByName('b').Value :=edit2.Text;
execsql;
end;
except
Application.MessageBox('記錄修改失?。。?!','提示信息',0);
end;
end;
//以上是修改子目錄的TEXT
procedure TForm1.addClick(Sender: TObject);
begin
try
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('insert into tree (pid,text) values (:a,:b)');
parameters.ParamByName('a').Value :=edit1.Text;
parameters.ParamByName('b').Value :='未命名';
execsql;
end;
except
Application.MessageBox('記錄添加失?。。?!','提示信息',0);
end;
end;
//以上是添加目錄
procedure TForm1.addchildClick(Sender: TObject);
begin
try
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('insert into tree (pid,text) values (:a,:b)');
parameters.ParamByName('a').Value :=edit2.Text;
parameters.ParamByName('b').Value :='未命名';
execsql;
end;
except
Application.MessageBox('記錄添加失?。。?!','提示信息',0);
end;
end;
//以上是添加子目錄
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~以下是POPUPMENU的代碼
procedure TForm1.NaddClick(Sender: TObject);
begin
try
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('insert into tree (pid,text) values (:a,:b)');
parameters.ParamByName('a').Value :=edit1.Text;
parameters.ParamByName('b').Value :='未命名';
execsql;
end;
except
Application.MessageBox('記錄添加失?。。。?#039;,'提示信息',0);
end;
end;
//以上是添加目錄
procedure TForm1.NaddchildClick(Sender: TObject);
begin
try
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('insert into tree (pid,text) values (:a,:b)');
parameters.ParamByName('a').Value :=edit2.Text;
parameters.ParamByName('b').Value :='未命名';
execsql;
end;
except
Application.MessageBox('記錄添加失敗?。?!','提示信息',0);
end;
end;
//以上是添加子目錄
procedure TForm1.NchangeClick(Sender: TObject);
begin
try
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('update tree set text=:a where id=:b');
parameters.ParamByName('a').Value :=edit3.Text;
parameters.ParamByName('b').Value :=edit2.Text;
execsql;
end;
except
Application.MessageBox('記錄修改失?。。。?#039;,'提示信息',0);
end;
end;
//以上是修改子目錄的TEXT
procedure TForm1.NdeleteClick(Sender: TObject);
begin
try
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('delete from tree where id=:a');
parameters.ParamByName('a').Value :=edit2.Text;
execsql;
end;
except
Application.MessageBox('記錄刪除失敗?。。?#039;,'提示信息',0);
end;
end;
//以上是刪除目錄
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -