初始化图标
procedure TreeImageInit;
var
i: Integer;
begin
with tv1 do
begin
for i := 0 to Items.Count - 1 do
begin
Items[i].ImageIndex := 2;
Items[i].SelectedIndex := 5;
Items[i].StateIndex := -1;
end;
end;
end;
除了选中的节点,其他关闭
procedure TreeCollapse(node: TTreeNode);
var
icount : integer;
begin
tv1.Items.EndUpdate;
for icount := 0 to tv1.Items.Count-1 do
begin
if tv1.Items[icount]<>node then
tv1.Items[icount].Expanded:= False
else
tv1.Items[icount].Expanded:= True;
end;
tv1.Items.EndUpdate;
end;
创建节点
type
PNodeInfo=^TNodeInfo; //treeview使用
TNodeInfo=record
RootCode:string;
ChildCode:string;
name:string;
end;
procedure TreeUnitDisp;
var
RootNode,BootNode:TTreeNode; //根结点
BootNodeInfo:PNodeInfo; //根结点信息
begin
with cdsUnit do
begin
tv1.Items.Clear;
First;
while not eof do
begin
New(BootNodeInfo);
BootNodeInfo^.RootCode := Trim(FieldByName('code').AsString);
BootNodeInfo^.ChildCode := Trim(FieldByName('unit_type').AsString);
BootNodeInfo^.name := Trim(FieldByName('name').AsString);
RootNode:=tv1.Items.AddChildObject(nil,(BootNodeInfo^.name),BootNodeInfo); //添加根结点,并关联根结点信息
TreeItemDisp(BootNodeInfo^.RootCode,RootNode);
Next;
end;
Close;
end;
end;
procedure TreeItemDisp(unit_code: string; ParentNode: TTreeNode);
var
ChildNode:TTreeNode; //孩子结点
ChildNodeInfo:PNodeInfo; //孩子结点信息
begin
try
try
with cdsIten do
begin
Close;
Params.ParamByName('exec_unit').Value:= unit_code;
Open;
First;
while not Eof do
begin
New(ChildNodeInfo);
ChildNodeInfo^.RootCode :=FieldByName('charge_code').AsString;
ChildNodeInfo^.ChildCode:=FieldByName('exec_unit').AsString;
ChildNodeInfo^.name :=FieldByName('name').AsString;
ChildNode:=tv1.Items.AddChildObject(ParentNode,(ChildNodeInfo^.name),ChildNodeInfo); //添加孩子结点,并关联孩子结点信息
// ChildNodeInfo:=nil;
Next;
end;
Close;
end;
except
on e:Exception do
begin
raise Exception.Create('创建二级目录失败');
end;
end;
finally
end;
end;