如何从文件中读取和写入Delphi 2010 RibbonaApplicationMenubar最新项目第2部分
这个问题大约在3年前被问过,但只有一半得到了回答 原来的问题是: 接受的答案提供了足够的信息,这样您就可以知道如何保存mru列表,但没有关于如何成功重新加载的信息 这就是我现在拥有的 表单上的关闭事件调用saveDochHistory(),并执行它应该执行的操作如何从文件中读取和写入Delphi 2010 RibbonaApplicationMenubar最新项目第2部分,delphi,ribbon,mru,Delphi,Ribbon,Mru,这个问题大约在3年前被问过,但只有一半得到了回答 原来的问题是: 接受的答案提供了足够的信息,这样您就可以知道如何保存mru列表,但没有关于如何成功重新加载的信息 这就是我现在拥有的 表单上的关闭事件调用saveDochHistory(),并执行它应该执行的操作 procedure TfrmMain.SaveDocHistory; var ini : TIniFile; i : Integer; begin Ini := TIniFile.Create(ChangeFileExt(A
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()函数方法要么不适用于RibbonaApplicationMenubar,要么我尝试使用它的方式不正确。我已经在网上搜索过了,但我找到的都是对前面提到的线程的多个引用。如果有人成功地解决了这个问题的下半部分,我将不胜感激
顺便说一句,喜欢的标题后,我用Delphi2010为这个项目
谢谢 当我检查我的帖子是否有打字错误时,我想到了一个解决办法。这是答案 我需要将数据加载到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;
程序TfrmMain.LoadDocHistory;
变量
ini:tini文件;
n计数,i:整数;
sTmp:字符串;
开始
Ini:=tinfile.Create(ChangeFileExt(Application.ExeName,'.Ini');
尝试
nCount:=ini.ReadInteger('DocHistory','FileCount',0);
对于i:=0到Pred(nCount)do
开始
sTmp:=ini.ReadString('DocHistory','File'+IntToStr(i),'');
Ribbon1.AddRecentItem(sTmp)// 当我检查我的帖子是否有打字错误时,我想到了一个解决办法。这是答案
我需要将数据加载到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;
程序TfrmMain.LoadDocHistory;
变量
ini:tini文件;
n计数,i:整数;
sTmp:字符串;
开始
Ini:=tinfile.Create(ChangeFileExt(Application.ExeName,'.Ini');
尝试
nCount:=ini.ReadInteger('DocHistory','FileCount',0);
对于i:=0到Pred(nCount)do
开始
sTmp:=ini.ReadString('DocHistory','File'+IntToStr(i),'');
Ribbon1.AddRecentItem(sTmp)//可能重复的请不要故意问一个完全重复的问题。而是在原始问题上编辑答案或提供自己的答案。我建议您添加有用的代码作为原始问题的新答案。然后删除这个。在我输入这个的时候-我没有故意问这个问题。原来的问题已经闲置了3年多,只有1/2的问题得到了回答,因此是时候重新提问了,希望得到完整的答案。我只是在发布这篇文章后不久碰巧找到了答案。根据游戏规则,这仍然是一个骗局。可能的重复请不要故意问一个完全重复的问题。而是在原始问题上编辑答案或提供自己的答案。我建议您添加有用的代码作为原始问题的新答案。然后删除这个。在我输入这个的时候-我没有故意问这个问题。原来的问题已经闲置了3年多,只有1/2的问题得到了回答,因此是时候重新提问了,希望得到完整的答案。我只是在发布这篇文章后不久碰巧找到了答案。根据游戏规则,这仍然是一个骗局。