delphi 儲存 和 開啟 TREE VIEW的節點已經展開的狀態
阿新 • • 發佈:2020-04-14
如果每次開啟後能自動讀取上次展開的狀態就會非常快捷
下載地址:
實現方法
將已經展開的節點索引 放在一個文字中
最後選中的那個節點索引放在最後一位
然後通過下面這個程式碼這實現
{
TreeView1.Items[0].Expand(False);//按節點索引 展開節點一級
TreeView1.Select(TreeView1.Items[1],[]);// 按節點索引 選中節點
}
TreeView1.Selected.AbsoluteIndex; //選中的節點索引號
{
SaveTreeViewExplandState(TreeView1,‘TreeView.txt‘);
}
procedure SaveTreeViewExplandState(TreeView: TTreeView; FileName: string);
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])],[]);
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;