TXMLPropStorage/fr: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: TXMLPropStorage/fr
| Old | New | Line | |
|---|---|---|---|
| 1 | + | ## Introduction | |
| 2 | + | ||
| 3 | + | **TXMLPropStorage**  est un composant pour enregistrer/restaurer des propriétés choisies (soit TForm soit n'importe quel contrôle au dessus de lui). Il travaille avec la propriété TForm.[[doc:lcl/forms/tform.sessionproperties.html|SessionProperties]]. . | |
| 4 | + | ||
| 5 | + | ## Utilisation : | |
| 6 | + | ||
| 7 | + | 1. Déposer un composant [[doc:lcl/xmlpropstorage/txmlpropstorage.html|TXMLPropStorage]] sur la fiche et choisir le nom de fichier, par exemple: session.xml | |
| 8 | + | 2. Ouvrir une fenêtre d'édition pour la propriété [[doc:lcl/forms/tform.sessionproperties.html|SessionProperties]] de TForm. | |
| 9 | + | 3. Ajouter la les propriétés de la fiche et/ou des contrôles à stocker dans session.xml. | |
| 10 | + | 4. Compiler l'application. | |
| 11 | + | ||
| 12 | + | Votre application maintenant lira les valeurs de propriétés choisies de session.xml et les conservera pendant la durée d'exécution (comme Width, Height, Left, Top pour TForm). | |
| 13 | + | ||
| 14 | + | TINIPropStorage travaille de la même manière que TXMLPropStorage, excepté qu'il stocke l'information de session dans un [fichier Ini](http://lazarus-ccr.sourceforge.net/docs/fcl/inifiles/index.html). | |
| 15 | + | ||
| 16 | + | ## Propriété StoredValues | |
| 17 | + | ||
| 18 | + | [[TINIPropStorage/fr|TINIPropStorage]] et TXMLPropStorage ont une propriété *StoredValues* qui stocke des valeurs (ce qui est pratique pour ne pas utiliser d'autres fichier de configuration)... | |
| 19 | + | ||
| 20 | + | - Pourquoi est-ce vraiment utile ? | |
| 21 | + | 1. Quelques propriétés (comme CheckGroup.Item\[n\].Checked) ne peuvent pas être sauvées dans SessionProperties de TForm, donc vous devez le faire manuellement. C'est également pratique pour sauver d'autres informations de configuration. | |
| 22 | + | ||
| 23 | + | Ecrivons une petite démo : | |
| 24 | + | ||
| 25 | + | - Lancez Lazarus et commencez une nouvelle application; | |
| 26 | + | - Déposez un composant TXMLPropStorage et un TCheckGroup; | |
| 27 | + | - Ajoutez un item au TCheckGroup (Item Test); | |
| 28 | + | - Cliquez sur XMLPropStorage1 et accédez à l'editeur de propriété StoredValues; | |
| 29 | + | - Ajoutez une nouvelle valeur avec un name = item0_checked et value = -1 (True = -1); | |
| 30 | + | - Dans l'évènement OnRestoreProperties ajoutez ce code : | |
| 31 | + | ||
| 32 | + | ``` pascal | |
| 33 | + | CheckGroup1.Checked[0] := StrToBool(XMLPropStorage1.StoredValue['item0_checked']); | |
| 34 | + | ``` | |
| 35 | + | ||
| 36 | + | - Dans l'évènement OnSavingProperties ajoutez ce code : | |
| 37 | + | ||
| 38 | + | ``` pascal | |
| 39 | + | XMLPropStorage1.StoredValue['item0_checked'] := BoolToStr(CheckGroup1.Checked[0]); | |
| 40 | + | ``` | |
| 41 | + | ||
| 42 | + | - Lancez le programme de démo, changez la propriété checked de TCheckGroup.Items\[n\] et fermez votre fiche. Vos changements ont été sauvés ? :) | |
| 43 | + | ||
| 44 | + | Vous pouvez changer la propriété *Key* de StoredValues.Items\[n\] si vous sauvez quelque information confidentielle (elle utilise les fonctions XOREncode et XORDecode de la RTL lors de l'enregistrement et de la restauration). | |
| 45 | + | ||
| 46 | + | ## Une note sur des noms de fichier | |
| 47 | + | ||
| 48 | + | TXMLPropStorage a un gestionnaire par défaut si vous ne choisissez pas un nom de fichier. Sous Windows les paramètres seront sauvés dans le répertoire de l'application sous PROGRAMNAME.xml | |
| 49 | + | ||
| 50 | + | Sous des clônes Unix (Linux/FreeBSD/macOS) il sera sauvé dans le répertoire local de l'utilisateur courant sous .PROGRAMNAME | |
| 51 | + | ||
| 52 | + | C'est donc une très bonne idée de laisser les noms par défaut pour les programmes unix qui doivent être lancer par des utilisateurs normaux. | |
| 53 | + | ||
| 54 | + | Selon le rapport d'anomalie [13949, note 28856](http://bugs.freepascal.org/view.php?id=13949) : "The StoredValues\[\] array can only be used during the OnRestoreProperties or OnSaveProperties events. Outside these events, the values will not be stored." et "If you want to save/load values that are not published properties of a component or control, you should save them in a OnSaveProperties event, and load them using the OnRestoreProperties event." | |
| 55 | + | ||
| 56 | + | Soit en Français : "Le tableau StoredValues\[\] peut seulement être utilisé pendant les événements OnRestoreProperties ou OnSaveProperties. En dehors de ceux-ci, les valeurs ne seront pas enregistrées." et "Si vous voulez enregistrer/charger des valeurs qui ne sont pas des propriétés d'un composant ou d'un contrôle, vous devriez les enregistrer dans un événement OnSaveProperties et les charger en utilisant un événement OnRestoreProperties". | |
| 57 | + | ||
| 58 | + | # Voir aussi | |
| 59 | + | ||
| 60 | + | - [[doc:lcl/xmlpropstorage/txmlpropstorage.html|Doc. TXMLPropStorage]] | |
| 61 | + | - [[doc:lcl/forms/tform.sessionproperties.html|Doc. SessionProperties]] | |
| 62 | + | - [[Hardware Access/fr|Hardware Access]] | |
| 63 | + | ||
| 64 | + | --- | |
| 65 | + | *From the Free Pascal wiki, page "TXMLPropStorage/fr", as it stood on 2020-03-02 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).* |
