我想保存到.ini并在保存的ini文件中填写checklistbox项目。我有2个列表框,如...
第一个列表框包含表格:
第二个列表框链接到第一个,如果我点击Cars表并检查它,下面的数据将在第二个checklistbox上可见...
第二个列表框包含表格字段:
CARS
- Car_ID
- Car_Name
- Car_LicNum
- Car_Color etc..
用户
任何人都可以帮助我如何将所有选中的项目(从checklistbox 1和checklistbox2)保存到.ini文件?之后如何加载和填写清单箱?
我为第一个checklistbox做了但是......
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。谢谢你的答案!
答案 0 :(得分:0)
我猜你的问题是关注第二个列表框的内容发生变化这一事实,因此出错的风险非常高。我同意这一点,所以答案是忽略列表框本身并专注于它们所代表的内容,因此存储用户想要看到的数据 - 在这种情况下我会使用字段名称 - 所以
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');
我猜你只允许检查第一个复选框中的一个方框。如果那不是真的,或者后来变为不正确,你会添加计数和名称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在您的业务模型上而不是GUI上建立INI文件的重点。
另请注意,您可以存储多个部分 - 实际上每个部分对应一个部分,但这并不重要,并且具有INI文件记忆的隐藏优势。用户最后选择每个文件的字段。