现有一个treeview,一个button,当button按下treeview展开一级,treeview全部展开后,button的caption改为收缩,按下后收缩一级,直到全部收缩,button的caption改为展开有代码最好
解决方案 »
- advstringgrid中SaveColSizes如何使用
- 程序员的最后归宿究竟是什么?
- delphi+access数据库记录写入问题!!!
- SQL????急
- SOS---一个刚用DELPHI做课程设计得大三学生得紧急求救!谁能救小妹一命,感激万分!
- 连接数据库的超时问题?
- 怎样取到两个日期差多少年?
- 问题没有解决,谁解决二贴一起结。SQL类型转换查询!
- 为什么我的OLEContainer总出现TOleSysError的错误呢:~~:救命哪:~~:
- 怎么样在DELPHI里用EXCEL的库来开发财务软件(OLE)请指教!
- 怎么判断某个字符串中指定字符的个数
- 我用reportbuid做數據庫報表,在打印預覽時,有什麼方法可以使預覽頁面中的那個打印圖標按鈕隱藏?
TreeView1.Selected.Expand(False);//选中节点单级展开
TreeView1.Selected.Collapse(True);//选中节点全部收缩
TreeView1.Selected.HasChildren;//是否有子节点
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;type
TForm1 = class(TForm)
Button1: TButton;
TreeView1: TTreeView;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
bdirect:boolean=true;//true表示展开,false表示合拢
iSign:integer=0;//进行到第几级了
iHint:integer;//treeview的深度
implementation{$R *.dfm}
(* 刚看了你的揭贴率很高才写的,呵呵
前提条件:treeview排布 跟结点
--1
--11
--12
--2
--21
--22
--3
--31
--32
*)
function SeachTvDepth(index:ttreeview):Integer;
var item:ttreenode;
i:Integer;
temp:integer;
begin
result:=0;
for i:=0 to index.Items.Count-1 do
begin
item:=index.Items.Item[i];
temp:=0;
if item.HasChildren then continue;
while item<>nil do
begin
item:=item.Parent ;
inc(temp);
end;
if temp>result then result:=temp;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Button1.Caption:='展开';
TreeView1.FullCollapse ;
iHint:=SeachTvDepth(TreeView1);
if iHint<1 then application.Terminate ;
end;procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
iTemp:integer;
Item,Item1:ttreenode;
begin
if bdirect then//展开
begin
inc(iSign);
if iSign=iHint then
begin
Button1.Caption:='收缩';
bdirect:=not bdirect;
//exit;
end;
for i:=0 to TreeView1.Items.Count-1 do
begin
Item:=TreeView1.Items.item[i];
Item1:=Item;
//-----------------------------------------
iTemp:=0;
while Item1<>nil do
begin
Item1:=Item1.Parent ;
inc(iTemp);
end;
if iTemp=iSign then Item.Expand(false);
end;
end
else
begin
dec(iSign);
if iSign=0 then
begin
Button1.Caption:='展开';
bdirect:=not bdirect;
exit;
end;
for i:=0 to TreeView1.Items.Count-1 do
begin
Item:=TreeView1.Items.item[i];
Item1:=Item;
//-----------------------------------------
iTemp:=0;
while Item1<>nil do
begin
Item1:=Item1.Parent ;
inc(iTemp);
end;
if (iTemp=iSign)then Item.Collapse(false);
end;
end;
end;end.