這個問題以前問了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這個項目的帖子的標題。
謝謝..
可能的重複[如何讀取和寫入2010年RibbonApplicationMenuBar最近的項目到一個文件](http://stackoverflow.com/questions/1402373/how-to-read-and-write-delphi-2010-ribbonapplicationmenubar- latest-items-to-a-fil) –
請不要在知情的情況下提出一個完全重複的問題。相反,要麼在原始問題上編輯答案,要麼提供自己的答案。我建議您將有用的代碼添加爲原始問題的新答案。然後刪除這個。 –
當我進入這個時候 - 我沒有故意問這個問題。原來的問題已經閒置了3年多,只有1/2的答案被回答了,所以現在是時候重新提問,希望得到完整的答案。發佈此消息後不久我碰巧找到答案。 – TheSteven