Привет Как я могу сохранить текущее состояние ленты. Чтобы я мог загружать ленту с тем же состоянием, открывая exe в следующий раз, используя Delphi?Что касается управления лентой в delphi
ответ
Вы можете использовать реестр 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.
Если ваше приложение имеет другой способ управления пользователями (Database), сохраните состояние ленты в базе данных.
-1 потому что вопрос о ленте, а не о том, как хранить информацию в реестре. Кроме того, вы рекомендуете хранить информацию в HKEY_LOCAL_MACHINE, и вы не упоминаете, что это требует повышения уровня приложения в современных окнах, поскольку обычный пользователь (даже администратор) не имеет достаточных прав для записи в HKLM) – jachguate
Я никогда не использовал стандартную ленту в Delphi .. но после моего комментария к @Ljubomir ответ, я решил немного расследовать, чтобы помочь вам.
Из исходного кода, глядя на то, как работает диалог настройки, я обнаружил, что лента привязана к TActionManager, которую я никогда не использовал заранее. Опять же, глядя на источник TCustomActionManager, я заметил методы SaveToFile/SaveToStream LoadFromFile/LoadFromStream, которые, я полагаю, это способ сохранить/загрузить информацию о состоянии ленты (action manager).
С другой стороны, TActionManager имеет свойство FileName. Если вы установите его, он автоматически загружает и сохраняет состояние ActionManager в надлежащее время.
Надеюсь, что это приносит свет вам.
Я думаю, что название плохо ... можете ли вы изменить, чтобы добавить более конкретный? – jachguate