procedure TF_Error.CreateTree();//自定义过程(用来操作TREEVIEW1) 创建树 var bb: string; MyRecPtr: PMyRec; rootnode,sunnode,RootNodeForSec: ttreenode; begin treeview1.items.clear; rootnode:=treeview1.Items.addfirst(nil,标示); rootnode.SelectedIndex:=0; rootnode.ImageIndex:=0; query1.Close; query1.SQL.Clear; query1.SQL.Add('select * from table order by 字段'); query1.open; query1.first; while not query1.eof do begin New(MyRecPtr); MyRecPtr^.User_code:=Query1.fieldbyname(字段).asstring; bb:=Query1.fieldbyname(字段).asstring;//操作员名称 if Length(MyRecPtr^.字段)=2 then begin sunnode:=treeview1.Items.AddChildObject(rootnode,bb,MyRecPtr); sunnode.SelectedIndex:=2; sunnode.ImageIndex:=1; RootNodeForSec:=sunnode; end else begin sunnode:=treeview1.Items.AddChildObject(RootNodeForSec,bb,MyRecPtr); sunnode.SelectedIndex:=6; sunnode.ImageIndex:=5; end; query1.next; end; treeview1.FullExpand; end;
procedure TfrmMain.CreateTree(sNode: TTreeNode ); var s1: TTreeNode; node : TTreeNode; sql:string; PNode: PNodeData; begin FrmDm.AQDepartment.Close; FrmDm.AQDepartment.SQL.Clear; if( sNode = nil ) then sql := '0' else sql := (PNodeData(sNode.Data)^).serial; FrmDm.AQDepartment.SQL.Text := 'select * from Department where parent = '''+ sql +''' and IsDeleted <> ''1'' '; FrmDm.AQDepartment.Open; FrmDm.AQDepartment.First; while not FrmDm.AQDepartment.Eof do begin New(PNode); if( sNode = nil ) then begin node := TreeView1.Items.Add( sNode, FrmDm.AQDepartment.Fieldbyname( 'Name' ).AsString ); node.ImageIndex := 0; end else begin node := TreeView1.Items.AddChild( sNode, FrmDm.AQDepartment.Fieldbyname( 'Name' ).AsString ); node.ImageIndex := 1; node.SelectedIndex := 1; end; PNode^.serial := FrmDm.AQDepartment.FieldByName( 'serial').AsString; node.Data := PNode; FrmDm.AQDepartment.Next; end; FrmDm.AQDepartment.Close; if sNode = nil then s1 := TreeView1.Items.GetFirstNode else s1 := sNode.getFirstChild; while s1<>nil do begin CreateTree(s1); s1 := s1.getNextSibling; end; end;
procedure TfrmMain.CreateTree(sNode: TTreeNode ); var s1: TTreeNode; node : TTreeNode; sql:string; PNode: PNodeData; begin FrmDm.AQDepartment.Close; FrmDm.AQDepartment.SQL.Clear; if( sNode = nil ) then sql := '0' else sql := (PNodeData(sNode.Data)^).serial; FrmDm.AQDepartment.SQL.Text := 'select * from Department where parent = '''+ sql +''' and IsDeleted <> ''1'' '; FrmDm.AQDepartment.Open; FrmDm.AQDepartment.First; while not FrmDm.AQDepartment.Eof do begin New(PNode); if( sNode = nil ) then begin node := TreeView1.Items.Add( sNode, FrmDm.AQDepartment.Fieldbyname( 'Name' ).AsString ); node.ImageIndex := 0; end else begin node := TreeView1.Items.AddChild( sNode, FrmDm.AQDepartment.Fieldbyname( 'Name' ).AsString ); node.ImageIndex := 1; node.SelectedIndex := 1; end; PNode^.serial := FrmDm.AQDepartment.FieldByName( 'serial').AsString; node.Data := PNode; FrmDm.AQDepartment.Next; end; FrmDm.AQDepartment.Close; if sNode = nil then s1 := TreeView1.Items.GetFirstNode else s1 := sNode.getFirstChild; while s1 <>nil do begin CreateTree(s1); s1 := s1.getNextSibling; end; end;
http://blog.csdn.net/rfwang/articles/369315.aspx
你自己上网搜索一下,慢慢看吧
treeview
基本属性就行了
修改删除你可以数据库中的删除,然后重新加载treeview。
var
bb: string;
MyRecPtr: PMyRec;
rootnode,sunnode,RootNodeForSec: ttreenode;
begin
treeview1.items.clear;
rootnode:=treeview1.Items.addfirst(nil,标示);
rootnode.SelectedIndex:=0;
rootnode.ImageIndex:=0;
query1.Close;
query1.SQL.Clear;
query1.SQL.Add('select * from table order by 字段');
query1.open;
query1.first;
while not query1.eof do
begin
New(MyRecPtr);
MyRecPtr^.User_code:=Query1.fieldbyname(字段).asstring;
bb:=Query1.fieldbyname(字段).asstring;//操作员名称
if Length(MyRecPtr^.字段)=2 then
begin
sunnode:=treeview1.Items.AddChildObject(rootnode,bb,MyRecPtr);
sunnode.SelectedIndex:=2;
sunnode.ImageIndex:=1;
RootNodeForSec:=sunnode;
end
else
begin
sunnode:=treeview1.Items.AddChildObject(RootNodeForSec,bb,MyRecPtr);
sunnode.SelectedIndex:=6;
sunnode.ImageIndex:=5;
end;
query1.next;
end;
treeview1.FullExpand;
end;
var
s1: TTreeNode;
node : TTreeNode;
sql:string;
PNode: PNodeData;
begin
FrmDm.AQDepartment.Close;
FrmDm.AQDepartment.SQL.Clear; if( sNode = nil ) then sql := '0'
else sql := (PNodeData(sNode.Data)^).serial; FrmDm.AQDepartment.SQL.Text := 'select * from Department where parent = '''+ sql +''' and IsDeleted <> ''1'' '; FrmDm.AQDepartment.Open;
FrmDm.AQDepartment.First;
while not FrmDm.AQDepartment.Eof do
begin
New(PNode);
if( sNode = nil ) then
begin
node := TreeView1.Items.Add( sNode, FrmDm.AQDepartment.Fieldbyname( 'Name' ).AsString );
node.ImageIndex := 0;
end
else
begin
node := TreeView1.Items.AddChild( sNode, FrmDm.AQDepartment.Fieldbyname( 'Name' ).AsString );
node.ImageIndex := 1;
node.SelectedIndex := 1;
end; PNode^.serial := FrmDm.AQDepartment.FieldByName( 'serial').AsString;
node.Data := PNode; FrmDm.AQDepartment.Next;
end;
FrmDm.AQDepartment.Close;
if sNode = nil then
s1 := TreeView1.Items.GetFirstNode
else
s1 := sNode.getFirstChild; while s1<>nil do
begin
CreateTree(s1);
s1 := s1.getNextSibling;
end;
end;
var
s1: TTreeNode;
node : TTreeNode;
sql:string;
PNode: PNodeData;
begin
FrmDm.AQDepartment.Close;
FrmDm.AQDepartment.SQL.Clear; if( sNode = nil ) then sql := '0'
else sql := (PNodeData(sNode.Data)^).serial; FrmDm.AQDepartment.SQL.Text := 'select * from Department where parent = '''+ sql +''' and IsDeleted <> ''1'' '; FrmDm.AQDepartment.Open;
FrmDm.AQDepartment.First;
while not FrmDm.AQDepartment.Eof do
begin
New(PNode);
if( sNode = nil ) then
begin
node := TreeView1.Items.Add( sNode, FrmDm.AQDepartment.Fieldbyname( 'Name' ).AsString );
node.ImageIndex := 0;
end
else
begin
node := TreeView1.Items.AddChild( sNode, FrmDm.AQDepartment.Fieldbyname( 'Name' ).AsString );
node.ImageIndex := 1;
node.SelectedIndex := 1;
end; PNode^.serial := FrmDm.AQDepartment.FieldByName( 'serial').AsString;
node.Data := PNode; FrmDm.AQDepartment.Next;
end;
FrmDm.AQDepartment.Close;
if sNode = nil then
s1 := TreeView1.Items.GetFirstNode
else
s1 := sNode.getFirstChild; while s1 <>nil do
begin
CreateTree(s1);
s1 := s1.getNextSibling;
end;
end;