1. 程式人生 > WINDOWS開發 >delphi 儲存 和 開啟 TREE VIEW的節點已經展開的狀態

delphi 儲存 和 開啟 TREE VIEW的節點已經展開的狀態

如果每次開啟後能自動讀取上次展開的狀態就會非常快捷

下載地址:

技術分享圖片

技術分享圖片

實現方法

將已經展開的節點索引 放在一個文字中
最後選中的那個節點索引放在最後一位
然後通過下面這個程式碼這實現

{
TreeView1.Items[0].Expand(False);//按節點索引 展開節點一級
TreeView1.Select(TreeView1.Items[1],[]);// 按節點索引 選中節點

}

TreeView1.Selected.AbsoluteIndex; //選中的節點索引號


{
SaveTreeViewExplandState(TreeView1,‘TreeView.txt‘);
}
procedure SaveTreeViewExplandState(TreeView: TTreeView; FileName: string);

var
List: TStringList;
i: Integer;
begin
List := TStringList.Create;
With TreeView do
begin
for i := 0 to Items.Count - 1 do
begin
if Items.Item[i].Expanded then
List.Add(IntToStr(i));
end;
List.Add(IntToStr(Selected.AbsoluteIndex));
end;
List.SaveToFile(FileName);
List.free;
end;


{
LoadTreeViewExplandState(TreeView1,‘abc.txt‘);

}
procedure LoadTreeViewExplandState(TreeView: TTreeView; FileName: string);
var
List: TStringList;
i: Integer;
begin
List := TStringList.Create;
with List do
begin
List.LoadFromFile(FileName);

for i := 0 to Count - 2 do //最後一行放的是最後選中的那個節點索引
begin
TreeView.Items[StrToInt(List[i])].Expand(False);
end;
TreeView.Select(TreeView.Items[StrToInt(List[Count - 1])],[]);

free;
end;
end;

{
   TreeView1.Items[0].Expand(False); //按節點索引 展開節點一級
   TreeView1.Select(TreeView1.Items[1],[]);// 按節點索引 選中節點
   
}
   TreeView1.Selected.AbsoluteIndex; //選中的節點索引號
  
  
 儲存TREEVIEW狀態程式碼
{
  SaveTreeViewExplandState(TreeView1,‘TreeView.txt‘);
}
procedure SaveTreeViewExplandState(TreeView: TTreeView; FileName: string);
var
  List: TStringList;
  i: Integer;
begin
  List := TStringList.Create;
  With TreeView do
  begin
    for i := 0 to Items.Count - 1 do
    begin
      if Items.Item[i].Expanded then
        List.Add(IntToStr(i));
    end;
    List.Add(IntToStr(Selected.AbsoluteIndex));
  end;
  List.SaveToFile(FileName);
  List.free;
end;
  
 載入TREEVIEW狀態程式碼
{
LoadTreeViewExplandState(TreeView1,‘abc.txt‘);
}
procedure LoadTreeViewExplandState(TreeView: TTreeView; FileName: string);
var
  List: TStringList;
  i: Integer;
begin
  List := TStringList.Create;
  with List do
  begin
    List.LoadFromFile(FileName);
 
    for i := 0 to Count - 2 do //最後一行放的是最後選中的那個節點索引
    begin
      TreeView.Items[StrToInt(List[i])].Expand(False);
    end;
    TreeView.Select(TreeView.Items[StrToInt(List[Count - 1])],[]);
    free;
  end;
end;