Bonjour tout le monde !
J' aimerais savoir comment enregistrer mes données rentrées
dans un ComboBox après la fermeture de mon exécutable,puisque a chaque réouverture de l' .exe tout s'éface.:?
Merci !
Version imprimable
Bonjour tout le monde !
J' aimerais savoir comment enregistrer mes données rentrées
dans un ComboBox après la fermeture de mon exécutable,puisque a chaque réouverture de l' .exe tout s'éface.:?
Merci !
Bonjour,
Il faut inclure la bibliothèque #include <inifiles.hpp>
PuisCode:
1
2
3 TIniFile *Ini = new TIniFile(Application->ExeName.SubString(1, Application->ExeName.Length() - 4) + ".ini"); Ini->WriteString("Parametres", "MonComboBox", MonComboBox->Text); delete Ini;
sa me créé un fichier .ini
cepandant je narrive pas au redémarrage de mon .exe a retrouver
les données rentrées...
dans mon .ini je ne vois pas les différents items rentré dans ma ComboBox
juste "Programme..."
Expliquez moi la marche a suivre merci pour la réponse :D
http://img24.imageshack.us/img24/4690/zefez.png
Dans ton fichier Ini, tu crée une section par ComboBox que tu nomme par exemple avec le Nom de ton ComboBox pour t'y retrouver.
Ensuite dans chaque Section tu met
- une clé pour le nombre d'item (Exemple NbItems)
- une clé pour chaque Items (Item0, Item1, .....)
Ensuite quand tu veux recharger ton ComboBox, il suffit de récupérer le nombre d'item de la section de ton comboBox
Et ensuite tu boucle sur ce nombre d'item, et tu extrait chaque Item
J'espère t'avoir aidé
Désolé mais j'ai mal répondu à la première réponse,
Il est préférable de faire
dans l'évènement OnClose de ta Form pour sauvegarder tes données et puis pour les recharger au prochain démarrage tu fais dans l'évènement OnCreate de ta FormCode:ComboBox1->Items->SaveToFile("C:\\texte_ComboBox1.txt");
Code:ComboBox1->Items->LoadFromFile("C:\\texte_ComboBox1.txt");
Dans la librairie JEDI, il y a aussi des classes pour la persistence dans un fichier INI ou un la registry.
Voir la section "Jv Persistence" des composantes à placer sur ta fiche, notamment "TJvAppIniFileStorage" et TJvAppRegistryStorage". Le premier est probablement un wrapper de inifiles.hpp
"TJvAppIniFileStorage" et "TJvAppRegistryStorage" je n'arrive pas a trouver ces composant dans la palette .
Qu'est-ce qu'un wrapper ?
jsuis débutant :roll:
Il faut installer la librairie "Jedi" pour avoir ces composantes:
Description du projet: http://jcl.delphi-jedi.org/
Download: http://sourceforge.net/project/showf...group_id=47514
Un wrapper est un code qui permet d'utiliser une série de fonction en les encapsulant pour répondre à une autre interface. Comme par exemple la VCL qui utilise les API en interne pour certaines fonctions mais permet de les utiliser avec une interface (au sens des méthodes et des propriétés d'une classe) plus simple à utiliser pour le programmeur. Ainsi le programmeur n'a pas besoin de connaître toutes les API de windows pour pouvoir, par exemple, créer et utiliser, un bouton ou une combobox.
http://en.wikipedia.org/wiki/Wrapper_pattern
http://fr.wikipedia.org/wiki/Adaptat...de_conception)
Bon j'ai essayer d'installer JEDI mais sa ma pas données grand chose
J' ai utiliser la méthode de sony351sa marche plutot bien
Merci de votre réponse !:king:
Salut !
Désolé d'apporter ma contribution un peu tardivement !
Il suffirait par exemple de lire et mémoriser le chemin de l'exécutable et de travailler dans son dossier.
On déclare ces deux propriétés dans la classe de la form principale (private ou public... peu importe)
Dans le constructeur de la form principale (donc ne se produira qu'au lancement de l'exé) :Code:
1
2
3 AnsiString StoragePath; AnsiString StorageFile;
Dans la Onclose de la form principale :Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 StoragePath = ExtractFilePath(Application->ExeName); StorageFile = StoragePath + "Un_Nom_De_Fichier.TXT"; if(FileExists(StorageFile) { ComboBox1->Items->LoadFromFile(StorageFile); if(ComboBox1->Items->Count != 0) { ComboBox1->ItemIndex = 0; } else { ComboBox1->Text = "Empty"; } } else { // soit le dossier à été déplacé // soit c'est la première fois // c'est un léger inconvénient... qu'on peut gérer }
Donc tu peux travailler avec autant de fichiers de sauvegarde qu'il y a de ComboBox.Code:
1
2
3
4
5 if((Action != caNone) && (Action != caMinimize)) { ComboBox1->Items->SaveToFile(StorageFile); }
A toi de gérér... y compris de restaurer un contexte initial si besoin est !
A plus !