Gambas France BETA


Pas de compte ? Incription

Façon de coder...

1
AuteurMessages
spheris#1 Posté le 24/2/2012 à 12:36:07
Bonjour,
toujours dans la lignée des "comment vous faites vous?", J'ai une form qui a 5 textbox qui enregistrent 5 string dans un fichier de config à l'aide de gb.setting.

2 solutions(ou plus...) s'offrent à moi.

A) Peut importe la modif de n'importe quel champ, dans un evenement textbox_change je passe une variable globale "modif" à true lors de la fermeture, j'ecris tout dans le fichier si modif = true

B) Je modifie mon fichier setting au fur et a mesure de la modif de mes champs.

Qu'est-ce qui vous parait le plus judicieux ?

;)
manu#2 Posté le 24/2/2012 à 18:45:16
Avec Gambas ca roule !Pour moi c'est la solutuion B que j'utilise : pas de test, pas de variables globale(ou publique) et sauvegarde en temps réel. Que des avantages je trouve.
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
Prokopy#3 Posté le 24/2/2012 à 22:30:48
Kinder PinguiPour moi la solution B a un gros point noir : à chaque fois que tu tapes sur une touche de ton clavier tout le fichier est réécrit sur le disque dur ... donc ça rame à mort.

Moi je verrais bien une solution comme la A, pour un écran de configuration ce n'est pas la peine d'avoir une sauvegarde en temps réel (surtout que, en général, l'utilisateur préfère que les changements soient sauvegardés uniquement lorsqu'il a confirmé.

Par contre, utlise un bouton Appliquer plutôt qu'une variable globale.
Je m'explique :

Au départ, tu as le bouton Annuler (qui ferme la form tout simplement) et le bouton Appliquer qui est désactivé à l'ouverture de la Form.

Lorsqu'un TextBox est changé, tu actives le bouton. Et lorsque le bouton est cliqué, tu sauvegardes. :)

Un exemple :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
PUBLIC SUB Form_Open()

btnAppliquer.Enabled = FALSE

END

PUBLIC SUB TextBoxes_Change()

btnAppliquer.Enabled = TRUE

END

PUBLIC SUB btnAppliquer_Click()

'Sauvegarde

END


C'est aussi simple que cela. ;)
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
manu#4 Posté le 25/2/2012 à 08:59:34
Avec Gambas ca roule !Oui, astucieux d'utiliser la propriété d'un bouton (public) comme variable public.

Mais, je pense que pour 5 contrôles, les accès au disque dur ne ferais pas ramer l'ordi. Sauf si il date des années 80 ;)
Jeanne d'arc, elle a frit, elle a tout compris ! ;)

Config :
Manjaro linux (excellent !)
XFCE 4.1 (simple et efficace)
Gambas 3 dans les dépots (confort total)
Jack#5 Posté le 25/2/2012 à 09:13:07
Je pense qu'il est préférable de raisonner en terme d'économie. Cette façon de procéder aura toujours mes faveurs.
Pour un code démocratique nationalisons Gambas.
gambix#6 Posté le 25/2/2012 à 10:17:18
Faire simple !on parle de setting la ...


moi je résume ça en deux ligne si tu veux :)


1
2
3
4
5
6
7
8
9
10
11
PUBLIC SUB txbGInfo_Change()

MySettings["Generale" &/ LAST.Tag] = LAST.text

END

PUBLIC SUB btnClose_Click()

MySetting.Save()

END


Bien sur, il faut donner un nom de groupe commun a toute les boites, et donner un nom dans tag :)


Pour initialiser le contenu d'une des textbox...

1
txtb1.Text = mySetting["Generale" &/ txtb1.tag]



Bien sur on peut les mettre dans un conteneur connu et :

1
2
3
4
5
6
7
DIM htxt AS textBox

FOR EACH htxt IN Vbox1.Children

htxt.Text = mySetting["Generale" &/ htxt.tag]

NEXT


Voila ... j'espère que ça vous éclaire un peu
Moins de texte dans une signature c'est agrandir son espace.
Prokopy#7 Posté le 25/2/2012 à 10:31:27
Kinder Pingui
Mais, je pense que pour 5 contrôles, les accès au disque dur ne ferais pas ramer l'ordi. Sauf si il date des années 80 ;)


Le mien date de 2009, et si je tape à vitesse normale, le processeur passe à quasi 100%, le disque dur ne cesse de gratter, et le textarea a du mal à suivre. :|

Sauf si c'est gb.settings et que tu utilises setting.Save() à la fermeture.
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
spheris#8 Posté le 25/2/2012 à 17:04:03
Prokopy, Manu, Jack,
Je pense adhérer à la premiere solution qui consiste à enregistrer le tout en 1 fois. Je suis donc sur la bonne voie.

gambix,
Ta façon de coder me laissera toujours sans voix. T'es vraiment un champion ! ;)

Merci pour vos réponses.
1