关于delphi中的Ribbon控件

时间:2010-09-08 07:47:40

标签: delphi ribbon-control

您好我如何保存Ribbon的当前状态这样我可以在下次使用Delphi打开exe时加载具有相同状态的功能区?

2 个答案:

答案 0 :(得分:0)

您可以使用Windows注册表在应用程序关闭时保存功能区的状态,然后在打开应用程序时恢复。

这是与注册管理机构合作的代码:

      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。

如果您的应用程序具有其他用户管理方式(数据库),请在数据库中保存功能区的状态。

答案 1 :(得分:0)

我从未使用Delphi中的标准功能区..但在我对@Ljubomir的回答后,我决定调查一下以帮助你。

从源代码中,查看自定义对话框的工作方式,我发现Ribbon与TActionManager绑定,这也是我以前从未使用过的。再看一下,看看TCustomActionManager的来源,我注意到SaveToFile / SaveToStream的LoadFromFile / LoadFromStream方法,我想是保存/加载功能区(动作管理器)状态信息的方法。

另一方面,TActionManager具有FileName属性。如果设置它,它会在适当的时间自动加载并保存ActionManager状态。

希望这能为你带来光明。