Procedure qui fonctionne bizarrement .

Archive.
Cagou-77
Messages : 79
Inscription : dim. 15/août/2004 13:27

Procedure qui fonctionne bizarrement .

Message 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
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message par filperj »

Tu devrais essayer de reproduire le bug dans un code court et compilable, que tout le monde puisse tester...
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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 
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message 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:
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Cagou-77
Messages : 79
Inscription : dim. 15/août/2004 13:27

Procedure qui fonctionne bizarrement

Message 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
filperj
Messages : 395
Inscription : jeu. 22/janv./2004 1:13

Message 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.
Le chaos l'emporte toujours sur l'ordre
parcequ'il est mieux organisé.
(Ly Tin Wheedle)
Cagou-77
Messages : 79
Inscription : dim. 15/août/2004 13:27

Message 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
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message 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.
Cagou-77
Messages : 79
Inscription : dim. 15/août/2004 13:27

Message 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
Cagou-77
Messages : 79
Inscription : dim. 15/août/2004 13:27

Message 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 )
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Message 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
Cagou-77
Messages : 79
Inscription : dim. 15/août/2004 13:27

Message par Cagou-77 »

Ok, Merci Denis je vais essayer ca .

Bonne Soirée
nico
Messages : 3702
Inscription : ven. 13/févr./2004 0:57

Message 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.
Cagou-77
Messages : 79
Inscription : dim. 15/août/2004 13:27

Message 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
Répondre