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

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

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

Message 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
Dernière modification par Kwai chang caine le lun. 30/avr./2007 7:36, modifié 1 fois.
minirop
Messages : 321
Inscription : mer. 02/août/2006 21:06

Message 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.
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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:
minirop
Messages : 321
Inscription : mer. 02/août/2006 21:06

Message 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);
gnozal
Messages : 832
Inscription : mar. 07/déc./2004 17:35
Localisation : France
Contact :

Message 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...
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

Message 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:
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message 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

Denis

Bonne Jounée à tous
Avatar de l’utilisateur
Kwai chang caine
Messages : 6989
Inscription : sam. 23/sept./2006 18:32
Localisation : Isere

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