2016-01-24 88 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文件「記住」每個文件的用戶最後選擇字段的隱藏好處。