2012-10-28 29 views
0

這個問題以前問了3年前,但只有一半的答案。如何讀寫Delphi 2010 RibbonApplicationMenuBar最近的項目來自/到一個文件Part2

原來的問題是在這裏: How To Read and Write Delphi 2010 RibbonApplicationMenuBar Recent Items To A File 和接受的答案提供了足夠的信息,以便您能弄清楚如何保存MRU列表,但是,如何成功地重新加載它沒有任何信息。

這是我目前所擁有的。

SaveDocHistory()被表單上的關閉事件調用,並執行它應該做的事情。

procedure TfrmMain.SaveDocHistory; 
var 
    ini : TIniFile; 
    i : Integer; 
begin 
    Ini := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')); 
    try 
    ini.EraseSection('DocHistory'); 
    ini.WriteString('DocHistory', 'FileCount', IntToStr(RibbonApplicationMenuBar1.RecentItems.Count)); 

    for i := 0 to Pred(RibbonApplicationMenuBar1.RecentItems.Count) do 
     ini.WriteString('DocHistory', 'File' + IntToStr(i), 
         RibbonApplicationMenuBar1.RecentItems.Items[i].Caption); 
    finally 
    ini.Free; 
    end; 
end; 

得到的ini文件條目是這樣的:

[DocHistory] 
FileCount=3 
File0=F:\Projects\StevenTest\Test02.rtf 
File1=F:\Projects\StevenTest\Test1.rtf 
File2=F:\Projects\StevenTest\Test01.rtf 

問題是重裝RibbonApplicationMenuBar的RecentItems名單。我的代碼'出現'工作,因爲這些項目在最近使用的應用程序部分列出 - 但不像'真正'mru項目,他們不響應點擊事件。任何添加到mru列表中的新項目都可以工作,但不是我的「植入物」。所以看來我正在重新加載字幕,但沒有文件信息。這是我的代碼,一個由持有RibbonApplicationMenuBar的表單的FormCreate事件調用的函數。

procedure TfrmMain.LoadDocHistory; 
var 
    ini : TIniFile; 
    nCount, i : Integer; 
    sTmp : string; 
begin 
    Ini := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')); 
    try 
    nCount := ini.ReadInteger('DocHistory', 'FileCount', 0); 

    for i := 0 to Pred(nCount) do 
    begin 
     sTmp := ini.ReadString('DocHistory', 'File' + IntToStr(i), ''); 
     RibbonApplicationMenuBar1.RecentItems.Add.Caption := sTmp; 
    end; 

    finally 
    ini.Free; 
    end; 
end; 

我試圖破譯Delphi的幫助,但在AddRecentItem()函數的方法,他們提要麼不適用於RibbonApplicationMenuBar或者我在我試圖使用它的方式已經不正確。我搜索了網頁,但我發現的所有內容都是對前面提到的線程的多個引用。如果有人已經成功解決了這個問題的後半部分,我將不勝感激。

順便說一句,我正在使用Delphi2010這個項目的帖子的標題。

謝謝..

+0

可能的重複[如何讀取和寫入2010年RibbonApplicationMenuBar最近的項目到一個文件](http://stackoverflow.com/questions/1402373/how-to-read-and-write-delphi-2010-ribbonapplicationmenubar- latest-items-to-a-fil) –

+0

請不要在知情的情況下提出一個完全重複的問題。相反,要麼在原始問題上編輯答案,要麼提供自己的答案。我建議您將有用的代碼添加爲原始問題的新答案。然後刪除這個。 –

+0

當我進入這個時候 - 我沒有故意問這個問題。原來的問題已經閒置了3年多,只有1/2的答案被回答了,所以現在是時候重新提問,希望得到完整的答案。發佈此消息後不久我碰巧找到答案。 – TheSteven

回答

4

當我檢查我的文章錯別字我想到了一些東西,竟然是解決方案。這是答案...

我需要將數據加載到ribbon1子組件。 看起來它現在工作正常。

procedure TfrmMain.LoadDocHistory; 
var 
    ini : TIniFile; 
    nCount, i : Integer; 
    sTmp : string; 
begin 
    Ini := TIniFile.Create(ChangeFileExt(Application.ExeName,'.ini')); 
    try 
    nCount := ini.ReadInteger('DocHistory', 'FileCount', 0); 

    for i := 0 to Pred(nCount) do 
    begin 
     sTmp := ini.ReadString('DocHistory', 'File' + IntToStr(i), ''); 
     Ribbon1.AddRecentItem(sTmp); //<<<<<<<<<< 
    end; 
    finally 
    ini.Free; 
    end; 
end; 

現在被授予可以有一個FileExists()檢查和其他錯誤處理,但我現在需要的是得到這個工作。

相關問題