Sauvegardez les settings de vos form en une ligne de code !

Soyez le premier à donner votre avis sur cette source.

Vue 6 635 fois - Téléchargée 817 fois

Description

Voilà une classe qui permet de sauvegarder toutes les propriétés des contrôles de vos form en 1 ligne de code.
Exemple, vous cochez une checkbox, vous quittez la form, et la checkbox restera cochée quand vous réouvrirez la form.

Pour autoriser la sauvegarde des propriétés d'un controles, mettre "pref" dans la propriété Tag du composant.
Vous pouvz mettre n'importe quoi après "pref", mais çà dot commencer par çà. Sinon, les propriétés ne sont pas sauvegardées.
Autre chose, dans le cas de composants indexés, il faut différencier le Tag (exemple, "pref1", "pref2",...) pour sauvegarder chaque controle indépendemment.

Autre chose, il faut rajouter des lignes de code dans la classe pour ajouter les propriétés à sauvegarder pour vos controles.
Regardez le code, c'est très simple à modifier.

Controles actuellement supportés :
TextBox
CheckBox
OptionButton
ProgressBar
HScrollBar
VScrollBar
DriveListBox
DirListBox
Slider
CommonDialog
FileListBox
TabStrip

pour quelques proriétés MODIFIABLES PAR L'UTILISATEUR DANS LA FORM, comme Text, Value, Min, Path, FileName...etc

Source / Exemple :


Private clsPref As clsIniFile

Private Sub Form_Load()

    Set clsPref = New clsIniFile
    clsPref.GetFormSettings App.Path & "\pref.ini", Me    'charge les settings
    
End Sub

Private Sub Form_Unload(Cancel As Integer)

    clsPref.SaveFormSettings App.Path & "\pref.ini", Me   'sauvegarde les settings
    Set clsPref = Nothing   'décharge la classe
    
End Sub

'C'est tout !!

Conclusion :


Rien à voir avec la première source postée....

C'est à modifier en fonction de vos besoins (rajouter des composants....) :)

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
301
Date d'inscription
lundi 27 février 2006
Statut
Membre
Dernière intervention
17 décembre 2017

Pour conserver l'utilisation éventuelle du tag pour certains contrôles, je propose une petite astuce:
-mettre un séparateur (par ex "/") entre la préférence et le tag normal désiré pour le ctle.
-utiliser les fonctions suivantes pour récupérer la préférence et le tag normal:

Private Function TagPref(ByVal Ob As Control) As String
'donne la préférence écrite dans le tag
Dim k As Integer
k = InStr(Ob.Tag, "/")
TagPref = Left(Ob.Tag, k - 1)
End Function

Private Function TagCtl(ByVal Ob As Control) As String
'donne le tag à utiliser pour le contrôle
Dim k As Integer
k = InStr(Ob.Tag, "/")
'cas contrôle sans pref"
If k 0 Then TagCtl Obj.Tag: Exit Function
TagCtl = Right(Ob.Tag, Len(Ob.Tag) - k)
End Function

Il suffit donc par ex de remplacer Obj.Tag par TagPref(obj)dans les Sub GetFormSettings et SaveFormSettings de la classe.
Si on a besoin du tag d'un contrôle, on appelle TagCtl(obj).
C'est tout simple!
Messages postés
1812
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
1
Certes, je sais que le Tag n'est pas conçu uniquement pour faire tourner ma source.

Cependant, la non-utilisation de cette méthode restreint les possibilités de l'utiliateur quant au choix des propriétés/composants à sauvegarder.


Je vais essayer de repenser à çà, mais j'ai plusieurs codes en parallère en ce moment ^^
@+
Messages postés
1411
Date d'inscription
mercredi 6 août 2003
Statut
Membre
Dernière intervention
3 mars 2019
1
"utiliser le tag est parfois très (trop?) fastidieux."

Je rajouterai que cette méthode peut parfois poser problème. J'avais par exemple fait un petit code qui stockait la position et taille des controles dans leur TAG. Ceci afin qu'ils soient redimensionnés automatiquement quand on redim la form. On ne pourra donc pas faire tourner nos deux code en même temps.
Je parle également pour moi, mais il est préférable (autant que faire ce peut) d'utiliser une autre méthode pour stocker ce type d'infos.
Messages postés
1812
Date d'inscription
mardi 31 mai 2005
Statut
Membre
Dernière intervention
26 octobre 2010
1
bouv ==> exact, j'ai oublié de changer le "obj" pour la form dans mon copier/coller...

Pour le choix des propriétés à sauvegarder, je vais réfléchir à un système simple de gestion à partir du tag.

Merci pour la note !

PCPT ==> En fait, le premier code posté ne ressemblait pas à ce qu'il est maintenant... donc j'ai recherché si le code initial existait déjà, mais j'ai pas cherché sur vbfrance si la mise à jour que j'ai postée ressemblait à quelque chose de déjà existant... et apparement, le même genre de truc a déjà été fait (par toi)
Je vais regarder ta source plus détail ce soir, avec mon PC.

Si tu demandes ce que ma source apporte de plus, je suppose alors que la réponse est "la même chose que la tienne" ^^
J'ai regardé rapidement le source du *.ctl, çà ressemble énormément en effet :

For Each oCtrl In oFrm
If TypeOf oCtrl Is TextBox Then...

"utiliser le tag est parfois très (trop?) fastidieux." ==> certes, mais çà permet de pouvoir sélectionner les controles à sauvegarder ou non, et de sélectionner les propriétés à sauver ou non (voir dernière remarque de bouv).

"ps : et si la Txtbox est en "*"" ==> Ah euh oui, j'ai pas pensé à ce cas là... sauver un mdp dans un fichier ini si le dev oublie de ne pas remplir le tag est très facheux ^^ je changerais ce détail


Merci pour les commentaires, @+
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
37
salut,
j'ai regardé en diagonale seulement...
ok tu gères pas mal de contrôles mais... quel plus apporte ton code à celui-ci?
http://www.vbfrance.com/codes/ENREGISTRER-APPLIQUER-PARAMETRES-FORM-LIGNES-CTL_35970.aspx
(un peu de promo ok ^^)


utiliser le tag est parfois très (trop?) fastidieux.
par contre de mémoire, mon code ne gère pas les groupes de contrôle

ps : et si la Txtbox est en "*" ?? (le dev DOIT ne pas remplir le tag?)
code propre en tout cas.
++ ;)
Afficher les 13 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.