[TUTO] Les Gadgets

Informations pour bien débuter en PureBasic
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

[TUTO] Les Gadgets

Message par comtois »

>> Le Soldat Inconnu :
Ces tutos ont pour but d'apprendre à manipuler les gadgets
Toujours un grand merci à Comtois pour avoir recopier mes tuts de l'ancien forum ici. :wink:

J'en profite aussi pour signaler les points suivants :
- Si vous désirez d'autres exemples, merci de me faire parvenir vos idées par message privé
- De même si vous avez des remarques au sujet des codes de ces tuts

Le but étant de laisser des tus propres pour les personnes qui en ont besoin :)



StringGadget

cet exemple montre comment récupérer le texte contenu dans un StringGadget pour l'afficher en simultané dans un TextGadget.

;mis en V4.00 Dobro
;======================================
;- déclaration des constantes
; il faut donner au maximum un nom a la constantes qui représente son utilité


; on déclare chaque type de constantes dans une rubrique

; Window
#fenetre_principale = 0


; Gadget
#gadget_ecrire_texte = 0
#gadget_affiche_texte = 1


;======================================
;- declaration des variables globales, des strutures, des listes ou tableau, ...




;======================================
;- declaration des procedures



Procedure Ouvre_Fenetre_principale()

If OpenWindow ( #fenetre_principale , 0, 0, 200, 100, "fenêtre principale" , #PB_Window_SystemMenu | #PB_Window_WindowCentered )

; on créer la liste des éléments (gadget) de la fenètre

If CreateGadgetList ( WindowID ( #fenetre_principale ))

StringGadget ( #gadget_ecrire_texte , 10, 10, 180, 20, "" ) ; on crée un stringgadget

TextGadget ( #gadget_affiche_texte , 10, 40, 180, 20, "un text" ) ; on crée un textgadget

EndIf

EndIf

EndProcedure





;=====================================
;- Debut du programme

; On initialise tous d'abord les valeurs

; On affiche la fenêtre les boutons
Ouvre_Fenetre_principale()


; On lance la boucle de gestion des évènements de la fenêtre ouverte

Repeat
Event = WaitWindowEvent ()


; Mettre ici la gestion des évènements

If Event = #PB_Event_Gadget

Select EventGadget () ; boutons, zone de texte, ...

Case #gadget_ecrire_texte ; cet évènement sera activé à chaque changement dans le stringgadget, par exemple si on tape une lettre

; On récupère le texte contenu dans le srtinggadget
text.s = GetGadgetText ( #gadget_ecrire_texte )

; on écrit le texte dans le TextGadget
SetGadgetText ( #gadget_affiche_texte , text)

EndSelect

EndIf


Until Event = #PB_Event_CloseWindow ; si on appui sur la croix, on ferme le programme


End ; Fin du programme



--------------------
Le Soldat Inconnu [Régis]
Méfiez vous de l'eau qui dort, les ténèbres sommeillent sous sa surface.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

CheckBoxgadget

Même principe que précédemment sauf que le texte change en fonction de l'état du CheckBoxgadget.



; Mis en V4.00 Dobro
; ======================================
;- declaration des constantes
; il faut donner au maximum un nom a la constantes qui représente son utilité


; on déclare chaque type de constantes dans une rubrique


; Window
#fenetre_principale = 0


; Gadget
#gadget_choix = 0
#gadget_affiche_texte = 1


; ======================================
;- declaration des variables globales, des strutures, des listes ou tableau, ...

Global Text1.s, Text2.s


; ======================================
;- declaration des procedures



Procedure Ouvre_Fenetre_principale()
    
     If OpenWindow ( #fenetre_principale , 0, 0, 300, 100, "fenêtre principale" , #PB_Window_SystemMenu | #PB_Window_WindowCentered )
        
         ; on créer la liste des éléments (gadget) de la fenètre
         If CreateGadgetList ( WindowID ( #fenetre_principale ))
            
             CheckBoxGadget ( #gadget_choix , 10, 10, 280, 20, "Le texte change en fonction de l'état du gadget" )
            
             TextGadget ( #gadget_affiche_texte , 10, 40, 280, 20, Text1) ; on crée un textgadget avec un texte par défaut
            
         EndIf
        
     EndIf
    
EndProcedure



Procedure Gestion_Choix()
    
     ; On récupère le l'état du CheckBoxGadget
    etat = GetGadgetState ( #gadget_choix )
    
     ; on écrit le texte dans le TextGadget
     If etat = 1 ; si le CheckBoxGadget est coché
        
         SetGadgetText ( #gadget_affiche_texte , Text2)
        
     Else ; sinon
        
         SetGadgetText ( #gadget_affiche_texte , Text1)
        
     EndIf
    
    
EndProcedure




; =====================================
;- Debut du programme


; On initialise tous d'abord les valeurs
Text1 = "Le CheckBoxGadget n'est pas coché"
Text2 = "Le CheckBoxGadget est coché"


; On affiche la fenêtre les boutons
Ouvre_Fenetre_principale()


; On lance la boucle de gestion des évènements de la fenêtre ouverte

Repeat
    
    Event = WaitWindowEvent ()
    
    
     ; Mettre ici la gestion des évènements
    
     If Event = #PB_Event_Gadget
        
         Select EventGadget () ; boutons, zone de texte, ...
            
             Case #gadget_choix ; cet évènement sera activé à chaque changement dans le CheckBoxGadget
                
                Gestion_Choix()
                
                
         EndSelect
        
     EndIf
    
    
Until Event = #PB_Event_CloseWindow ; si on appui sur la croix, on ferme le programme


End ; Fin du programme



--------------------
Le Soldat Inconnu [Régis]
Méfiez vous de l'eau qui dort, les ténèbres sommeillent sous sa surface.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

EditorGadget et Enregistrer un fichier texte

Ce code montre comment enregistré le contenu d'un EditorGadget dans un fichier texte.


; mis en V4.00 Dobro
; ======================================
;- declaration des constantes
; il faut donner au maximum un nom a la constantes qui représente son utilité


; on déclare chaque type de constantes dans une rubrique


; Window
#fenetre_principale = 0


; Gadget
#gadget_affiche_texte = 0
#gadget_editeur = 1


; ======================================
;- declaration des variables globales, des strutures, des listes ou tableau, ...




; ======================================
;- declaration des procedures



Procedure Ouvre_Fenetre_principale()
    
     If OpenWindow ( #fenetre_principale , 0, 0, 200, 200, "fenêtre principale" , #PB_Window_SystemMenu | #PB_Window_WindowCentered )
        
         ; on créer la liste des éléments (gadget) de la fenètre
        
         If CreateGadgetList ( WindowID ( #fenetre_principale ))
            
             ButtonGadget ( #gadget_affiche_texte , 10, 10, 180, 20, "Créer le fichier texte" )
            
             EditorGadget ( #gadget_editeur , 10, 40, 180, 150, Text1) ; on crée un EditorGadget
            
             AddGadgetItem ( #gadget_editeur , 0, "Tapez du texte ici" ) ; on crée une ligne de texte dans l'EditorGadget
            
         EndIf
        
     EndIf
    
EndProcedure



Procedure Creation_Fichier_Texte()
    
     ; on compte le nombre de lignes
    Nombre_de_ligne = CountGadgetItems ( #gadget_editeur )
    
    
     ; on crée un fichier texte
     ; comme je n'ai pas indiqué d'adresse pour le chier, celui sera écrit à l'emplacement du programme
    
     If CreateFile (0, "EditorGadget.txt" )
        
         ; On lit chaque ligne de l'EditorGadget, puis on l'enregistre dans le fichier "EditorGadget.txt"
        
         For n = 0 To Nombre_de_ligne - 1 ; boucle For de la première ligne à la dernière
            
             ; on lit le texte de ligne n
            Texte.s = GetGadgetItemText ( #gadget_editeur , n, 0)
            
             ; on enregistre le texte dans le fichiers "EditorGadget.txt"
             WriteStringN (0,Texte) ; permet d'écrire dans le fichier en cours, ici, le 0 puis ajoute un saut de ligne
            
         Next
        
         ; Une boucle permet de faire évoluer une variable entre 2 valeurs
         ; Ici, la valeur n va prendre les valeurs suivantes :
         ; 0, 1, 2, 3, 4, ... , Nombre_de_ligne - 1
         ; Pour chaque valeur de n, les actions placées entre le For et le Next seront executées
        
         CloseFile (0) ; on ferme le fichier 0 qui correspond à "EditorGadget.txt"
        
     EndIf
    
    
    
     ; On ouvre le fichier texte avec les fonction RunProgram
     RunProgram ( "EditorGadget.txt" )
    
    
EndProcedure




; =====================================
;- Debut du programme


; On initialise tous d'abord les valeurs


; On affiche la fenêtre les boutons
Ouvre_Fenetre_principale()


; On lance la boucle de gestion des évènements de la fenêtre ouverte

Repeat
    
    Event = WaitWindowEvent ()
    
    
     ; Mettre ici la gestion des évènements
    
     If Event = #PB_Event_Gadget
        
         Select EventGadget () ; boutons, zone de texte, ...
            
             Case #gadget_affiche_texte ; cet évènement sera activé à chaque appui sur le buttongadget
                
                Creation_Fichier_Texte()
                
                
         EndSelect
        
     EndIf
    
    
Until Event = #PB_Event_CloseWindow ; si on appui sur la croix, on ferme le programme


End ; Fin du programme




--------------------
Le Soldat Inconnu [Régis]
Méfiez vous de l'eau qui dort, les ténèbres sommeillent sous sa surface.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

EditorGadget et Ouvrir un fichier

Cette exemple montre comment ouvrir un fichier texte dans un EditorGadget


; Mis en V4.00 Dobro
; ======================================
;- declaration des constantes
; il faut donner au maximum un nom a la constantes qui représente son utilité


; on déclare chaque type de constantes dans une rubrique


; Window
#fenetre_principale = 0


; Gadget
#gadget_Ouvrir = 0
#gadget_editeur = 1


; ======================================
;- declaration des variables globales, des strutures, des listes ou tableau, ...




; ======================================
;- declaration des procedures



Procedure Ouvre_Fenetre_principale()
    
     If OpenWindow ( #fenetre_principale , 0, 0, 400, 400, "fenêtre principale" , #PB_Window_SystemMenu | #PB_Window_WindowCentered )
        
        
         ; on créer la liste des éléments (gadget) de la fenètre
        
         If CreateGadgetList ( WindowID ( #fenetre_principale ))
            
             ButtonGadget ( #gadget_Ouvrir , 10, 10, 380, 20, "Ouvrir un fichier texte" )
            
             EditorGadget ( #gadget_editeur , 10, 40, 380, 350, Text1) ; on crée un EditorGadget
            
         EndIf
        
     EndIf
    
EndProcedure



Procedure Ouvrir_Fichier_Texte()
    
     ; on affiche la fenêtre pour choisir un fichier texte
    Fichier.s = OpenFileRequester ( "Ouvrir un fichier texte" , "" , "Fichiers Textes ou PureBasic|*.txt;*.pb" , 0)
    
     ; quand on annule, cette fonction renvoie un texte vide ""
    
    
     If Fichier <> "" ; si on a pas annulé
        
         ; on ouvre le fichier, et on l'associ au numéro 0
        
         If OpenFile (0, Fichier)
            
             Repeat
                
                 ; on lit le fichier
                Texte.s = ReadString (0) ; cette fonction lit un ligne entière du fichier texte
                
                 ; on écrit le texte dans l'EditorGadget
                 AddGadgetItem ( #gadget_editeur , -1 ,Texte) ; le -1 signifie qu'on se place à la fin dans l'EditorGadget
                
             Until Eof (0) ; répète tant que l'on n'est pas à la fin du fichier
            
            
             CloseFile (0) ; on ferme le chier 0
            
         EndIf
        
     EndIf
    
EndProcedure




; =====================================
;- Debut du programme


; On initialise tous d'abord les valeurs




; On affiche la fenêtre les boutons

Ouvre_Fenetre_principale()


; On lance la boucle de gestion des évènements de la fenêtre ouverte

Repeat
    
    Event = WaitWindowEvent ()
    
    
    
     ; Mettre ici la gestion des évènements
    
     If Event = #PB_Event_Gadget
        
         Select EventGadget () ; boutons, zone de texte, ...
            
             Case #gadget_Ouvrir ; cet évènement sera activé à chaque changement dans le CheckBoxGadget
                Ouvrir_Fichier_Texte()
                
                
         EndSelect
        
     EndIf
    
    
    
Until Event = #PB_Event_CloseWindow ; si on appui sur la croix, on ferme le programme



End ; Fin du programme



--------------------
Le Soldat Inconnu [Régis]
Méfiez vous de l'eau qui dort, les ténèbres sommeillent sous sa surface.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

ComboBoxGadget

Gestion d'un ComboBoxGadget :
- Ajout d'élément
- Affichage de l'élément choisi et de sa position (lorsqu'un élément est choisi la position est -1)


; Mis en V4.00 Dobro
;======================================
;- declaration des constantes
; il faut donner au maximum un nom a la constantes qui représente son utilité


; on déclare chaque type de constantes dans une rubrique


; Window
#fenetre_principale = 0


; Gadget
#gadget_ecrire_texte = 0
#gadget_bouton_ajout_element = 1
#gadget_liste = 2
#texte_ecrire_ici = 3
#texte_selection = 4
#texte_affiche_selection = 5


;======================================
;- declaration des variables globales, des strutures, des listes ou tableau, ...




;======================================
;- declaration des procedures



Procedure Ouvre_Fenetre_principale()
    
     If OpenWindow ( #fenetre_principale , 0, 0, 300, 200, "fenêtre principale" , #PB_Window_SystemMenu | #PB_Window_WindowCentered )
        
         ; on créer la liste des éléments (gadget) de la fenètre
        
         If CreateGadgetList ( WindowID ( #fenetre_principale ))
            
             TextGadget ( #texte_ecrire_ici , 10, 5, 280, 15, "Ecrire le nom du nouvel élément ici :" )
            
             StringGadget ( #gadget_ecrire_texte , 10, 20, 280, 20, "" )
            
             ButtonGadget ( #gadget_bouton_ajout_element , 10, 45, 280, 20, "Ajouter cet élément dans la liste" )
            
             ComboBoxGadget ( #gadget_liste , 10, 100, 280, 200)
            
             TextGadget ( #texte_selection , 10, 125, 280, 15, "L'élément sélectionné est :" )
            
             TextGadget ( #texte_affiche_selection , 10, 140, 280, 15, "Aucun élément sélectionné [position = -1]" )
            
         EndIf
        
     EndIf
    
EndProcedure





;=====================================
;- Debut du programme


; On initialise tous d'abord les valeurs


; On affiche la fenêtre les boutons

Ouvre_Fenetre_principale()


; On lance la boucle de gestion des évènements de la fenêtre ouverte

Repeat
    
    Event = WaitWindowEvent ()
    
    
     ; Mettre ici la gestion des évènements
    
     If Event = #PB_Event_Gadget
        
         Select EventGadget () ; boutons, zone de texte, ...
            
             Case #gadget_bouton_ajout_element ; cet évènement sera activé à chaque appui sur le bouton
                 AddGadgetItem ( #gadget_liste , -1, GetGadgetText ( #gadget_ecrire_texte )) ; on ajoute le texte du stringgadget dans comboboxgadget
                
                 SetGadgetText ( #gadget_ecrire_texte , "" ) ; on efface le texte tapé
                
                
             Case #gadget_liste
                Position.l = GetGadgetState ( #gadget_liste ) ; on récupère la position de l'élément choisi (renvoi -1 pour pas de psoition choisi)
                
                 If Position >=0 ; si un élément est choisi
                    
                     SetGadgetText ( #texte_affiche_selection , GetGadgetItemText ( #gadget_liste , Position, 1) + " [position = " + Str (Position) + "]" )
                     ; on affiche le texte et la position de l'élément choisi
                    
                 EndIf
                
                
         EndSelect
        
     EndIf
    
    
Until Event = #PB_Event_CloseWindow ; si on appui sur la croix, on ferme le programme


End ; Fin du programme



--------------------
Le Soldat Inconnu [Régis]
Méfiez vous de l'eau qui dort, les ténèbres sommeillent sous sa surface.
comtois
Messages : 5186
Inscription : mer. 21/janv./2004 17:48
Contact :

Message par comtois »

ListIconGadget

Même principe que précédement.


; Mis en V4.00 Dobro
;======================================
;- declaration des constantes
; il faut donner au maximum un nom a la constantes qui représente son utilité


; on déclare chaque type de constantes dans une rubrique


; Window
#fenetre_principale = 0


; Gadget
#gadget_ecrire_texte = 0
#gadget_bouton_ajout_element = 1
#gadget_liste = 2
#texte_ecrire_ici = 3
#texte_selection = 4
#texte_affiche_selection = 5


;======================================
;- declaration des variables globales, des strutures, des listes ou tableau, ...




;======================================
;- declaration des procedures



Procedure Ouvre_Fenetre_principale()
    
     If OpenWindow ( #fenetre_principale , 0, 0, 300, 400, "fenêtre principale" , #PB_Window_SystemMenu | #PB_Window_WindowCentered )
        
         ; on créer la liste des éléments (gadget) de la fenètre
        
         If CreateGadgetList ( WindowID ( #fenetre_principale ))
            
             TextGadget ( #texte_ecrire_ici , 10, 5, 280, 15, "Ecrire le nom du nouvel élément ici :" )
            
             StringGadget ( #gadget_ecrire_texte , 10, 20, 280, 20, "" )
            
             ButtonGadget ( #gadget_bouton_ajout_element , 10, 45, 280, 20, "Ajouter cet élément dans la liste" )
            
             ListIconGadget ( #gadget_liste , 10, 100, 280, 200, "Liste des éléments" , 275, #PB_ListIcon_FullRowSelect )
            
             TextGadget ( #texte_selection , 10, 325, 280, 15, "L'élément sélectionné est :" )
            
             TextGadget ( #texte_affiche_selection , 10, 340, 280, 15, "Aucun élément sélectionné [position = -1]" )
            
         EndIf
        
     EndIf
    
EndProcedure





;=====================================
;- Debut du programme


; On initialise tous d'abord les valeurs


; On affiche la fenêtre les boutons
Ouvre_Fenetre_principale()


; On lance la boucle de gestion des évènements de la fenêtre ouverte

Repeat
    
    Event = WaitWindowEvent ()
    
    
     ; Mettre ici la gestion des évènements
    
     If Event = #PB_Event_Gadget
        
         Select EventGadget () ; boutons, zone de texte, ...
            
             Case #gadget_bouton_ajout_element ; cet évènement sera activé à chaque appui sur le bouton
                 AddGadgetItem ( #gadget_liste , -1, GetGadgetText ( #gadget_ecrire_texte )) ; on ajoute le texte du stringgadget dans le ListIconGadget
                
                 SetGadgetText ( #gadget_ecrire_texte , "" ) ; on efface le texte tapé
                
                
             Case #gadget_liste
                Position.l = GetGadgetState ( #gadget_liste ) ; on récupère la position de l'élément choisi (renvoi -1 pour pas de psoition choisi)
                
                 If Position >=0 ; si un élément est choisi
                    
                     SetGadgetText ( #texte_affiche_selection , GetGadgetItemText ( #gadget_liste , Position, 1) + " [position = " + Str (Position) + "]" )
                    
                     ; on affiche le texte et la position de l'élément choisi
                    
                 EndIf
                
                
         EndSelect
        
     EndIf
    
    
Until Event = #PB_Event_CloseWindow ; si on appui sur la croix, on ferme le programme


End ; Fin du programme



--------------------
Le Soldat Inconnu [Régis]
Méfiez vous de l'eau qui dort, les ténèbres sommeillent sous sa surface.
Répondre