[résolu] ComboBoxgadget et EventType

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Ar-S
Messages : 9546
Inscription : dim. 09/oct./2005 16:51
Contact :

[résolu] ComboBoxgadget et EventType

Message par Ar-S »

Je suis en train de voir que les eventtype() ne sont pas gérés dans un ComboBoxGadget. En tout cas la doc ne l'indique pas et ça ne fonctionne (logiquement) pas.

J'essaye de faire sans mais du coup je me retrouve avec un resultat qui s'affiche 2 fois dans le debug.

Dans l'exemple suivant, sélectionnez "super soft" dans la liste puis réessayez en le dé-sélectionnant puis en le re sélectionnant.
on voit que le debug affiche une fois "super soft" lors de la sélection mais une seconde fois lorsque l'on clique juste après sur "mettre à jour".

Code : Tout sélectionner

; Mise à Jour Rapide

Enumeration
  #LDVM
EndEnumeration

Enumeration
  #ComboList
  #Text_1
  #BT_SUP
  #BT_MAJ
  #AFF_INFO
  #NUMV
EndEnumeration

;> User pref
Global.s Maj_ZIP, Maj_NOM, Maj_NumVer

Maj_NOM="Super Soft"
Maj_NumVer="1.2"

Procedure OpenWindow_LDVM()
  If OpenWindow(#LDVM, 475, 350, 291, 115, "Mise à Jour Facile", #PB_Window_SystemMenu|#PB_Window_TitleBar)
    ComboBoxGadget(#ComboList, 2, 65, 180, 20)
    AddGadgetItem(#ComboList, -1, "> Sélectionner un programme <")
    AddGadgetItem(#ComboList, -1, Maj_NOM)
    SetGadgetState(#ComboList, 0)
    
    TextGadget(#Text_1, 185, 40, 103, 20, "Version actuelle", #PB_Text_Center|#SS_CENTERIMAGE)
    StringGadget(#AFF_INFO, 2, 40, 175, 20, "Choisir le programme à mettre à jour", #PB_String_ReadOnly|#ES_CENTER)
    StringGadget(#NUMV, 200, 65, 80, 20, "", #PB_String_ReadOnly|#ES_CENTER)
    ButtonGadget(#BT_MAJ, 2, 92, 286, 20, "Mettre à jour",#BS_FLAT)
    DisableGadget(#BT_MAJ,1)
  EndIf
EndProcedure

OpenWindow_LDVM()
      
Repeat
  Select WaitWindowEvent()
    Case #PB_Event_Gadget
      Select EventGadget()
        Case #ComboList
          Num_Soft=GetGadgetState(#ComboList)
          If Num_Soft <> 0
            
            SetGadgetText(#NUMV,Maj_NumVer)
            SetGadgetText(#AFF_INFO,"Fichier pret à être mis à jour")
            SetGadgetState(#ComboList, Num_Soft)
            DisableGadget(#BT_MAJ,0)
            
          Else
            Num_Soft=0
            SetGadgetText(#NUMV,"")
            SetGadgetText(#AFF_INFO, "Choisir le programme à mettre à jour")
            DisableGadget(#BT_MAJ,1)
            
          EndIf
          Debug GetGadgetItemText(#ComboList,Num_Soft) 
          
      EndSelect
      
    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case #LDVM
          CloseWindow(#LDVM)
          Break
      EndSelect
  EndSelect
ForEver
      
Dernière modification par Ar-S le mar. 24/mai/2011 23:16, modifié 1 fois.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: ComboBoxgadget et EventType

Message par Le Soldat Inconnu »

Voici une solution :

Code : Tout sélectionner

; Mise à Jour Rapide

Enumeration
	#LDVM
EndEnumeration

Enumeration
	#ComboList
	#Text_1
	#BT_SUP
	#BT_MAJ
	#AFF_INFO
	#NUMV
EndEnumeration

;> User pref
Global.s Maj_ZIP, Maj_NOM, Maj_NumVer

Maj_NOM="Super Soft"
Maj_NumVer="1.2"

Procedure OpenWindow_LDVM()
	If OpenWindow(#LDVM, 475, 350, 291, 115, "Mise à Jour Facile", #PB_Window_SystemMenu|#PB_Window_TitleBar)
		ComboBoxGadget(#ComboList, 2, 65, 180, 20)
		AddGadgetItem(#ComboList, -1, "> Sélectionner un programme <")
		AddGadgetItem(#ComboList, -1, Maj_NOM)
		SetGadgetState(#ComboList, 0)
		
		TextGadget(#Text_1, 185, 40, 103, 20, "Version actuelle", #PB_Text_Center|#SS_CENTERIMAGE)
		StringGadget(#AFF_INFO, 2, 40, 175, 20, "Choisir le programme à mettre à jour", #PB_String_ReadOnly|#ES_CENTER)
		StringGadget(#NUMV, 200, 65, 80, 20, "", #PB_String_ReadOnly|#ES_CENTER)
		ButtonGadget(#BT_MAJ, 2, 92, 286, 20, "Mettre à jour",#BS_FLAT)
		DisableGadget(#BT_MAJ,1)
	EndIf
EndProcedure

OpenWindow_LDVM()

Repeat
	Select WaitWindowEvent()
		Case #PB_Event_Gadget
			Select EventGadget()
				Case #ComboList
					Num_Soft=GetGadgetState(#ComboList)
					If Num_Soft <> GetGadgetData(#ComboList)
						If Num_Soft > 0
							
							SetGadgetText(#NUMV,Maj_NumVer)
							SetGadgetText(#AFF_INFO,"Fichier pret à être mis à jour")
							DisableGadget(#BT_MAJ,0)
							
						ElseIf Num_Soft = 0
							Num_Soft=0
							SetGadgetText(#NUMV,"")
							SetGadgetText(#AFF_INFO, "Choisir le programme à mettre à jour")
							DisableGadget(#BT_MAJ,1)
							
						EndIf
						Debug GetGadgetItemText(#ComboList,Num_Soft) 
					EndIf
					SetGadgetData(#ComboList, Num_Soft)
					
			EndSelect
			
		Case #PB_Event_CloseWindow
			Select EventWindow()
				Case #LDVM
					CloseWindow(#LDVM)
					Break
			EndSelect
	EndSelect
ForEver
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)]
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Re: ComboBoxgadget et EventType

Message par Chris »

Le combo supporte les EventType() de windows

Code : Tout sélectionner

        Case #ComboList
          Select EventType()
            Case #CBN_SELCHANGE
              Num_Soft=GetGadgetState(#ComboList)
              If Num_Soft <> 0
                
                SetGadgetText(#NUMV,Maj_NumVer)
                SetGadgetText(#AFF_INFO,"Fichier pret à être mis à jour")
                SetGadgetState(#ComboList, Num_Soft)
                DisableGadget(#BT_MAJ,0)
                
              Else
                Num_Soft=0
                SetGadgetText(#NUMV,"")
                SetGadgetText(#AFF_INFO, "Choisir le programme à mettre à jour")
                DisableGadget(#BT_MAJ,1)
                
              EndIf
              Debug GetGadgetItemText(#ComboList,Num_Soft)
              
          EndSelect

Avatar de l’utilisateur
Ar-S
Messages : 9546
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: ComboBoxgadget et EventType

Message par Ar-S »

Merci pour ces 2 solutions ! J'étais sur cette piste LSI.

Chris, j'ai donc découvert #CBN_SELCHANGE ! Encore une commande qu'il va être dure de ne pas oublier et pourtant bien utile.

De la grosse balle tout ça ! :mrgreen:
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre