Seite 1 von 2

ComboBoxGadget - EventType - TextChange

Verfasst: 10.02.2006 08:04
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...

Verfasst: 10.02.2006 17:05
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.

Verfasst: 10.02.2006 22:16
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

Verfasst: 11.02.2006 09:54
von Ghosty
Super, danke Dir... funktioniert einwandfrei.
Allerdings hattest Du ein paar Fehler im Code *g*

Verfasst: 11.02.2006 14:15
von edel
Ghosty hat geschrieben:Super, danke Dir... funktioniert einwandfrei.
Allerdings hattest Du ein paar Fehler im Code *g*
z.B. ?

Verfasst: 11.02.2006 16:05
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 ?!

Verfasst: 11.02.2006 22:48
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.

Verfasst: 12.02.2006 08:51
von Ghosty
Sorry, sollte auch keine Kritik sein. Bin ja dankbar, das Du mir geholfen hast.

Verfasst: 12.02.2006 09:27
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.


Verfasst: 12.02.2006 09:33
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.