Seite 1 von 1
Combobox Event
Verfasst: 01.06.2007 15:06
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.

Verfasst: 01.06.2007 15:37
von ts-soft
Merkwürdigerweise EventType: #PB_EventType_RightClick

Verfasst: 01.06.2007 19:21
von al90
@double7
EventType() =
#CBN_SELCHANGE 
Verfasst: 04.06.2007 10:31
von double7
Ich danke euch, werde ich gleich mal beides testen.
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
[...]
Verfasst: 04.06.2007 23:08
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.

Verfasst: 04.06.2007 23:26
von ts-soft
al90 hat geschrieben:
Und nimm bitte das
#PB_EventType_RightClick raus. Das brachst Du dafür nicht.

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
Verfasst: 04.06.2007 23:34
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.
Verfasst: 04.06.2007 23:35
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.
Verfasst: 04.06.2007 23:47
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

Verfasst: 06.06.2007 12:53
von double7
Wenn zwei sich streiten freut sich der Dritte.
Danke vielmals, es läuft genau so, wie ich es mir gewünscht habe .
