2010-09-08 2 views
0

Привет Как я могу сохранить текущее состояние ленты. Чтобы я мог загружать ленту с тем же состоянием, открывая exe в следующий раз, используя Delphi?Что касается управления лентой в delphi

+1

Я думаю, что название плохо ... можете ли вы изменить, чтобы добавить более конкретный? – jachguate

ответ

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.

Если ваше приложение имеет другой способ управления пользователями (Database), сохраните состояние ленты в базе данных.

+0

-1 потому что вопрос о ленте, а не о том, как хранить информацию в реестре. Кроме того, вы рекомендуете хранить информацию в HKEY_LOCAL_MACHINE, и вы не упоминаете, что это требует повышения уровня приложения в современных окнах, поскольку обычный пользователь (даже администратор) не имеет достаточных прав для записи в HKLM) – jachguate

0

Я никогда не использовал стандартную ленту в Delphi .. но после моего комментария к @Ljubomir ответ, я решил немного расследовать, чтобы помочь вам.

Из исходного кода, глядя на то, как работает диалог настройки, я обнаружил, что лента привязана к TActionManager, которую я никогда не использовал заранее. Опять же, глядя на источник TCustomActionManager, я заметил методы SaveToFile/SaveToStream LoadFromFile/LoadFromStream, которые, я полагаю, это способ сохранить/загрузить информацию о состоянии ленты (action manager).

С другой стороны, TActionManager имеет свойство FileName. Если вы установите его, он автоматически загружает и сохраняет состояние ActionManager в надлежащее время.

Надеюсь, что это приносит свет вам.

Смежные вопросы