DELPHI 如何打开和 保存 TREEVIEW 的状态

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DELPHI 如何打开和 保存 TREEVIEW 的状态相关的知识,希望对你有一定的参考价值。

默认的加载的样子是这样子的

TREEVIEW 展开后的状态是这样的

已展开的节点
选中 选中的那个节点


我要在加载TREEVIEW的文本时,恢复成这个样子
问题已经解决了

http://www.cnblogs.com/xe2011/p/3388430.html

  实现方法
  
将已经展开的节点索引 放在一个文本中
最后选中的那个节点索引放在最后一位
然后通过下面这个代码这实现

   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;

参考技术A 每选中一个选项时记录一下位置,在加载时读出这个位置并指向这个位置。 参考技术B 建议你保存成xml,这样恢复时也容易

delphi 如何在不打开saveDialog对话框的前提下保存文件

我要将一个数据集中的所选数据行另存到指定的目录里面。如何在不打开saveDialog对话框的前提下保存文件。请高手指教,图为我写的代码但是保存每行数据是都弹出对话框。

参考技术A 删除 if dlgsave1.execute then
将下一行的.SavetoFile(dlgSave1.FileName)
改为 .SaveToFile(FieldByName('AttachName').AsString)
或 .SaveToFile(PrdWSDN.cdsDown.FieldByName('Remark').Asstring+"\"+FieldByName('AttachName').AsString)
参考技术B 指定路径保存即可。把savedlg注释掉追问

朋友可否详细解说,最好有代码示范一下,谢谢!

本回答被提问者采纳

以上是关于DELPHI 如何打开和 保存 TREEVIEW 的状态的主要内容,如果未能解决你的问题,请参考以下文章

Delphi下Treeview控件基于节点编号的访问

Delphi下Treeview控件基于节点编号的访问

Delphi TreeView 问题

delphi 请问在treeview控件中怎样判断单击一个项目实现某些功能?

在Delphi中如何利用treeview进行视频播放

delphi中的treeview控件如何取到选择节点的索引号?