ComboBoxGadget - EventType - TextChange

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
Ghosty
Beiträge: 17
Registriert: 10.04.2005 00:27

ComboBoxGadget - EventType - TextChange

Beitrag von Ghosty »

Hallo Leutz...

Gibt es eine Lösung, das "TextChange" Event, welches z.B. ein
StringGadget hat auch für eine editierbare ComboBox zu realisieren ?
Scheint ja kein von Haus aus unterstützter Event für die Combo zu sein.

cu...
Benutzeravatar
benpicco
Beiträge: 391
Registriert: 01.10.2004 15:32
Wohnort: im Code
Kontaktdaten:

Beitrag von benpicco »

Wie wär´s den mit sowas:

Code: Alles auswählen

Event=WindowEvent()
If Event=#PB_Event_Gadget
  GadgetID=EventGadgetID()
  If GadgetID=#deineComboBox
    If GetGadgetText(#deineComboBox)<>altText$
      Debug "Inhalt geändert"
      altText$=GetGadgetText(#deineComboBox)
    EndIf
  EndIf
EndIf
Das Ganze lässt sich natürlich erweitern indem man altText$ in eine LinkedList eintragt und dan für jeden Eintrag einzeln prüft.
Johann Wolfgang von Geothe hat geschrieben:Wie dieses oder jenes Wort geschrieben wird, darauf kommt es doch eigentlich nicht an, sondern darauf, daß die Leser verstehen, was man damit sagen wollte.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Code: Alles auswählen

  ;-
  OpenWindow(0,0,0,425,80,1|#WS_SYSMENU,"")
  

  If CreateGadgetList(WindowID(0))
    
    ComboBoxGadget(0,10,10,395,300,#PB_ComboBox_Editable)
    
    ;fuellen der ComboBox
    For i = 1 To 10
      AddGadgetItem(0,-1,Str(i))
    Next 
    ;-
    Repeat
      Event = WaitWindowEvent()
      
      If Event = #PB_Event_Gadget
        
        If EventGadget() = 0 ; Unsere ComboBox
          
          If EventType() = #CBN_EDITCHANGE ; ComboBox Event abfangen
            Value.s = GetGadgetText(0) 
            SetWindowTitle(0,"ComboBoxGadget : 0 Value :" + Value) 
          EndIf 
          
        EndIf 
          
      EndIf 
      
    Until Event = #PB_Event_CloseWindow
    ;-
  EndIf
  
  End
Benutzeravatar
Ghosty
Beiträge: 17
Registriert: 10.04.2005 00:27

Beitrag von Ghosty »

Super, danke Dir... funktioniert einwandfrei.
Allerdings hattest Du ein paar Fehler im Code *g*
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Ghosty hat geschrieben:Super, danke Dir... funktioniert einwandfrei.
Allerdings hattest Du ein paar Fehler im Code *g*
z.B. ?
Benutzeravatar
Ghosty
Beiträge: 17
Registriert: 10.04.2005 00:27

Beitrag von Ghosty »

If EventGadget() = 0 ; Unsere ComboBox
kommt immer die Fehlermeldung "EventGadget() is not a function, an array, or a linked list). Habs jetzt so gemächt und funktioniert ;)

Code: Alles auswählen

    Repeat
      EventID = WaitWindowEvent()
      GadgetID= EventGadgetID()
      EventType=EventType()
      
      If EventID = #PB_Event_Gadget
        If GadgetID = 0
          If EventType = #CBN_EDITCHANGE
            Value.s = GetGadgetText(0)
            SetWindowTitle(0,"ComboBoxGadget : 0 Value :" + Value)
          EndIf
        EndIf
      EndIf
    Until EventID = #PB_Event_CloseWindow
Gibts da eigentlich noch andere "unbekannte" EventTypes, wie z.B. GotFocus, LostFocus o.ä. wie sie in VB eingesetzt werden ?!
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Aha ein paar also. Das ist kein Fehler . Du benutzt ~3.94 und der Code war
fuer 4.00. Haette es dazu schreiben sollen.
Benutzeravatar
Ghosty
Beiträge: 17
Registriert: 10.04.2005 00:27

Beitrag von Ghosty »

Sorry, sollte auch keine Kritik sein. Bin ja dankbar, das Du mir geholfen hast.
Benutzeravatar
edel
Beiträge: 3667
Registriert: 28.07.2005 12:39
Computerausstattung: GameBoy
Kontaktdaten:

Beitrag von edel »

Gibts da eigentlich noch andere "unbekannte" EventTypes, wie z.B. GotFocus, LostFocus o.ä. wie sie in VB eingesetzt werden ?!

Code: Alles auswählen

  #PB_EventType_LeftClick        : Klick mit der linken Maustaste
  #PB_EventType_RightClick       : Klick mit der rechten Maustaste
  #PB_EventType_LeftDoubleClick  : Doppelklick mit der linken Maustaste
  #PB_EventType_RightDoubleClick : Doppelklick mit der rechten Maustaste
  #PB_EventType_Focus            : Fokus erhalten
  #PB_EventType_LostFocus        : Fokus verloren
  #PB_EventType_Change           : Inhalt hat sich geändert.

Benutzeravatar
Ghosty
Beiträge: 17
Registriert: 10.04.2005 00:27

Beitrag von Ghosty »

Ja, die kenne ich... stehen ja auch in der Hilfe.
Aber ich dachte da mehr an sowas wie "#CBN_EDITCHANGE", der
nicht in der Hilfe von V3.94 steht. Es scheint ja schon einiges an
Event-Konstanten zu geben, was nicht so recht dokumentiert ist.
Antworten