2016-01-24 92 views
0

我想保存到.ini文件并从保存的ini文件中填充checklistbox项目之后。我有2个列表框状...将检查项目保存并加载到.ini文件

首先列表框包含表:

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

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

第二个列表框包含表中的字段:

CARS

- Car_ID 
- Car_Name 
- Car_LicNum 
- Car_Color etc.. 

USERS

  • USER_ID
  • 的User_Name
  • USER_PASSWORD等..

enter image description here

任何人都可以帮助我,我怎么能保存所有选中的项目(从checklistbox 1和checklistbox2)到.ini文件?在我如何加载和填充checklistboxes之后?

我做了第一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

保存第一个列表框之后,您可以为第一个列表框中的每个项目保存一个新的部分及其所有项目(在listbox2中),使该部分的名称与第一个列表框中的项目相同。只是一个逻辑放置它的情况。 –

+2

不要让您的业务模型依赖于GUI。使GUI与知道如何将相关位存储到ini文件的业务模型进行交互。稍后,业务模型可以从ini文件填充其内部存储,并按需与GUI交互以填充检查列表。 –

回答

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关于将INI文件建立在业务模型上而不是GUI上的要点。

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