2010-09-08 5 views
0

Salut Comment puis-je enregistrer l'état actuel du ruban Pour que je puisse charger le ruban avec le même état tout en ouvrant l'exe la prochaine fois en utilisant Delphi?Concernant les contrôles du ruban dans Delphi

+1

Je pense que le titre est mauvais ... pouvez-vous éditer pour en mettre un plus spécifique? – jachguate

Répondre

0

Vous pouvez utiliser le Registre Windows pour enregistrer l'état du ruban lorsque l'application se ferme, puis restaurer lors de l'ouverture de l'application.

Ce code est le travail avec Registries:

 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; 

État registre dans la liste des utilisations.

Exemple:

SaveStringToRegistry('Software\Company\Application', 'Left','20',HKEY_LOCAL_MACHINE); 
    left := LoadStringFromRegistry('Software\Company\Application', 'Left','',HKEY_LOCAL_MACHINE); 

Si vous voulez enregistrer l'état pour chaque utilisateur de Windows utilisent HKEY_CURREN_USER au lieu de HKEY_LOCAL_MACHINE.

Si votre application a un autre mode de gestion des utilisateurs (base de données), enregistrez l'état du ruban dans la base de données.

+0

-1 parce que la question concerne le ruban, pas la façon de stocker des informations dans le registre. En outre, vous recommandez de stocker des informations sous HKEY_LOCAL_MACHINE, et vous ne mentionnez pas cela nécessite une élévation de l'application dans les fenêtres modernes, car un utilisateur normal (même un administrateur) n'a pas assez de droits pour écrire dans HKLM) – jachguate

0

Je n'ai jamais utilisé le ruban standard dans Delphi .. mais après mon commentaire à @Ljubomir répondre, j'ai décidé d'enquêter un peu pour vous aider. A partir du code source, en regardant le fonctionnement de la boîte de dialogue de personnalisation, j'ai découvert que Ribbon est lié à TActionManager, que je n'ai jamais utilisé auparavant. Encore une fois, en regardant la source de TCustomActionManager, j'ai remarqué les méthodes SaveToFile/SaveToStream LoadFromFile/LoadFromStream je suppose est le moyen de sauvegarder/charger le ruban (gestionnaire d'actions) des informations d'état. D'un autre côté, TActionManager possède une propriété FileName. En revanche, le TActionManager possède une propriété FileName.

Si vous le définissez, il charge et enregistre automatiquement l'état ActionManager aux moments appropriés.

Espérons que cela vous apporte de la lumière.

Questions connexes