Page 1 sur 2

Rafraichir des StringGadget

Publié : dim. 23/déc./2007 18:52
par Geo Trouvpatou
Bonjour à tous.

Voici mon problème.
Je vous met mon code :

Code : Tout sélectionner

; Windows
Enumeration
  #Window_principale
EndEnumeration

; Gadgets
Enumeration
  #ScrollArea_0
  #Frame3D_01
  #String_var01
  #Button_1
  #Frame3D_02
  #String_var02
  #Button_2
EndEnumeration

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
;+                Création du fichier "maConfig.ini"                 +
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; On ouvre l'interface et si le fichier "maConfig.ini" n'existe pas on le créer avec des valeurs par défaut.
CreatePreferences("maConfig.ini")
  
WritePreferenceString("var01",   "Truc 1 par défaut.")
WritePreferenceString("var02",   "Truc 2 par défaut.")
  
ClosePreferences()


;-+++++++++ DEBUT DES PROCEDURES

; A mettre impérativement au dessus de "Procedure OpenWindow_principale()" sinon cela ne fonctionne pas 
Procedure Lecture()
  OpenPreferences("maConfig.ini")
  
  ; On lit le fichier ".ini" et si une variable est vide on rempli le "StringGadget" avec une valeur par défaut.
  Global var01$   = ReadPreferenceString("var01",   "Truc 1 par défaut.")
  Global var02$   = ReadPreferenceString("var02",   "Truc 2 par défaut.")
  
  ClosePreferences()
EndProcedure



