关于delphi中的功能区控件
您好,我如何保存Ribbon的当前状态,以便下次使用Delphi打开exe时加载具有相同状态的Ribbon?您可以在应用程序关闭时使用Windows注册表保存Ribbon的状态,然后在打开应用程序时还原 这是使用注册表的代码:关于delphi中的功能区控件,delphi,ribbon-control,Delphi,Ribbon Control,您好,我如何保存Ribbon的当前状态,以便下次使用Delphi打开exe时加载具有相同状态的Ribbon?您可以在应用程序关闭时使用Windows注册表保存Ribbon的状态,然后在打开应用程序时还原 这是使用注册表的代码: function LoadStringFromRegistry(sKey, sItem, sDefVal: string; RootKey : HKEY = HKEY_CURRENT_USER): string; var Reg : TRe
function LoadStringFromRegistry(sKey, sItem,
sDefVal: string; RootKey : HKEY = HKEY_CURRENT_USER): string;
var
Reg : TRegistry;
begin
Reg := TRegistry.Create(KEY_READ); // REMOVE
try
Reg.RootKey := RootKey;
if Reg.OpenKey(sKey, false) then
begin
Result:=Reg.ReadString(sItem);
Reg.CloseKey;
end
else
Result:='';
finally
Reg.Free;
end;
end;
procedure SaveStringToRegistry(sKey, sItem, sVal : string; RootKey : HKEY = HKEY_LOCAL_MACHINE);
var
Reg: TRegistry;
begin
Reg := TRegistry.Create(KEY_READ or KEY_WRITE);
try
Reg.RootKey := RootKey;
if Reg.OpenKey(sKey, true) then
begin
reg.WriteString(sItem, sVal);
Reg.CloseKey;
end;
finally
reg.Free;
end;
end;
使用列表中的状态注册表
样本:
SaveStringToRegistry('Software\Company\Application', 'Left','20',HKEY_LOCAL_MACHINE);
left := LoadStringFromRegistry('Software\Company\Application', 'Left','',HKEY_LOCAL_MACHINE);
如果要为每个Windows用户保存状态,请使用HKEY_CURREN_user而不是HKEY_LOCAL_MACHINE
如果您的应用程序有其他用户管理方式(数据库),请在数据库中保存Ribbon的状态。我从未在Delphi中使用过标准Ribbon。。但在我对@Ljubomir答案发表评论之后,我决定做一些调查来帮助你 从源代码来看,通过查看自定义对话框的工作方式,我发现Ribbon与TActionManager绑定在一起,这也是我以前从未使用过的。再次,查看TCustomActionManager的源代码,我注意到SaveToFile/SaveToStream LoadFromFile/LoadFromStream方法是保存/加载功能区(操作管理器)状态信息的方法 另一方面,TActionManager有一个FileName属性。如果设置,它会在适当的时间自动加载并保存ActionManager状态
希望这能给您带来启示。-1因为问题是关于ribbon,而不是关于如何在注册表中存储信息。此外,您建议将信息存储在HKEY_LOCAL_机器下,您不需要提及这一点,因为普通用户(甚至管理员)没有足够的权限写入HKLM)我认为标题不好。。。你能编辑一个更具体的吗?