Page 1 sur 2

Procedure qui fonctionne bizarrement .

Publié : dim. 10/avr./2005 14:42
par Cagou-77
Bonjour,

j'ai implanté une procedure d'évenement lorsque je la charge sans appui de touche ou souris elle teste tous les gadgets alors que WaitWindowEvent()
est requis .

j'ai placé un debug pour voir ou cela se produisait , je pense que cela vient du fait que je fait un teste sur plusieurs gadgets ex :

ElseIf GadgetID = #RecCompC Or GadgetID = #RecIntiC Or GadgetID = #RecTeleC

Il affiche deux fois "Avant ChargeSousFormulaireClient"
Il affiche deux fois "Avant ChargeSousFormulaireFournisseur"
et une fois "avant xdbseek"


voici la procedure .

Code : Tout sélectionner

Procedure evNewgest()
Repeat
  Event = WaitWindowEvent()
  If Event = #PB_EventGadget
    GadgetID = EventGadgetID()
    If GadgetID = #NgOng
      Debug "GadgetID: #NgOng"
    ElseIf GadgetID = #RecCompC Or GadgetID = #RecIntiC Or GadgetID = #RecTeleC
            Debug "Avant ChargeSousFormulaireClient"
            ChargeSousFormulaireClient()
    ElseIf GadgetID = #RecCompF Or GadgetID = #RecIntiF Or GadgetID = #RecTeleF
            Debug "Avant ChargeSousFormulaireFournisseur"
            ChargeSousFormulaireFournisseur()
    ElseIf GadgetID = #LstClie Or GadgetID = #LstFour
            If      GadgetID = #LstClie 
                    CompteTiers = GetGadgetItemText( #LstClie, GetGadgetState(#LstClie), 0)
            ElseIf GadgetID = #LstFour
                    CompteTiers = GetGadgetItemText( #LstFour, GetGadgetState(#LstFour), 0)
            EndIf
            Debug "avant xdbseek"
;            xdbSeek( tTiers, iTiersCompte, CompteTiers )
;            evClasseur()
    ElseIf GadgetID = #NgDate
      Debug "GadgetID: #NgDate"
    ElseIf GadgetID = #NgButAban
      Debug "GadgetID: #NgButAban"
      Break
    ElseIf GadgetID = #bArticles
      Debug "GadgetID: #bArticle"
      wiWindArt()
      evArticle()
    EndIf
  EndIf
Until Event = #PB_EventCloseWindow
EndProcedure

quelq'un aurat-il une suggestion Merci d'Avance .
Version Pure 3.93

Publié : dim. 10/avr./2005 15:59
par filperj
Tu devrais essayer de reproduire le bug dans un code court et compilable, que tout le monde puisse tester...

Publié : dim. 10/avr./2005 17:59
par Anonyme2
Salut Cagou-77,

comme on a pas le code c'est difficile de dire si c'est un bug mais regarde bien l'exemple qui suit.

Si je lit la doc PB, #PB_EventGadget est envoyé si :
#PB_Event_Gadget : Un gadget a été cliqué

Dans le code qui suit, j'ai créé 3 boutons radio et ensuite je donne le focus à un des bouton avec la commande activategadget().

Cette commande va engendrer un événement de type #PB_Event_Gadget (bug ou volontaire ?) qui fait que même si je ne clique pas sur un bouton, la boucle d'événement va tout de même afficher quelque chose.
Je pense que dans ton code, quelque part il doit y avoir des gadget qui prennent le focus; peut-être même que d'autres événements engrendrent un #PB_Event_Gadget.

Pour corriger ton code ,c'est simple, regarde le code de cederavic corrigé par Nico (c'est la correction de Nico qu'il faut suivre) et la solution est là. Tu doit intercepter un clic simple ou double ou un événement clavier mais ça doit être corrigé dans la boucle
Le message date d'aujourd'hui et c'est ici
http://purebasic.hmt-forum.com/viewtopic.php?t=2687

Dans le code qui suit, tu peux changer la commande activategadget() (sur le gadget voulu, il y a 3 lignes), met un ; devant les 2 ligne à désactiver et supprime le ; devant la ligne voulue et tu verras que le gadget en question est bien activé par cette commande.

Code : Tout sélectionner

Procedure evNewgest()
Repeat
    Event = WaitWindowEvent()
         If Event = #PB_EventGadget
              GadgetID = EventGadgetID()
                 If GadgetID = 0
                    Debug "GadgetID: 0"
                 ElseIf GadgetID = 1
                    Debug "GadgetID: 1"
                 ElseIf GadgetID = 2
                    Debug "GadgetID: 2"
                 EndIf
         EndIf
Until Event = #PB_EventCloseWindow
EndProcedure

OpenWindow(0, 0, 0, 400, 300, #Pb_Window_SystemMenu | #PB_Window_ScreenCentered, "")
    CreateGadgetList(WindowID())

    OptionGadget(0, 30, 20, 60, 20, "Option 0")
    OptionGadget(1, 30, 45, 60, 20, "Option 1")
    OptionGadget(2, 30, 70, 60, 20, "Option 2")
    
  ;  ActivateGadget(0)
  ;  ActivateGadget(1)
    ActivateGadget(2)

    evNewgest()
   
End 

Publié : dim. 10/avr./2005 18:56
par Le Soldat Inconnu

Code : Tout sélectionner

Il affiche deux fois "Avant ChargeSousFormulaireClient" 
Il affiche deux fois "Avant ChargeSousFormulaireFournisseur"
tu n'aurais pas, par hazard mis advancedgadgetevent() ?

ça y ressemble beaucoup :roll:

Procedure qui fonctionne bizarrement

Publié : dim. 10/avr./2005 21:19
par Cagou-77
je vous ai préparer un code tournant pour tester .
à vous de voir !

Code : Tout sélectionner


#StringFont = $FAF1A3
#StringText = $5700AE
#ListconFont = $DAF2F3
#ListconText = $AA5500

Enumeration
  #Newgest
EndEnumeration

Enumeration
  #NgOng
  #FrameZrecC
  #RecIntiC
  #RecTeleC
  #LstClie
  #FrameZrecF
  #RecCompF
  #RecIntiF
  #RecTeleF
  #LstFour
  #lDate
  #NgDate
  #NgButAban
  #RecCompC
  #bArticles
EndEnumeration

Global RacineCompteClients.s
Global RacineCompteFournisseurs.s
Global NewNumCompteC.s
Global NewNumCompteF.s

RacineCompteFournisseurs = "401"
RacineCompteClients = "411"


Procedure wiNewgest()
  If OpenWindow(#Newgest, 243, 41, 710, 581,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered, "NewGest")
    If CreateGadgetList(WindowID())
      TextGadget(#lDate, 420, 10, 70, 20, "Date du Jour :")
      StringGadget(#NgDate, 500, 10, 190, 20, "")
      ButtonGadget(#NgButAban, 580, 550, 110, 20, "Abandon")
         SetGadgetColor(#NgDate, #StringText, #StringFont)
         If LoadFont(0, "Arial", 9, #PB_Font_Bold)
            SetGadgetFont(#NgDate, FontID())
         EndIf
      
      ;- NgOng
      PanelGadget(#NgOng, 20, 30, 670, 510)
      AddGadgetItem(#NgOng, -1, "Clients")
      Frame3DGadget(#FrameZrecC, 3, 28, 657, 60, "Zone de Recherche")
      StringGadget(#RecCompC, 8, 58, 60, 20, "411", #PB_String_UpperCase)
       SetGadgetColor(#RecCompC, #StringText, #StringFont)
       SetGadgetFont(#RecCompC, FontID())
      StringGadget(#RecIntiC, 68, 58, 220, 20, "", #PB_String_UpperCase)
       SetGadgetColor(#RecIntiC, #StringText, #StringFont)
       SetGadgetFont(#RecIntiC, FontID())
      StringGadget(#RecTeleC, 288, 58, 100, 20, "", #PB_String_UpperCase)
       SetGadgetColor(#RecTeleC, #StringText, #StringFont)
       SetGadgetFont(#RecTeleC, FontID())
      
      ListIconGadget(#LstClie, 8, 98, 650, 380, "Compte", 60, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
      AddGadgetColumn(#LstClie, 2, "Intitulé", 180)
      AddGadgetColumn(#LstClie, 3, "Téléphone", 100)
      AddGadgetColumn(#LstClie, 4, "Adresse", 200)
      AddGadgetColumn(#LstClie, 5, "C.A.", 65)
       SetListIconGadgetColor(#LstClie, #ListconFont)
       
      ;-
      AddGadgetItem(#NgOng, -1, "Fournisseurs")
      Frame3DGadget(#FrameZrecF, 3, 28, 657, 60, "Zone de Recherche")
      StringGadget(#RecCompF, 8, 58, 60, 20, "401", #PB_String_UpperCase)
       SetGadgetColor(#RecCompF, #StringText, #StringFont)
       SetGadgetFont(#RecCompF, FontID())
      StringGadget(#RecIntiF, 68, 58, 220, 20, "", #PB_String_UpperCase)
       SetGadgetColor(#RecIntiF, #StringText, #StringFont)
       SetGadgetFont(#RecIntiF, FontID())
      StringGadget(#RecTeleF, 288, 58, 100, 20, "", #PB_String_UpperCase)
       SetGadgetColor(#RecTeleF, #StringText, #StringFont)
       SetGadgetFont(#RecTeleF, FontID())
      
      ;-
      ListIconGadget(#LstFour, 8, 98, 650, 380, "Compte", 60, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
      AddGadgetColumn(#LstFour, 2, "Intitulé", 180)
      AddGadgetColumn(#LstFour, 3, "Téléphone", 100)
      AddGadgetColumn(#LstFour, 4, "Adresse", 200)
      AddGadgetColumn(#LstFour, 5, "C.A.", 65)
       SetListIconGadgetColor(#LstFour, #ListconFont)
      AddGadgetItem(#NgOng, -1, "Gestion")
      HyperLinkGadget(#bArticles, 25, 40, 150, 20, "Gestion des Articles", $2C16A4 )
      SetGadgetFont(#bArticles, FontID())
      AddGadgetItem(#NgOng, -1, "Utilitaires")
      CloseGadgetList()
      
    EndIf
  EndIf
;   HideWindow( #Newgest, 1 )
EndProcedure

Procedure evNewgest()
Repeat
  Event = WaitWindowEvent()
  If Event = #PB_EventGadget
    GadgetID = EventGadgetID()
    If GadgetID = #NgOng
      Debug "GadgetID: #NgOng"
    ElseIf GadgetID = #RecCompC Or GadgetID = #RecIntiC Or GadgetID = #RecTeleC
            Debug "Avant Procedure à intégrer I"
;           Procedure à intégrer
    ElseIf GadgetID = #RecCompF Or GadgetID = #RecIntiF Or GadgetID = #RecTeleF
            Debug "Avant Procedure à intégrer II"
;           Procedure à intégrer
    ElseIf GadgetID = #LstClie Or GadgetID = #LstFour
            If      GadgetID = #LstClie 
;                    chargement de variable
            ElseIf GadgetID = #LstFour
;                    chargement de variable
            EndIf
            Debug "Avant Procedure à intégrer III"
;           Procedure à intégrer
    ElseIf GadgetID = #NgDate
      Debug "GadgetID: #NgDate"
    ElseIf GadgetID = #NgButAban
      Debug "GadgetID: #NgButAban"
      Break
    ElseIf GadgetID = #bArticles
      Debug "GadgetID: #bArticle"
;           Procedure à intégrer
    EndIf
  EndIf
Until Event = #PB_EventCloseWindow
EndProcedure

wiNewgest()
evNewgest()
merci d'avance pour votre aide .
Bonsoir
Michel

Publié : dim. 10/avr./2005 21:57
par filperj
Ce sont les stringgadgets reccompf et reccompc qui provoquent les évènements (fait un debug gadgetid).
Ces gadgets sont sensés envoyer un évènement chaque fois que leur contenu change, si j'ai bien compris.

Publié : lun. 11/avr./2005 5:28
par Cagou-77
Bonjour,

j'ai retester la procedure le problême vient des stringgadgets le focus est testé deux fois dans la boucle contrairement aux autres Gadgets .


pour répondre à filperj
lorsque l'affichage du formulaire est effectué des que l'on clic sur un stringGadget ( que l'on lui donne le focus ) il est testé deux fois .

il va falloir que j'adapte mon prog pour éviter cela car je fait une recherche dans un fichier sur la valeur des stringgadgets et là il me fait deux fois la recherche et le chargement de la listicon .

faite un essai de clics sur les différents gadgets ce sera parlant .

merci de votre attention à ce problême .
Bonne Journée

Publié : lun. 11/avr./2005 11:33
par nico
A chaque évènements correpond un message, à toi de les traiter. L'aide sur les StringsGadget ne propose pas de lien sur EventType() et on a tendance à l'oublier. C'est ce message qui permet de traiter les différents cas.

Comme le souligne Denis , Cedravic a rencontré le même type d'erreur car il ne traitait pas EventType(). Je me suis fait avoir aussi sur certaines pages qui ne renvoient pas forcément sur toutes les commandes disponibles.

Publié : lun. 11/avr./2005 16:36
par Cagou-77
J'ai tester la procedure avec Pure 3.93 et Pure 3.92 la procedure ne réagit pas de la même façon Pourquoi ?

avec un WaitWindowEvent() normalement on bloc le programme donc il ne devrait pas tester les gadgets avant l'appui du clavier ou de la souris .
là il y a des choses que je ne comprends pas .

A VOIR

Il y aurait t-il quelqu'un pour tester le code ci-dessus pour m'expliquer que se n'est pas moi qui Bug .

salut
Michel

Publié : lun. 11/avr./2005 17:32
par Cagou-77
Bon j'ai trouvé une soluce pour eviter le prob

Code : Tout sélectionner

#StringFont = $FAF1A3
#StringText = $5700AE
#ListconFont = $DAF2F3
#ListconText = $AA5500

Enumeration
   #Newgest
EndEnumeration

Enumeration
   #NgOng
   #FrameZrecC
   #RecIntiC
   #RecTeleC
   #LstClie
   #FrameZrecF
   #RecCompF
   #RecIntiF
   #RecTeleF
   #LstFour
   #lDate
   #NgDate
   #NgButAban
   #RecCompC
   #bArticles
EndEnumeration

Global RacineCompteClients.s
Global RacineCompteFournisseurs.s
Global NewNumCompteC.s
Global NewNumCompteF.s

RacineCompteFournisseurs = "401"
RacineCompteClients = "411"


Procedure wiNewgest()
   If OpenWindow(#Newgest, 243, 41, 710, 581, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered, "NewGest")
      If CreateGadgetList(WindowID())
         TextGadget(#lDate, 420, 10, 70, 20, "Date du Jour :")
         StringGadget(#NgDate, 500, 10, 190, 20, "")
         ButtonGadget(#NgButAban, 580, 550, 110, 20, "Abandon")
         SetGadgetColor(#NgDate, #StringText, #StringFont)
         If LoadFont(0, "Arial", 9, #PB_Font_Bold)
            SetGadgetFont(#NgDate, FontID())
         EndIf
         
         ;- NgOng
         PanelGadget(#NgOng, 20, 30, 670, 510)
            AddGadgetItem(#NgOng, -1, "Clients")
            Frame3DGadget(#FrameZrecC, 3, 28, 657, 60, "Zone de Recherche")
            StringGadget(#RecCompC, 8, 58, 60, 20, "411", #PB_String_UpperCase)
            SetGadgetColor(#RecCompC, #StringText, #StringFont)
            SetGadgetFont(#RecCompC, FontID())
            StringGadget(#RecIntiC, 68, 58, 220, 20, "", #PB_String_UpperCase)
            SetGadgetColor(#RecIntiC, #StringText, #StringFont)
            SetGadgetFont(#RecIntiC, FontID())
            StringGadget(#RecTeleC, 288, 58, 100, 20, "", #PB_String_UpperCase)
            SetGadgetColor(#RecTeleC, #StringText, #StringFont)
            SetGadgetFont(#RecTeleC, FontID())
            
            ListIconGadget(#LstClie, 8, 98, 650, 380, "Compte", 60, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
            AddGadgetColumn(#LstClie, 2, "Intitulé", 180)
            AddGadgetColumn(#LstClie, 3, "Téléphone", 100)
            AddGadgetColumn(#LstClie, 4, "Adresse", 200)
            AddGadgetColumn(#LstClie, 5, "C.A.", 65)
            SetListIconGadgetColor(#LstClie, #ListconFont)
            
            ;-
            AddGadgetItem(#NgOng, -1, "Fournisseurs")
            Frame3DGadget(#FrameZrecF, 3, 28, 657, 60, "Zone de Recherche")
            StringGadget(#RecCompF, 8, 58, 60, 20, "401", #PB_String_UpperCase)
            SetGadgetColor(#RecCompF, #StringText, #StringFont)
            SetGadgetFont(#RecCompF, FontID())
            StringGadget(#RecIntiF, 68, 58, 220, 20, "", #PB_String_UpperCase)
            SetGadgetColor(#RecIntiF, #StringText, #StringFont)
            SetGadgetFont(#RecIntiF, FontID())
            StringGadget(#RecTeleF, 288, 58, 100, 20, "", #PB_String_UpperCase)
            SetGadgetColor(#RecTeleF, #StringText, #StringFont)
            SetGadgetFont(#RecTeleF, FontID())
            
            ;-
            ListIconGadget(#LstFour, 8, 98, 650, 380, "Compte", 60, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
            AddGadgetColumn(#LstFour, 2, "Intitulé", 180)
            AddGadgetColumn(#LstFour, 3, "Téléphone", 100)
            AddGadgetColumn(#LstFour, 4, "Adresse", 200)
            AddGadgetColumn(#LstFour, 5, "C.A.", 65)
            SetListIconGadgetColor(#LstFour, #ListconFont)
            AddGadgetItem(#NgOng, -1, "Gestion")
            HyperLinkGadget(#bArticles, 25, 40, 150, 20, "Gestion des Articles", $2C16A4 )
            SetGadgetFont(#bArticles, FontID())
            AddGadgetItem(#NgOng, -1, "Utilitaires")
         CloseGadgetList()
         
      EndIf
   EndIf
   ; HideWindow( #Newgest, 1 )
EndProcedure

Procedure Wait()
   boucle.l = 0
   Repeat
      ev = WaitWindowEvent()
      boucle = boucle + 1
      Debug Boucle
      
   Until ev = #PB_EventCloseWindow
EndProcedure

Procedure evNewgest()
   Repeat
      Event = WaitWindowEvent()
      If Event = #PB_EventGadget
         Evtype = EventType()
         GadgetID = EventGadgetID()
         If GadgetID = #NgOng
            Debug "GadgetID: #NgOng"
         ElseIf GadgetID = #RecCompC Or GadgetID = #RecIntiC Or GadgetID = #RecTeleC
            If evType = #PB_EventType_Focus
               Debug "Avant Procedure à intégrer I"
               ; Procedure à intégrer
            EndIf
         ElseIf GadgetID = #RecCompF Or GadgetID = #RecIntiF Or GadgetID = #RecTeleF
            If evType = #PB_EventType_Focus
               Debug "Avant Procedure à intégrer II"
               ; Procedure à intégrer
            EndIf
         ElseIf GadgetID = #LstClie Or GadgetID = #LstFour
            If evType = #PB_EventType_Focus
               If GadgetID = #LstClie
                  ; chargement de variable
               ElseIf GadgetID = #LstFour
                  ; chargement de variable
               EndIf
               Debug "Avant Procedure à intégrer III"
               ; Procedure à intégrer
            EndIf
         ElseIf GadgetID = #NgDate
            Debug "GadgetID: #NgDate"
         ElseIf GadgetID = #NgButAban
            Debug "GadgetID: #NgButAban"
            Break
         ElseIf GadgetID = #bArticles
            Debug "GadgetID: #bArticle"
            ; Procedure à intégrer
         EndIf
      EndIf
   Until Event = #PB_EventCloseWindow
EndProcedure

wiNewgest()
evNewgest()
J'ai implanté un test sur le focus :
Evtype = EventType()
If evType = #PB_EventType_Focus
Endif
et là ca test le gadget que lorsque l'on appuis sur le clavier ou la souris

j'attends vos commentaires ( j'ai peut-etre soulevé un lièvre )

Publié : lun. 11/avr./2005 17:34
par Anonyme2
Je pense que c'est un bug car ton code fonctionne comme tu le dis, la boucle est interprêtée. En faisant des essais, on a le même phénomène en utilisant la commande SetGadgetText() sur les stringgadget.

Publié : lun. 11/avr./2005 17:42
par Anonyme2
En compilant ton code (tu utilises mes librairies) j'ai eu une erreur du compilateur avec la lib MoreListicongadget (la version de mars) et je viens de corriger mon erreur (j'ai déclarée une section avec le même nom de section que celle de PB)

La lib est au même endroit ici


ce fichier est à mettre dans le dossier PureBasic\PureLibraries\UserLibraries

Publié : lun. 11/avr./2005 18:56
par Cagou-77
Ok, Merci Denis je vais essayer ca .

Bonne Soirée

Publié : lun. 11/avr./2005 19:24
par nico
je ne sais pas si on parle de la même chose mais j'ai remarqué la constatation suivante:

Si on crée un StringGadget avec une chaine de caractère non nulle , on a un évènement de type #PB_EventType_LeftClick (de valeur 0) sur les Gadgets concernés.

Publié : lun. 11/avr./2005 19:52
par Cagou-77
tu a peut-etre raison il faut que je teste ca .
en attendant j'ai fait le code suivant :

Code : Tout sélectionner

#StringFont = $FAF1A3
#StringText = $5700AE
#ListconFont = $DAF2F3
#ListconText = $AA5500

Enumeration
   #Newgest
EndEnumeration

Enumeration
   #NgOng
   #FrameZrecC
   #RecIntiC
   #RecTeleC
   #LstClie
   #FrameZrecF
   #RecCompF
   #RecIntiF
   #RecTeleF
   #LstFour
   #lDate
   #NgDate
   #NgButAban
   #RecCompC
   #bArticles
EndEnumeration

Global RacineCompteClients.s
Global RacineCompteFournisseurs.s
Global NewNumCompteC.s
Global NewNumCompteF.s

RacineCompteFournisseurs = "401"
RacineCompteClients = "411"


Procedure wiNewgest()
   If OpenWindow(#Newgest, 243, 41, 710, 581, #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered, "NewGest")
      If CreateGadgetList(WindowID())
         TextGadget(#lDate, 420, 10, 70, 20, "Date du Jour :")
         StringGadget(#NgDate, 500, 10, 190, 20, "")
         ButtonGadget(#NgButAban, 580, 550, 110, 20, "Abandon")
         SetGadgetColor(#NgDate, #StringText, #StringFont)
         If LoadFont(0, "Arial", 9, #PB_Font_Bold)
            SetGadgetFont(#NgDate, FontID())
         EndIf
         
         ;- NgOng
         PanelGadget(#NgOng, 20, 30, 670, 510)
            AddGadgetItem(#NgOng, -1, "Clients")
            Frame3DGadget(#FrameZrecC, 3, 28, 657, 60, "Zone de Recherche")
            StringGadget(#RecCompC, 8, 58, 60, 20, "411", #PB_String_UpperCase)
            SetGadgetColor(#RecCompC, #StringText, #StringFont)
            SetGadgetFont(#RecCompC, FontID())
            StringGadget(#RecIntiC, 68, 58, 220, 20, "", #PB_String_UpperCase)
            SetGadgetColor(#RecIntiC, #StringText, #StringFont)
            SetGadgetFont(#RecIntiC, FontID())
            StringGadget(#RecTeleC, 288, 58, 100, 20, "", #PB_String_UpperCase)
            SetGadgetColor(#RecTeleC, #StringText, #StringFont)
            SetGadgetFont(#RecTeleC, FontID())
            
            ListIconGadget(#LstClie, 8, 98, 650, 380, "Compte", 60, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
            AddGadgetColumn(#LstClie, 2, "Intitulé", 180)
            AddGadgetColumn(#LstClie, 3, "Téléphone", 100)
            AddGadgetColumn(#LstClie, 4, "Adresse", 200)
            AddGadgetColumn(#LstClie, 5, "C.A.", 65)
            SetListIconGadgetColor(#LstClie, #ListconFont)
            
            ;-
            AddGadgetItem(#NgOng, -1, "Fournisseurs")
            Frame3DGadget(#FrameZrecF, 3, 28, 657, 60, "Zone de Recherche")
            StringGadget(#RecCompF, 8, 58, 60, 20, "401", #PB_String_UpperCase)
            SetGadgetColor(#RecCompF, #StringText, #StringFont)
            SetGadgetFont(#RecCompF, FontID())
            StringGadget(#RecIntiF, 68, 58, 220, 20, "", #PB_String_UpperCase)
            SetGadgetColor(#RecIntiF, #StringText, #StringFont)
            SetGadgetFont(#RecIntiF, FontID())
            StringGadget(#RecTeleF, 288, 58, 100, 20, "", #PB_String_UpperCase)
            SetGadgetColor(#RecTeleF, #StringText, #StringFont)
            SetGadgetFont(#RecTeleF, FontID())
            
            ;-
            ListIconGadget(#LstFour, 8, 98, 650, 380, "Compte", 60, #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
            AddGadgetColumn(#LstFour, 2, "Intitulé", 180)
            AddGadgetColumn(#LstFour, 3, "Téléphone", 100)
            AddGadgetColumn(#LstFour, 4, "Adresse", 200)
            AddGadgetColumn(#LstFour, 5, "C.A.", 65)
            SetListIconGadgetColor(#LstFour, #ListconFont)
            AddGadgetItem(#NgOng, -1, "Gestion")
            HyperLinkGadget(#bArticles, 25, 40, 150, 20, "Gestion des Articles", $2C16A4 )
            SetGadgetFont(#bArticles, FontID())
            AddGadgetItem(#NgOng, -1, "Utilitaires")
         CloseGadgetList()
         
      EndIf
   EndIf
EndProcedure

Procedure evNewgest()
   Repeat
      Event = WaitWindowEvent()
      If Event = #PB_EventGadget
         Evtype = EventType()
         GadgetID = EventGadgetID()
         If EvType = #PB_EventType_Focus
            If     GadgetID = #RecCompC
               Debug "StringGadget de l'onglet Client Compte"
            ElseIf GadgetID = #RecIntiC
               Debug "StringGadget de l'onglet Client Intitulé"
            ElseIf GadgetID = #RecTeleC
               Debug "StringGadget de l'onglet Client Téléphone"
            ElseIf GadgetID = #RecCompF
                Debug "StringGadget de l'onglet Fournisseur Compte"
           ElseIf GadgetID = #RecIntiF
               Debug "StringGadget de l'onglet Fournisseur Intitulé"
            ElseIf GadgetID = #RecTeleF
               Debug "StringGadget de l'onglet Fournisseur Téléphone"
            ElseIf GadgetID = #NgDate
               Debug "StyringGadget Date du Jour"
            EndIf
         EndIf
         If GadgetID = #NgOng
            If GetGadgetState(#NgOng) = 0
               Debug "Onglet Client"
            ElseIf GetGadgetState(#NgOng) = 1
               Debug "Onglet Fournisseur"
            ElseIf GetGadgetState(#NgOng) = 2
               Debug "Onglet Gestion"
            ElseIf GetGadgetState(#NgOng) = 3
               Debug "Onglet Utilitaire"
            EndIf
         ElseIf GadgetID = #LstClie
                 Debug "ListIcon Client"
         ElseIf GadgetID = #LstFour
                 Debug "ListIcon Fournisseur"
         ElseIf GadgetID = #NgButAban
            Debug "GadgetID: Button Abandon"
            Break
         ElseIf GadgetID = #bArticles
            Debug "GadgetID: Button Flat Articles"
         EndIf
      EndIf
   Until Event = #PB_EventCloseWindow
EndProcedure

wiNewgest()
evNewgest()
testais tous les gadgets pour voir comment cela fonctionnent
pour mon code je doit encore trouver comment gérer la saisie des stringGadgets car je charge les ListIcons en fonction des caractères saisis dans les stringGadgets

Vos commentatires seront les bienvenus .

Merci d'Avance