Procedure OpenWindow_principale()
  If OpenWindow(#Window_principale, 385, 0, 400, 400, "Mon super prog ;)", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    If CreateGadgetList(WindowID(#Window_principale))
      
      ScrollAreaGadget(#ScrollArea_0, 5, 5, 385, 385, 388, 970, 10, #PB_ScrollArea_Single) ;>
        
        Frame3DGadget(#Frame3D_01, 10, 20, 340, 250, "Trucs 1")
        StringGadget(#String_var01, 20, 60, 310, 20, var01$)
        ButtonGadget(#Button_1, 135, 220, 100, 20, "Valider")
        
        Frame3DGadget(#Frame3D_02, 10, 290, 340, 280, "Trucs 2")
        StringGadget(#String_var02, 20, 320, 310, 20, var02$)
        ButtonGadget(#Button_2, 135, 530, 100, 20, "Valider")
      
       CloseGadgetList() 
    EndIf
  EndIf
EndProcedure

;-+++++++++ FIN DES PROCEDURES




;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
;+                        Ouverture du programme                     +
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Lecture()
OpenWindow_principale()





; La boucle magique
Repeat
  Event = WaitWindowEvent()
  
  Select Event
    
    Case #PB_Event_Gadget
      Select EventGadget()
        
        ; Si on appuie sur les différent boutons Valider, on réécrit le fichier "maConfig.ini" avec les valeurs des StringGadget.
        Case #Button_1, #Button_2
          
          ;- Réécriture 
          CreatePreferences("maConfig.ini")

          WritePreferenceString("var01",   GetGadgetText(#String_var01))
          WritePreferenceString("var02",   GetGadgetText(#String_var02))

          ClosePreferences()
          
;
; --------------- LE PROBLEME EST ICI
;
          ;Pour raffraichir les "StringGadget" les nouvelles valeurs voici comment je procède :
          ; On lit à nouveau le fichier "maConfig.ini" pour avoir les nouvelles valeurs de var01$ et var02$. 
          Lecture()
          ; Et on ferme et ré-ouvre le programme avec les nouvelles valeurs.
          ; Inconvénient on ne reste pas au niveau du 2ème "Frame_3D" >Trucs 2< mais on revient au début de >Trucs 1< :((( 
          OpenWindow_principale()
      EndSelect
      
      
  EndSelect
Until Event = #PB_Event_CloseWindow
Donc comme écrit dans le code lui-même, le problème lorsque l'on valide avec le 2ème bouton (celui du bas), c'est qu'on ne reste pas au niveau du 2ème "Frame_3D" >Trucs 2 mais que l'on revient en haut du programme.
Et si on a déplacé la fenêtre, elle se remet aux coordonnées d'origine (au passage comment palier à ce problème?).
Normal étant donné que c'est comme si on fermait le programme et qu'on l'ouvrait à nouveau.

Donc existe t'il une technique pour rafraichir les StringGadget?

Et y a t'il moyen d'optimiser mon code, parce qu'avec 10000 variables ç'est peut-être répétitif?

Peut-on colorer le code en purebasic dans ce forum?

Bye.

Re: Rafraichir des StringGadget

Publié : dim. 23/déc./2007 19:16
par Backup
Geo Trouvpatou a écrit : Normal étant donné que c'est comme si on fermait le programme et qu'on l'ouvrait à nouveau.

Donc existe t'il une technique pour rafraichir les StringGadget?
oui Setgadget par exemple !! :D

Et y a t'il moyen d'optimiser mon code, parce qu'avec 10000 variables ç'est peut-être répétitif?
oui surement ...

Peut-on colorer le code en purebasic dans ce forum?
je ne crois pas non :lol:


; Windows
Enumeration
   #Window_principale
EndEnumeration

; Gadgets
Enumeration
   #ScrollArea_0
   #Frame3D_01
   #String_var01
   #Button_1
   #Frame3D_02
   #String_var02
   #Button_2
EndEnumeration

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+ Création du fichier "maConfig.ini" +
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; On ouvre l'interface et si le fichier "maConfig.ini" n'existe pas on le créer avec des valeurs par défaut.
If FileSize ( "maConfig.ini" ) =-1 ; Corrigé par Dobro
   CreatePreferences ( "maConfig.ini" )
   WritePreferenceString ( "var01" , "Truc 1 par défaut." )
   WritePreferenceString ( "var02" , "Truc 2 par défaut." )
   ClosePreferences ()
EndIf ; Corrigé par Dobro


;-+++++++++ DEBUT DES PROCEDURES

; A mettre impérativement au dessus de "Procedure OpenWindow_principale()" sinon cela ne fonctionne pas
Procedure Lecture()
   OpenPreferences ( "maConfig.ini" )
  
   ; On lit le fichier ".ini" et si une variable est vide on rempli le "StringGadget" avec une valeur par défaut.
  Global var01$ = ReadPreferenceString ( "var01" , "Truc 1 par défaut." )
   SetGadgetText ( #String_var01 , var01$) ; Corrigé par Dobro
  Global var02$ = ReadPreferenceString ( "var02" , "Truc 2 par défaut." )
   SetGadgetText ( #String_var02 , var02$) ; Corrigé par Dobro
   ClosePreferences ()
EndProcedure



Procedure OpenWindow_principale()
   If OpenWindow ( #Window_principale , 385, 0, 400, 400, "Mon super prog ; )" , #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar )
     If CreateGadgetList ( WindowID ( #Window_principale ))
      
       ScrollAreaGadget ( #ScrollArea_0 , 5, 5, 385, 385, 388, 970, 10, #PB_ScrollArea_Single ) ;>
        
         Frame3DGadget ( #Frame3D_01 , 10, 20, 340, 250, "Trucs 1" )
         StringGadget ( #String_var01 , 20, 60, 310, 20, var01$)
         ButtonGadget ( #Button_1 , 135, 220, 100, 20, "Valider" )
        
         Frame3DGadget ( #Frame3D_02 , 10, 290, 340, 280, "Trucs 2" )
         StringGadget ( #String_var02 , 20, 320, 310, 20, var02$)
         ButtonGadget ( #Button_2 , 135, 530, 100, 20, "Valider" )
        
         CloseGadgetList ()
       EndIf
     EndIf
   EndProcedure
  
   ;-+++++++++ FIN DES PROCEDURES
  
  
  
  
   ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
   ;+ Ouverture du programme +
   ;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
  Lecture()
  OpenWindow_principale()
  
  
  
  
  
   ; La boucle magique
   Repeat
    Event = WaitWindowEvent ()
    
     Select Event
      
       Case #PB_Event_Gadget
         Select EventGadget ()
          
           ; Si on appuie sur les différent boutons Valider, on réécrit le fichier "maConfig.ini" avec les valeurs des StringGadget.
           Case #Button_1 , #Button_2
            
             ;- Réécriture
             CreatePreferences ( "maConfig.ini" )
            
             WritePreferenceString ( "var01" , GetGadgetText ( #String_var01 ))
             WritePreferenceString ( "var02" , GetGadgetText ( #String_var02 ))
            
            
             ClosePreferences ()
            
             ;
             ; --------------- LE PROBLEME EST ICI
             ;
             ;Pour raffraichir les "StringGadget" les nouvelles valeurs voici comment je procède :
             ; On lit à nouveau le fichier "maConfig.ini" pour avoir les nouvelles valeurs de var01$ et var02$.
            Lecture()
             ; Et on ferme et ré-ouvre le programme avec les nouvelles valeurs.
             ; Inconvénient on ne reste pas au niveau du 2ème "Frame_3D" >Trucs 2< mais on revient au début de >Trucs 1< : (((
             ; OpenWindow_principale()
            
         EndSelect
        
        
     EndSelect
   Until Event = #PB_Event_CloseWindow

Publié : dim. 23/déc./2007 19:20
par Backup
ps : le code coloré est corrigé !!
note la technique pour savoir si un fichier existe deja .....
parceque tel quel, le prg considerai que le fichier n'existait pas ... :)

Publié : dim. 23/déc./2007 19:24
par case
pourquois ne pas ouvrir la fentre a ses nouvelles coordonées tout simplement ?

la doc est ton amie :p

edit : code effacé car ne corrigeant pas le 'probleme'

Publié : dim. 23/déc./2007 19:27
par Backup
case a écrit :pourquois ne pas ouvrir la fentre a ses nouvelles coordonées tout simplement ?
tu lui corrige qu'une petite partie du code !!
tant qu'a faire t'aurai pu repartir de ma version corrigé en couleur !! :?

d'autant qu'il n'y a pas besoin de réouvrir la fenetre !! :?

Publié : dim. 23/déc./2007 19:36
par case
ah moi j'ai juste fais un copier coller depuis pb :)

je rentre du taf j'suis un peu mort j'ai du louper un épisode sur ce qui vas pas dans son code :)

je m'y remet apres manger ^^

tu colores avec quoi ton code ?

Publié : dim. 23/déc./2007 19:41
par Backup
avec THE COLORER !! :)

Publié : dim. 23/déc./2007 21:21
par case
si j'ai bien compris le probleme cette fois c'est que notre Geo trouvpastou recharge son fichier ini pour mettre ses valeurs dans ses variables et que donc il redessine tout a chaques fois et que ca remet tout a zero tout le temps. forcément :)

par contre ce que j'ai pas compris c'est pourquois tu est parti sur ce mode de fonctionnement , puisque tu sais recuperer le contenu d'un stringgadget
il te suffis de le metre dans la bonne variable :)

donc voila ton code :) et alors a la demande générale code coloré avec the colorer dispo chez notre ami michel 'le guitariste coder' dobro :p




; Windows
Enumeration
#Window_principale
EndEnumeration

; Gadgets
Enumeration
#ScrollArea_0
#Frame3D_01
#String_var01
#Button_1
#Frame3D_02
#String_var02
#Button_2
EndEnumeration

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+ Création du fichier "maConfig.ini" +
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; On ouvre l'interface et si le fichier "maConfig.ini" n'existe pas on le créer avec des valeurs par défaut.
CreatePreferences ( "maConfig.ini" )

WritePreferenceString ( "var01" , "Truc 1 par défaut." )
WritePreferenceString ( "var02" , "Truc 2 par défaut." )

ClosePreferences ()






;-+++++++++ DEBUT DES PROCEDURES

; A mettre impérativement au dessus de "Procedure OpenWindow_principale()" sinon cela ne fonctionne pas
Procedure Lecture()
OpenPreferences ( "maConfig.ini" )

; On lit le fichier ".ini" et si une variable est vide on rempli le "StringGadget" avec une valeur par défaut.
Global var01$ = ReadPreferenceString ( "var01" , "Truc 1 par défaut." )
Global var02$ = ReadPreferenceString ( "var02" , "Truc 2 par défaut." )

ClosePreferences ()
EndProcedure



Procedure OpenWindow_principale(x_win=385,y_win=0) ; on met des valeurs par defaut au cas ou on apelle la procedure sans valeurs
If IsWindow ( #Window_principale ) ; si la fenetre existe deja
FreeGadget ( #Window_principale ) ; on libere les ressources avant de la recreer
EndIf
;
If OpenWindow ( #Window_principale , x_win, y_win, 400, 400, "Mon super prog ; )" , #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar )
If CreateGadgetList ( WindowID ( #Window_principale ))

ScrollAreaGadget ( #ScrollArea_0 , 5, 5, 385, 385, 388, 970, 10, #PB_ScrollArea_Single ) ;>

Frame3DGadget ( #Frame3D_01 , 10, 20, 340, 250, "Trucs 1" )
StringGadget ( #String_var01 , 20, 60, 310, 20, var01$)
ButtonGadget ( #Button_1 , 135, 220, 100, 20, "Valider" )

Frame3DGadget ( #Frame3D_02 , 10, 290, 340, 280, "Trucs 2" )
StringGadget ( #String_var02 , 20, 320, 310, 20, var02$)
ButtonGadget ( #Button_2 , 135, 530, 100, 20, "Valider" )

CloseGadgetList ()
EndIf
EndIf
EndProcedure

;-+++++++++ FIN DES PROCEDURES




;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;+ Ouverture du programme +
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Lecture()
OpenWindow_principale()





; La boucle magique
Repeat
Event = WaitWindowEvent ()

Select Event
Case #PB_Event_MoveWindow ; la fenetre a ete deplacée
Case #PB_Event_Gadget
Select EventGadget ()
; Si on appuie sur les différent boutons Valider, on réécrit le fichier "maConfig.ini" avec les valeurs des StringGadget.
Case #Button_1 , #Button_2
;- Réécriture
CreatePreferences ( "maConfig.ini" )
WritePreferenceString ( "var01" , GetGadgetText ( #String_var01 ))
WritePreferenceString ( "var02" , GetGadgetText ( #String_var02 ))
ClosePreferences ()
; on modifie les valeurs de var01 et var 02 pas besoin de recharger le .ini
var01$= GetGadgetText ( #String_var01 )
var02$= GetGadgetText ( #String_var02 )
EndSelect


EndSelect
Until Event = #PB_Event_CloseWindow

Publié : dim. 23/déc./2007 23:57
par comtois

Code : Tout sélectionner

; A mettre impérativement au dessus de "Procedure OpenWindow_principale()" sinon cela ne fonctionne pas
Procedure Lecture() 
pour placer ta procédure où bon te semble , il te suffit d'ajouter une ligne declare au début de ton code

Code : Tout sélectionner

Declare Lecture()

Publié : lun. 24/déc./2007 0:33
par Geo Trouvpatou
Bonsoir.

Merci à vous 3 pour le coup d'patte.

Ben maintenant je suis bien embêté parce qu'entre ton code Michel et le tiens Case, ben j'sais plus lequel choisir :roll:.
Dobro a écrit :note la technique pour savoir si un fichier existe deja .....
parceque tel quel, le prg considerai que le fichier n'existait pas ... :)
C'est bien noté.
Au début j'avais utilisé la technique de "petites notes" modifié par Guimauve, pour vérifier si mon fichier n'existait pas déjà, mais cela à foiré.
Case a écrit :la doc est ton amie :p
Je sais bien je la survole de temps à autre tout en dépiotant des bouts de codes par-ci par-là sur le forum dans la rubrique Truc et astuces- Aplications en plus de différents sites externes

Mais bon parfois j'avoue ne pas trop savoir où chercher dans la doc.
Pour mon problème avec la fenêtre suite à ta remarque j'ai cherché dans "Window" et de là cela m'a emmené vers "Desktop" et cela m'a permis de répondre à une question, comment centrer la fenêtre d'un prog quelque soit la résolution de l'écran d'une personne.
J'imagine qu'il faut utiliser ExamineDesktops() et tout ce qui va avec, DesktopWidth() etc...

J'ai failli passer à côté de ça :
Case a écrit :Procedure OpenWindow_principale(x_win=385,y_win=0) ; on met des valeurs par defaut au cas ou on apelle la procedure sans valeurs
If IsWindow ( #Window_principale ) ; si la fenetre existe deja
FreeGadget ( #Window_principale ) ; on libere les ressources avant de la recreer
EndIf
C'est vraiment utile? Est-ce que
If OpenWindow ( #Window_principale , x_win, y_win, 400, 400, "Mon super prog ; )" , #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar )
n'est pas suffisant?
Comtois a écrit :pour placer ta procédure où bon te semble , il te suffit d'ajouter une ligne declare au début de ton code
J'ai essayé et cela ne fonctionne pas.
Je retenterais ma chance demain avec les idées plus claires.

En tout cas merci à vous 3 et à plus.

Publié : lun. 24/déc./2007 0:37
par Backup
heu !! pour rappelle avec la version que je t'ai mis , pas besoin de toucher a la fenêtre , puisque celle ci reste a l'endroit ou tu la pose ....


:D

Publié : lun. 24/déc./2007 0:42
par Geo Trouvpatou
Yes, yes, t'inquiètes, j'avais bien remarqué.

C'était pour moi mes 2 ééééénoooormes problèmes,donc tu penses bien que c'est ça que j'ai regardé en priorité :wink:
Sinon tu penses bien que je serais venu t'enguirlander :lol:.

Encore merci.

Publié : lun. 24/déc./2007 1:33
par case
pour les procedures et declare il faut que le declare soit exactement comme la procedure

Code : Tout sélectionner

declare maprocedure()

; apel de la procedure
maprocedure(0)


procedure maprocedure(parametre)
endprocedure
ne fonctionnera pas car le declare n'est pas exactement comme la procedure

Code : Tout sélectionner

declare maprocedure(parametre)

; apel de la procedure
maprocedure(0)

procedure maprocedure(parametre)
endprocedure
la ca vas fonctioner


personellement je prefere utiliser declare plutot que de placer mes procedures en tete de code mais les deux approches sont bonnes.


dans ton code tu définis des variable globales a l'interieur d'une procedure

Code : Tout sélectionner

Procedure Lecture()
  OpenPreferences("maConfig.ini")
 
  ; On lit le fichier ".ini" et si une variable est vide on rempli le "StringGadget" avec une valeur par défaut.
  Global var01$   = ReadPreferenceString("var01",   "Truc 1 par défaut.")
  Global var02$   = ReadPreferenceString("var02",   "Truc 2 par défaut.")
 
  ClosePreferences()
EndProcedure
il me semble qu'il est preferable de definir les variables comme etant globales en dehors des procedures(a confirmer par un pro de pure basic mais ne risques-t'on pas une erreur du genre variable deja definie ? ).

Code : Tout sélectionner

Global var01$
Global var02$

Procedure Lecture()
  OpenPreferences("maConfig.ini")
   ; On lit le fichier ".ini" et si une variable est vide on rempli le "StringGadget" avec une valeur par défaut.
  var01$   = ReadPreferenceString("var01",   "Truc 1 par défaut.")
  var02$   = ReadPreferenceString("var02",   "Truc 2 par défaut.")
   ClosePreferences()
EndProcedure

Publié : lun. 24/déc./2007 13:40
par Backup
case a écrit : il me semble qu'il est preferable de definir les variables comme etant globales en dehors des procedures(a confirmer par un pro de pure basic mais ne risques-t'on pas une erreur du genre variable deja definie ? ).
oui tout a fait d'autant que le mot Shared n'est pas la pour la deco :)

rappel ; permet de partager une variable local vers l'exerieur de la procedure :)

Publié : jeu. 27/déc./2007 14:44
par Geo Trouvpatou
Salut à toutes et tous.

J'espère que vous avez passé de bonnes fêtes et que vous vous êtes bien goinfré :wink:.

Bon ben je viens de m'apercevoir que je vous avait embêté pour rien.
Parce que pour résoudre mon problème il suffisait simplement de supprimer "OpenWindow_principale()" dans la boucle des évenements et du coup même pas besoin d'utiliser "SetGadgetText()".

Mais cela m'a permis de rectifier quelques erreurs.
Sinon voici le code corrigé

Code : Tout sélectionner

; Windows
Enumeration
  #Window_principale
EndEnumeration

; Gadgets
Enumeration
  #ScrollArea_0
  #Frame3D_01
  #String_var01
  #Button_1
  #Frame3D_02
  #String_var02
  #Button_2
EndEnumeration

Global var01$
Global var02$

;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
;+                Création du fichier "maConfig.ini"                 +
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
; On ouvre l'interface et si le fichier "maConfig.ini" n'existe pas on le créer avec des valeurs par défaut.
If FileSize ( "maConfig.ini" ) =-1 ; Corrigé par Dobro
CreatePreferences("maConfig.ini")
  
WritePreferenceString("var01",   "Truc 1 par défaut.")
WritePreferenceString("var02",   "Truc 2 par défaut.")
  
ClosePreferences()
EndIf ; Corrigé par Dobro

;-+++++++++ DEBUT DES PROCEDURES

; A mettre impérativement au dessus de "Procedure OpenWindow_principale()" sinon cela ne fonctionne pas 
Procedure Lecture()
  OpenPreferences("maConfig.ini")
  
  ; On lit le fichier ".ini" et si une variable est vide on rempli le "StringGadget" avec une valeur par défaut.
  var01$   = ReadPreferenceString("var01",   "Truc 1 par défaut.")
  var02$   = ReadPreferenceString("var02",   "Truc 2 par défaut.")
  
  ClosePreferences()
EndProcedure



Procedure OpenWindow_principale()
  If OpenWindow(#Window_principale, 385, 0, 400, 400, "Mon super prog ;)", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    If CreateGadgetList(WindowID(#Window_principale))
      
      ScrollAreaGadget(#ScrollArea_0, 5, 5, 385, 385, 388, 970, 10, #PB_ScrollArea_Single) ;>
        
        Frame3DGadget(#Frame3D_01, 10, 20, 340, 250, "Trucs 1")
        StringGadget(#String_var01, 20, 60, 310, 20, var01$)
        ButtonGadget(#Button_1, 135, 220, 100, 20, "Valider")
        
        Frame3DGadget(#Frame3D_02, 10, 290, 340, 280, "Trucs 2")
        StringGadget(#String_var02, 20, 320, 310, 20, var02$)
        ButtonGadget(#Button_2, 135, 530, 100, 20, "Valider")
      
       CloseGadgetList() 
    EndIf
  EndIf
EndProcedure

;-+++++++++ FIN DES PROCEDURES




;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
;+                        Ouverture du programme                     +
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Lecture()
OpenWindow_principale()





; La boucle magique
Repeat
  Event = WaitWindowEvent()
  
  Select Event
    
    Case #PB_Event_Gadget
      Select EventGadget()
        
        ; Si on appuie sur les différent boutons Valider, on réécrit le fichier "maConfig.ini" avec les valeurs des StringGadget.
        Case #Button_1, #Button_2
          
          ;- Réécriture 
          CreatePreferences("maConfig.ini")

          WritePreferenceString("var01",   GetGadgetText(#String_var01))
          WritePreferenceString("var02",   GetGadgetText(#String_var02))

          ClosePreferences()
          
;
; --------------- LE PROBLEME EST ICI
;
          ;Pour raffraichir les "StringGadget" les nouvelles valeurs voici comment je procède :
          ; On lit à nouveau le fichier "maConfig.ini" pour avoir les nouvelles valeurs de var01$ et var02$. 
          Lecture()
          ; Et on ferme et ré-ouvre le programme avec les nouvelles valeurs.
          ; Inconvénient on ne reste pas au niveau du 2ème "Frame_3D" >Trucs 2< mais on revient au début de >Trucs 1< :((( 
          ;OpenWindow_principale() ; +++++++++++++++Etait 100% inutile
      EndSelect
      
      
  EndSelect
Until Event = #PB_Event_CloseWindow
Pour le "declare()" faudra que je fasse de plus amples essais.

Merci à tous.