【问题标题】:Save and Load Checklistbox checked items to .ini file将 Checklistbox 选中的项目保存并加载到 .ini 文件
【发布时间】:2016-04-30 19:36:11
【问题描述】:

我想保存到 .ini 并在从保存的 ini 文件中填充复选框项目后。我有 2 个列表框,例如...

第一个列表框包含表格:

  • 汽车
  • 客户
  • 用户
  • 供应商

第二个列表框链接到第一个列表框,如果我单击 Cars 表并检查它,则以下数据将在第二个列表框上可见...

第二个列表框包含表格字段:

汽车

- Car_ID
- Car_Name
- Car_LicNum
- Car_Color etc..

用户

  • 用户 ID
  • 用户名
  • User_Password 等...

任何人都可以帮助我如何将所有选中的项目(从复选框 1 和复选框 2)保存到 .ini 文件?之后我如何加载并用它们填充复选框?

我为第一个复选框做了,但是...

procedure TForm1.btn_SaveClick(Sender: TObject);
begin
ini := TIniFile.Create('C:\checklistbox.ini');
  try
    for i := 0 to Checklistbox1.Items.Count - 1 do
      ini.WriteBool('items', Checklistbox1.Items[i], Checklistbox1.Checked[i]);
  finally
    ini.Free;
  end;
end;

将项目加载到 checklistbox1

procedure TForm1.btn_LoadClick(Sender: TObject);
begin
ini := TIniFile.Create('c:\checklistbox.ini');
  try
    ini.ReadSection('items', Checklistbox1.Items);
      for i := 0 to Checklistbox1.Items.Count - 1 do
        CheckListbox1.Checked[i] := ini.ReadBool('items', Checklistbox1.Items[i], False);
 finally
   ini.Free;
 end;
end;

我不知道如何保存 checklistbox2 中的项目链接到 checklistbox1 项目。我想在之后加载所有检查的项目。我目前正在使用 Delphi XE7。感谢您的回答!

【问题讨论】:

  • 保存第一个列表框后,您可以为第一个列表框中的每个项目保存一个新部分,其中所有项目(在 listbox2 中)使该部分的名称与第一个列表框中的项目相同。只是逻辑上放置它的一个案例。
  • 不要让您的业务模型依赖于 GUI。使 GUI 与知道如何将相关位存储到 ini 文件中的业务模型交互。之后,业务模型可以从 ini 文件填充其内部存储,并根据需要与 GUI 交互以填充检查列表。

标签: delphi delphi-xe delphi-xe7


【解决方案1】:

我猜你的问题是你对第二个列表框的内容发生变化的事实有所了解,因此出错的风险非常高。我同意这一点,因此答案是忽略列表框本身并专注于它们所代表的内容,并存储用户想要查看的数据——在这种情况下,我会使用字段名称——所以

ini.WriteString('File To View', 'Name', 'Cars');

对于字段

ini.WriteInteger('Cars', 'Count', 2);
ini.WriteString('Cars', 'Field 1', 'Cars_ID');
ini.WriteString('Cars', 'Field 2', 'Car_LICNUM');

我猜您只允许选中第一个复选框中的一个框。如果这不是真的,或者后来变得不是真的,你会像这样添加 count 和 'Name x' 参数

ini.WriteInteger('File To View', 'Count', 2);
ini.WriteString('File To View', 'Name 1', 'Cars');
ini.WriteString('File To View', 'Name 2', 'Users');

因此,以后更改 GUI 变得容易,使新程序向后兼容也是如此。这就是 LU RD 将您的 INI 文件基于您的业务模型而不是您的 GUI 的观点。

还请注意,您可以存储多个部分 - 实际上每个文件一个部分,但这并不重要,并且具有隐藏的好处,即 INI 文件“记住”用户最后选择的每个文件的字段。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-18
    • 2014-02-07
    • 2012-10-12
    • 2016-01-25
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    相关资源
    最近更新 更多