Page 1 sur 1

Detecter le changement de valeur d'un combo-box [Résolu]

Publié : lun. 23/avr./2007 12:13
par Kwai chang caine
Bonjour à tous.

Dans les centaines de codes que j'ai lu il me semble avoir vu la gestion de l'evenement "changement d'une combo-box" ou bien d'un texte.

J'ai fait les recherche avec "change", mais pas moyen de remettre la main dessus, ni sur le POST ni sur la constante.

Car je voudrais que mon action ne se declenche que si la valeur du combo a réellement changé et non pas a chaque fois que je clic dessus.

L'aurais je révé ???

Merci et bonne journée

Publié : lun. 23/avr./2007 13:01
par minirop
tu gardes en mémoire la valeur actuelle et quand EventGadget() correspond à ta combo box, tu regarde si la valeur à changé ou non.

Publié : lun. 23/avr./2007 13:13
par Kwai chang caine
Je te remercie Minirop de ta reponse.

J'avais fait cette methode, mais je croyais qu'il existait une constante ou un truc de ce genre, disons un peu plus pro.
Et il me semblait l'avoir vu dans un code.
Mais je confond peut etre .... :roll:

En tout cas encore merci de ton intervention :wink:

Publié : lun. 23/avr./2007 13:27
par minirop
Kwai chang caine a écrit :J'avais fait cette methode, mais je croyais qu'il existait une constante ou un truc de ce genre, disons un peu plus pro.
peut être si on a accès direct aux fonctions GTK+ en utilisant les "signals" en C çà donne :

Code : Tout sélectionner

gtk_signal_connect(GTK_ENTRY(GTK_COMBO(combo)->entry), "changed", (GtkSignalFunc)affiche_infos, (gpointer)entries);

Publié : lun. 23/avr./2007 13:29
par gnozal
Fais une recherche avec #CBN_SELCHANGE come mot clé (pour une combobox)...
par exemple : http://www.purebasic.fr/english/viewtopic.php?t=18443
Autres contrôles : #EN_CHANGE (edit), #MCN_SELCHANGE (calendrier), #TCN_SELCHANGE (panel), etc...

Publié : lun. 23/avr./2007 13:33
par Kwai chang caine
Alors la 8O pour le coup c'est mégapro :D
Peut etre un peu trop pro pour moi :lol:

Moi je m'attendait à un #PB_Change ou bien #WM_TrucbiduleChange.

Bon, si ya pas entre les deux, je garderais la méthode qui me conviens le mieux, c'est à dire la methode banale :wink:

Toujours merci

Publié : lun. 23/avr./2007 13:34
par Kwai chang caine
Bonjour GNOZAL

J'ai posté en meme temps que toi. :D

Je vais vite voir le lien que tu viens de me donner.

Super merci :wink:

Publié : ven. 27/avr./2007 14:22
par brossden
Salut Kwai truc machin... !

Tu cherches loin ce que tu as devant le nez !

Utilise une variable (ici Combo) et verifie sont évolution !

Code : Tout sélectionner


Global Combo, charge.s ="N"
Enumeration
  #Window_0 : #Combo_0 : #Button_0
EndEnumeration


Procedure Open_Window_0()
  If OpenWindow(#Window_0, 419, 244, 306, 226, "Ma fenêtre",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
    If CreateGadgetList(WindowID(#Window_0))
      ComboBoxGadget(#Combo_0, 20, 20, 140, 90,#PB_ComboBox_Editable)
      ButtonGadget(#Button_0, 200, 20, 80, 20, "Charge Combo")
    EndIf
  EndIf
EndProcedure

Open_Window_0()
Combo = GetGadgetState(#Combo_0)
Repeat
  Event = WaitWindowEvent()
  GadgetID = EventGadget()
  If Event = #PB_Event_Gadget
    If GadgetID = #Combo_0
      Debug EventType
      If Combo<>GetGadgetState(#Combo_0)
        Combo = GetGadgetState(#Combo_0)
        MessageRequester("Alerte !","Modifcation  Combo_0 !")
      EndIf
    EndIf
  ElseIf GadgetID = #Button_0 And charge.s = "N"
    For n=1 To 5
      AddGadgetItem(#Combo_0,-1,"Ligne : - "+Str(n))

    Next
    charge.s="O"
    Combo = GetGadgetState(#Combo_0)
    SetGadgetState(#Combo_0,0)
  EndIf

Until Event = #PB_Event_CloseWindow
End


Publié : sam. 28/avr./2007 20:12
par Kwai chang caine
Bonjour BROSSDEN de mon coeur :D

Si tu avais lu ce que tu as juste au dessus de ton nez :lol:

Minirop avais déja dit:
minirop a écrit :tu gardes en mémoire la valeur actuelle et quand EventGadget() correspond à ta combo box, tu regarde si la valeur à changé ou non.
Ce a quoi j'avais répondu:
Kwai truc machin a écrit : Je te remercie Minirop de ta reponse.
J'avais fait cette methode, mais je croyais qu'il existait une constante ou un truc de ce genre, disons un peu plus pro.
Et il me semblait l'avoir vu dans un code.
Mais je confond peut etre ....
Mais, quoi qu'il en soit , je te remercie beaucoup de ton aide :wink:

Bonne soirée