こんにちは、リボンの現在の状態を保存するにはどうすればよいですか。次に Delphi を使用して exe を開くときにリボンを同じ状態でロードできるようにするにはどうすればよいですか?
2 に答える
Delphiで標準のリボンを使用したことはありません..しかし、@Ljubomirの回答にコメントした後、少し調査することにしました。
ソース コードからカスタマイズ ダイアログの仕組みを調べたところ、リボンが TActionManager に関連付けられていることがわかりました。繰り返しますが、TCustomActionManager のソースを見ると、SaveToFile/SaveToStream LoadFromFile/LoadFromStream メソッドがリボン (アクション マネージャー) の状態情報を保存/ロードする方法であることに気付きました。
一方、TActionManager には FileName プロパティがあります。設定すると、ActionManager の状態が適切なタイミングで自動的にロードおよび保存されます。
これがあなたに光をもたらすことを願っています。
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_LOCAL_MACHINE の代わりに HKEY_CURREN_USER を使用します。
アプリケーションに別の方法でユーザー管理 (データベース) がある場合は、リボンの状態をデータベースに保存します。