给你一个例子:function GetNodeLevel(sFormat,sCode:string):integer;//获得节点层数var i,level,iLen:integer;begin level:=-1 ; iLen:=0; if (sFormat<>'') and (sCode<>'') then for i:=1 to Length(sFormat) do //分析编码格式,找出当前代码层次 begin iLen:=iLen+StrToInt(sFormat[i]); if Length(sCode)=iLen then begin level:=i; break; end; end; result:=level;end;procedure LoadTree(tree:TTreeview;treeDB:TDataSet;id,mc:string);//初始化树var curID,nodeTxt:string; level:integer; mynode:array[0..3] of TTreenode;begin//初始化变量 //Screen.Cursor:=crHourGlass; tree.Enabled:=True; tree.Items.Clear; level:=0 ; tree.items.clear;//设置根节点 mynode[level]:=tree.items.add(Tree.Topitem,cTreeRootTxt); mynode[level].ImageIndex:=1;//遍历数据表,利用编码字段记录排序规律,依次添加树节点 with treeDB do begin try if not Active then open; first; while not Eof do begin curID:=trim(FieldByName(id).AsString); nodeTxt:=curID+'-'+trim(FieldByName(mc).AsString); level:=GetNodeLevel(cTreeCodeFormat,curID);//这里返回代码的层次数 if level>0 then begin //增加下一节点时,用添加子节点的方法可轻松实现节点间的层次关系 //注意:这里的父节点是用当前节点的上一级节点mynode[level-1] mynode[level]:=tree.items.addchild(mynode[level-1],nodeTxt); mynode[level].ImageIndex:=2; end; next;//下一条记录 end; finally; close; End; mynode[0].expand(False); Screen.Cursor:=crDefault; end;end;
procedure TForm1.Button1Click(Sender: TObject); var i,j:integer; s,s1:string; node,subnode:TTreeNode; m,n,m1,n1:integer; begin m1:=0; form1.TreeView1.Items.Clear; form1.Table1.Open; form1.Table1.First; i:=form1.Table1.RecordCount; if i>0 then begin for j:=0 to i-1 do begin s:=form1.Table1.FieldValues['pareant_id']; s1:=form1.Table1.FieldValues['id']; m:=form1.TreeView1.Items.Count; if m=0 then begin node:=form1.TreeView1.Items.Add(nil,s); subnode:=form1.TreeView1.Items.AddChild(node,s1); end else begin for n:=0 to m-1 do begin if form1.TreeView1.Items.Item[n].Text=s then begin m1:=m1+1; n1:=n; end; end; if m1=0 then begin node:=form1.TreeView1.Items.Add(nil,s); subnode:=form1.TreeView1.Items.AddChild(node,s1); end else begin subnode:=form1.TreeView1.Items.AddChild(form1.TreeView1.Items.Item[n1],s1); end; end; m1:=0; form1.Table1.Next; end; end; end;
那么上面的代码坐一下修改就可以了 要设置treeview的images为imagelist1procedure TForm1.Button1Click(Sender: TObject); var i,j:integer; s,s1:string; node,subnode:TTreeNode; m,n,m1,n1:integer; begin m1:=0; form1.TreeView1.Items.Clear; form1.Table1.Open; form1.Table1.First; i:=form1.Table1.RecordCount; if i>0 then begin for j:=0 to i-1 do begin s:=form1.Table1.FieldValues['pareant_id']; s1:=form1.Table1.FieldValues['id']; m:=form1.TreeView1.Items.Count; if m=0 then begin node:=form1.TreeView1.Items.Add(nil,s); node.ImageIndex:=0;——————————————————加上这一句 subnode:=form1.TreeView1.Items.AddChild(node,s1); subnode.ImageIndex:=1;————————————————加上这一句 end else begin for n:=0 to m-1 do begin if form1.TreeView1.Items.Item[n].Text=s then begin m1:=m1+1; n1:=n; end; end; if m1=0 then begin node:=form1.TreeView1.Items.Add(nil,s); subnode:=form1.TreeView1.Items.AddChild(node,s1); end else begin subnode:=form1.TreeView1.Items.AddChild(form1.TreeView1.Items.Item[n1],s1); end; end; m1:=0; form1.Table1.Next; end; end; end;
不好意思 少加了三句 procedure TForm1.Button1Click(Sender: TObject); var i,j:integer; s,s1:string; node,subnode:TTreeNode; m,n,m1,n1:integer; begin m1:=0; form1.TreeView1.Items.Clear; form1.Table1.Open; form1.Table1.First; i:=form1.Table1.RecordCount; if i>0 then begin for j:=0 to i-1 do begin s:=form1.Table1.FieldValues['pareant_id']; s1:=form1.Table1.FieldValues['id']; m:=form1.TreeView1.Items.Count; if m=0 then begin node:=form1.TreeView1.Items.Add(nil,s); node.ImageIndex:=0;——————————————加上这句 subnode:=form1.TreeView1.Items.AddChild(node,s1); subnode.ImageIndex:=1;——————————————加上这句 end else begin for n:=0 to m-1 do begin if form1.TreeView1.Items.Item[n].Text=s then begin m1:=m1+1; n1:=n; end; end; if m1=0 then begin node:=form1.TreeView1.Items.Add(nil,s); node.ImageIndex:=0;——————————————加上这句 subnode:=form1.TreeView1.Items.AddChild(node,s1); subnode.ImageIndex:=1;——————————————加上这句 end else begin subnode:=form1.TreeView1.Items.AddChild(form1.TreeView1.Items.Item[n1],s1); subnode.ImageIndex:=1;——————————————加上这句 end; end; m1:=0; form1.Table1.Next; end; end; end;
3. procedure TForm1.Button1Click(Sender: TObject); var i,j:integer; s,s1:string; node,subnode:TTreeNode; m,n,m1,n1:integer; begin m1:=0; form1.TreeView1.Items.Clear; form1.Table1.Open; form1.Table1.First; i:=form1.Table1.RecordCount; if i>0 then begin for j:=0 to i-1 do begin s:=form1.Table1.FieldValues['pareant_id']; s1:=form1.Table1.FieldValues['id']; m:=form1.TreeView1.Items.Count; if m=0 then begin node:=form1.TreeView1.Items.Add(nil,s); node.ImageIndex:=0; node.SelectedIndex:=2;————————————加上这句 subnode:=form1.TreeView1.Items.AddChild(node,s1); subnode.ImageIndex:=1; subnode.SelectedIndex:=3;————————————加上这句 end else begin for n:=0 to m-1 do begin if form1.TreeView1.Items.Item[n].Text=s then begin m1:=m1+1; n1:=n; end; end; if m1=0 then begin node:=form1.TreeView1.Items.Add(nil,s); node.ImageIndex:=0; node.SelectedIndex:=2;————————————加上这句 subnode:=form1.TreeView1.Items.AddChild(node,s1); subnode.ImageIndex:=1; subnode.SelectedIndex:=3;————————————加上这句 end else begin subnode:=form1.TreeView1.Items.AddChild(form1.TreeView1.Items.Item[n1],s1); subnode.ImageIndex:=1; subnode.SelectedIndex:=3;————————————加上这句 end; end; m1:=0; form1.Table1.Next; end; end; end;
ImageIndex:不選中時圖標序號
StateIndex﹕圖標序號始終不變
SelectedIndex﹕選中時圖標序號
第一个我也想知道。
var
i,j:integer;
s,s1:string;
node,subnode:TTreeNode;
m,n,m1,n1:integer;
begin
m1:=0;
form1.TreeView1.Items.Clear;
form1.Table1.Open;
form1.Table1.First;
i:=form1.Table1.RecordCount;
if i>0 then
begin
for j:=0 to i-1 do
begin
s:=form1.Table1.FieldValues['pareant_id'];
s1:=form1.Table1.FieldValues['id'];
m:=form1.TreeView1.Items.Count;
if m=0 then
begin
node:=form1.TreeView1.Items.Add(nil,s);
subnode:=form1.TreeView1.Items.AddChild(node,s1);
end
else
begin
for n:=0 to m-1 do
begin
if form1.TreeView1.Items.Item[n].Text=s then
begin
m1:=m1+1;
n1:=n;
end;
end;
if m1=0 then
begin
node:=form1.TreeView1.Items.Add(nil,s);
subnode:=form1.TreeView1.Items.AddChild(node,s1);
end
else
begin
subnode:=form1.TreeView1.Items.AddChild(form1.TreeView1.Items.Item[n1],s1);
end;
end;
m1:=0;
form1.Table1.Next;
end;
end;
end;
要设置treeview的images为imagelist1procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
s,s1:string;
node,subnode:TTreeNode;
m,n,m1,n1:integer;
begin
m1:=0;
form1.TreeView1.Items.Clear;
form1.Table1.Open;
form1.Table1.First;
i:=form1.Table1.RecordCount;
if i>0 then
begin
for j:=0 to i-1 do
begin
s:=form1.Table1.FieldValues['pareant_id'];
s1:=form1.Table1.FieldValues['id'];
m:=form1.TreeView1.Items.Count;
if m=0 then
begin
node:=form1.TreeView1.Items.Add(nil,s);
node.ImageIndex:=0;——————————————————加上这一句
subnode:=form1.TreeView1.Items.AddChild(node,s1);
subnode.ImageIndex:=1;————————————————加上这一句
end
else
begin
for n:=0 to m-1 do
begin
if form1.TreeView1.Items.Item[n].Text=s then
begin
m1:=m1+1;
n1:=n;
end;
end;
if m1=0 then
begin
node:=form1.TreeView1.Items.Add(nil,s);
subnode:=form1.TreeView1.Items.AddChild(node,s1);
end
else
begin
subnode:=form1.TreeView1.Items.AddChild(form1.TreeView1.Items.Item[n1],s1);
end;
end;
m1:=0;
form1.Table1.Next;
end;
end;
end;
少加了三句
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
s,s1:string;
node,subnode:TTreeNode;
m,n,m1,n1:integer;
begin
m1:=0;
form1.TreeView1.Items.Clear;
form1.Table1.Open;
form1.Table1.First;
i:=form1.Table1.RecordCount;
if i>0 then
begin
for j:=0 to i-1 do
begin
s:=form1.Table1.FieldValues['pareant_id'];
s1:=form1.Table1.FieldValues['id'];
m:=form1.TreeView1.Items.Count;
if m=0 then
begin
node:=form1.TreeView1.Items.Add(nil,s);
node.ImageIndex:=0;——————————————加上这句
subnode:=form1.TreeView1.Items.AddChild(node,s1);
subnode.ImageIndex:=1;——————————————加上这句
end
else
begin
for n:=0 to m-1 do
begin
if form1.TreeView1.Items.Item[n].Text=s then
begin
m1:=m1+1;
n1:=n;
end;
end;
if m1=0 then
begin
node:=form1.TreeView1.Items.Add(nil,s);
node.ImageIndex:=0;——————————————加上这句
subnode:=form1.TreeView1.Items.AddChild(node,s1);
subnode.ImageIndex:=1;——————————————加上这句
end
else
begin
subnode:=form1.TreeView1.Items.AddChild(form1.TreeView1.Items.Item[n1],s1);
subnode.ImageIndex:=1;——————————————加上这句
end;
end;
m1:=0;
form1.Table1.Next;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
s,s1:string;
node,subnode:TTreeNode;
m,n,m1,n1:integer;
begin
m1:=0;
form1.TreeView1.Items.Clear;
form1.Table1.Open;
form1.Table1.First;
i:=form1.Table1.RecordCount;
if i>0 then
begin
for j:=0 to i-1 do
begin
s:=form1.Table1.FieldValues['pareant_id'];
s1:=form1.Table1.FieldValues['id'];
m:=form1.TreeView1.Items.Count;
if m=0 then
begin
node:=form1.TreeView1.Items.Add(nil,s);
node.ImageIndex:=0;
node.SelectedIndex:=2;————————————加上这句
subnode:=form1.TreeView1.Items.AddChild(node,s1);
subnode.ImageIndex:=1;
subnode.SelectedIndex:=3;————————————加上这句
end
else
begin
for n:=0 to m-1 do
begin
if form1.TreeView1.Items.Item[n].Text=s then
begin
m1:=m1+1;
n1:=n;
end;
end;
if m1=0 then
begin
node:=form1.TreeView1.Items.Add(nil,s);
node.ImageIndex:=0;
node.SelectedIndex:=2;————————————加上这句
subnode:=form1.TreeView1.Items.AddChild(node,s1);
subnode.ImageIndex:=1;
subnode.SelectedIndex:=3;————————————加上这句
end
else
begin
subnode:=form1.TreeView1.Items.AddChild(form1.TreeView1.Items.Item[n1],s1);
subnode.ImageIndex:=1;
subnode.SelectedIndex:=3;————————————加上这句
end;
end;
m1:=0;
form1.Table1.Next;
end;
end;
end;
谢谢了