Combobox Event

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
double7
Beiträge: 55
Registriert: 20.09.2004 00:40
Kontaktdaten:

Combobox Event

Beitrag von double7 »

Hi,

gibt es ein Combobox Event mit dessen Hilfe
ich feststellen kann, ob der Benutzer ein neues Element
ausgewählt hat, wie zum Beispiel #PB_EventType_Change ?

ich dachte da an sowas:

Code: Alles auswählen

[...]
if EventGadget() = #Combobox AND EventType()=#PB_EventType_Change
[...]
Meine Suche im Forum hat leider nichts ergeben. :cry:
[0d1n6 15 n07 @ j0b 17´5 |1f357y|3
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Merkwürdigerweise EventType: #PB_EventType_RightClick :wink:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Beitrag von al90 »

@double7

EventType() = #CBN_SELCHANGE :wink:
Benutzeravatar
double7
Beiträge: 55
Registriert: 20.09.2004 00:40
Kontaktdaten:

Beitrag von double7 »

Ich danke euch, werde ich gleich mal beides testen. :D

Nachtrag:

hmm, scheint nicht zu funktionieren.
Das Comboboxgadget wird zwar erkannt, doch als Eventtype bekomme ich
nichts anderes als -1 zurück /:->
(pb 4.00 und pb 4.02)

ok, vielleicht bin ich die Fehlerquelle... Hier mal ein Codeauszug:

Code: Alles auswählen

[...]
Procedure comboB(type.l)
    
  If type=#CBN_SELCHANGE or #PB_EventType_RightClick
    MessageRequester("Debug","Neuer Eintrag Selektiert")
  EndIf  
  
EndProcedure


[...]
Repeat 
  
  Event     = WaitWindowEvent() 
  WindowID  = EventWindow() 
  GadgetID  = EventGadget() 
  EventType = EventType() 
   
  ; gadget events
  If Event = #PB_Event_Gadget AND GadgetID = #comboB
      comboB(EventType)
  EndIf 
  
Until Event = #PB_Event_CloseWindow
[...]
[0d1n6 15 n07 @ j0b 17´5 |1f357y|3
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Beitrag von al90 »

Musst du in etwa so machen.:

Code: Alles auswählen

Case #PB_Event_Gadget

  Select EventGadget()

    Case GadgetID.l

      If EventType()=#CBN_SELCHANGE
        ; Eintrag wurde geändert!
        ; Hier jetzt darauf reagieren.
      EndIf

Und nimm bitte das #PB_EventType_RightClick raus. Das brachst Du dafür nicht. :wink:
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

al90 hat geschrieben: Und nimm bitte das #PB_EventType_RightClick raus. Das brachst Du dafür nicht. :wink:
Genau das benötigt er, wenn er auf API verzichten möchte!

Code: Alles auswählen

If OpenWindow(0, 0, 0, 270, 140, "ComboBoxGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) And CreateGadgetList(WindowID(0))
  ComboBoxGadget(0, 10, 10, 250, 100, #PB_ComboBox_Editable)
  AddGadgetItem(0, -1, "ComboBox editable...")
  ComboBoxGadget(1, 10, 40, 250, 100)
  For a = 1 To 5 : AddGadgetItem(1, -1,"ComboBox item " + Str(a)) : Next a
  SetGadgetState(1, 2)    ; wir setzen (beginnend bei 0) den dritten Eintrag als aktiven

  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow
        Break
      Case #PB_Event_Gadget
        Select EventGadget()
          Case 0, 1
            If EventType() = #PB_EventType_RightClick
              Debug "Eintrag wurde geändert"
            EndIf
        EndSelect
    EndSelect
  ForEver
EndIf
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
al90
Beiträge: 1103
Registriert: 06.01.2005 23:15
Kontaktdaten:

Beitrag von al90 »

ts-soft hat geschrieben:Genau das benötigt er, wenn er auf API verzichten möchte!
Davon hatte er aber nichts erwähnt. Und wenn's so wäre dann würde ich
lieber #True oder gleich 1 benutzen. #PB_EventType_RightClick
ist doch irgendwie unlogisch und verwirrt doch nur unnötig.
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

es ist aber wohl eher unpraktisch, dort #PB_EventType_RightClick zu verwenden,
nur weil es unter windows zufällig den selben wert hat wie #CBN_SELCHANGE.

damit erreicht man genausowenig kompatibilität, als wenn man gleich die API-konstante benutzt.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Kaeru hat geschrieben:damit erreicht man genausowenig kompatibilität, als wenn man gleich die API-konstante benutzt.
Meine Version funktioniert aber mit der Demo :mrgreen:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
double7
Beiträge: 55
Registriert: 20.09.2004 00:40
Kontaktdaten:

Beitrag von double7 »

Wenn zwei sich streiten freut sich der Dritte. :mrgreen:

Danke vielmals, es läuft genau so, wie ich es mir gewünscht habe . :roll:

:allright:
[0d1n6 15 n07 @ j0b 17´5 |1f357y|3
Antworten