【问题标题】:How to save a Tlistview layout如何保存 Tlistview 布局
【发布时间】:2008-11-07 09:18:08
【问题描述】:

如何在 Delphi 2007 中保存 Tlistviews 布局?

我被要求编写一些代码以允许用户重新排序 TListview 中的列(以及我们应用程序中的所有 TListview),我使代码正常工作(通过操作列索引并将宽度设置为零以隐藏列不需要)但现在我需要一种方法来保存视图的状态何时形成退出。

最好的方法是什么?我考虑过序列化,但我不需要数据或排序顺序,这对我来说有点矫枉过正。

一些值得思考的事情 它需要基于每个用户 它需要灵活,以防我们在列表视图中间添加一个新列 不保证列标题是唯一的 列表视图名称在整个应用程序中可能不是唯一的

有什么想法吗?

【问题讨论】:

    标签: delphi tlistview


    【解决方案1】:

    如果您只想保存和加载数据的特定部分,您可以将其存储在 ini 或 xml 文件中。 可以将一般数据写入文件。列是另一个问题。您需要为每列找到一个唯一标识。 ini 可能是这样的:

    [Settings]
    
    [Col_1]
    position=1
    width=500
    title=hello world
    align=left
    sort=ascending
    
    .. etc for more fields and more columns.
    

    如果你使用listview辅助类,你只需要编写一次代码:

    TListviewHelper = class helper for TListView;
    public
      procedure SaveToFile(const AFilename: string);
      procedure LoadFromFile(const AFileName: string);
    end;
    
    procedure TListviewHelper.SaveToFile(const AFilename: string);
    var
      ini : TIniFile;
    begin
      ini := TIniFile.Create(AFileName);
      try
        // Save to ini file
      finally
        ini.Free;
      end;
    end;
    
    procedure TListviewHelper.LoadFromFile(const AFileName: string);
    var
      ini : TIniFile;
    begin
      ini := TIniFile.Create(AFileName);
      try
        // Load from ini file
      finally
        ini.Free;
      end;
    end;
    

    如果 TListviewHelper 在范围内,您可以访问额外的方法。

    【讨论】:

      【解决方案2】:

      我建议你从 Tlistview 继承(或者是否有 TCustomListView)来创建你自己的组件,类助手很好但非官方的。

      【讨论】:

      • 这如何回答有关如何存储布局的问题?
      【解决方案3】:

      也许存储列顺序的最简单方法是为每个列定义一个 ID 作为有意义的字符串,并以正确的顺序将列表存储在注册表中。 例如,假设您的列的顺序如下:

      Name | First name | Age | Job title
      

      那么注册表中存储的字符串可以是:

      "Name,FName,Age,JTitle"
      

      要存储在适当的注册表项中,在适当的键下(通常是HCKU\SOFTWARE\MyApplication,例如在键ColumnOrder 下)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-04-17
        • 2014-07-17
        • 2020-05-25
        • 2018-04-30
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多