Seite 1 von 1
Combo Gadget editable...
Verfasst: 15.06.2009 08:50
von jpd
Hallo,
wenn ich ein Combo gadget editable habe und änderungen am text vornehme,
kann ich leider der neue text nicht auslesen ..
sondern nur der alte eintrag,
wie kann ich änderungen im combogadget direkt benutzen?
Grüße
jpd
Code: Alles auswählen
Enumeration
#Window_0
EndEnumeration
Enumeration
#Combo_0
#Button_0
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 220, 0, 600, 300, "New window ( 0 )", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
ComboBoxGadget(#Combo_0, 90, 60, 180, 30, #PB_ComboBox_Editable)
ButtonGadget(#Button_0, 70, 210, 60, 30, "zero")
EndIf
EndProcedure
Open_Window_0()
AddGadgetItem(#Combo_0, -1, "ComboBox editable...")
SetGadgetState(#Combo_0, 0)
Repeat
Event = WaitWindowEvent()
WindowID = EventWindow()
GadgetID = EventGadget()
EventType = EventType()
If Event = #PB_Event_Gadget
If GadgetID = #Combo_0
; AddGadgetItem(#Combo_0, -1, "ComboBox editable...")
ElseIf GadgetID = #Button_0
Debug GetGadgetItemText(#Combo_0,0)
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
End
Verfasst: 15.06.2009 09:20
von ts-soft
Mit
Ohne API ist das ComboBoxGadget bisher sehr schlecht unterstüzt, gottsei-
dank nutze ich das kaum
Hab Dein Beispiel mal so erweitert, das der Editierte Eintrag übernommen wird, sobald Return gedrückt wird:
Code: Alles auswählen
Enumeration
#Window_0
EndEnumeration
Enumeration
#Combo_0
#Button_0
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 220, 0, 600, 300, "New window ( 0 )", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
ComboBoxGadget(#Combo_0, 90, 60, 180, 30, #PB_ComboBox_Editable)
ButtonGadget(#Button_0, 70, 210, 60, 30, "zero")
EndIf
EndProcedure
Open_Window_0()
AddGadgetItem(#Combo_0, -1, "ComboBox editable...")
SetGadgetState(#Combo_0, 0)
Repeat
Event = WaitWindowEvent()
WindowID = EventWindow()
GadgetID = EventGadget()
EventType = EventType()
If Event = #PB_Event_Menu
If EventMenu() = 1
AddGadgetItem(#Combo_0, -1, GetGadgetText(#Combo_0))
EndIf
EndIf
If Event = #PB_Event_Gadget
If GetActiveGadget() = #Combo_0
AddKeyboardShortcut(#Window_0, #PB_Shortcut_Return, 1)
Else
RemoveKeyboardShortcut(#Window_0, #PB_Shortcut_Return)
EndIf
If GadgetID = #Combo_0
ElseIf GadgetID = #Button_0
Debug GetGadgetItemText(#Combo_0, 0)
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
End
Ansonsten mußte API Ereignisse nutzen
Verfasst: 15.06.2009 09:37
von jpd
Hallo ts-soft,
ne ist nicht so was ich mir vorstelle,
zum beispiel wenn ich in der combo box den text ändere und dann ohne weiteres auf den button drucke, dann würde ich gerne den text das gerade sichtbar ist auslesen...
dass ist nicht der fall.
Ich versuche es gleich mit eine combination Listview/StringGadget vielleicht ist das besser,
API verwenden möchte ich nicht, da es auch unter Linux funzionieren soll.
Vielen Dank
jpd
Verfasst: 15.06.2009 09:47
von ts-soft
Vielleicht meinste es ja so:
Code: Alles auswählen
Enumeration
#Window_0
EndEnumeration
Enumeration
#Combo_0
#Button_0
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 220, 0, 600, 300, "New window ( 0 )", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
ComboBoxGadget(#Combo_0, 90, 60, 180, 30, #PB_ComboBox_Editable)
ButtonGadget(#Button_0, 70, 210, 60, 30, "zero")
EndIf
EndProcedure
Open_Window_0()
AddGadgetItem(#Combo_0, -1, "ComboBox editable...")
SetGadgetState(#Combo_0, 0)
Repeat
Event = WaitWindowEvent()
WindowID = EventWindow()
GadgetID = EventGadget()
EventType = EventType()
If Event = #PB_Event_Gadget
If GadgetID = #Combo_0
; AddGadgetItem(#Combo_0, -1, "ComboBox editable...")
ElseIf GadgetID = #Button_0
SetGadgetItemText(#Combo_0, 0, GetGadgetText(#Combo_0))
Debug GetGadgetItemText(#Combo_0, 0)
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
End
Verfasst: 15.06.2009 10:01
von jpd
Vielen Dank,
das hilft mir auf jeden fall weiter!
Danke
jpd
Verfasst: 16.06.2009 10:08
von HeX0R
Probiere es mal so:
[Edit]
Oha, sorry ich hab da wohl was überlesen:
>>API verwenden möchte ich nicht, da es auch unter Linux funzionieren soll.
Naja, ich lass es trotzdem drin (theoretisch sollte eine Linux ComboBox doch auch verschiedene Eventtypes absenden, oder? Nur vermutlich nicht die selben. Vielleicht sollte man sich unter Linux einfach mal EventType während des Editierens debuggen lassen?)
Code: Alles auswählen
Enumeration
#Window_0
EndEnumeration
Enumeration
#Combo_0
#Button_0
EndEnumeration
Procedure Open_Window_0()
If OpenWindow(#Window_0, 220, 0, 600, 300, "New window ( 0 )", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
ComboBoxGadget(#Combo_0, 90, 60, 180, 22, #PB_ComboBox_Editable)
EndIf
EndProcedure
Open_Window_0()
AddGadgetItem(#Combo_0, -1, "Item1")
AddGadgetItem(#Combo_0, -1, "Item2")
AddGadgetItem(#Combo_0, -1, "Item3")
SetGadgetState(#Combo_0, 0)
Repeat
Event = WaitWindowEvent()
WindowID = EventWindow()
GadgetID = EventGadget()
EventType = EventType()
If Event = #PB_Event_Gadget
If GadgetID = #Combo_0
If EventType = #CBN_EDITCHANGE
SetGadgetItemText(#Combo_0, ActiveItem, GetGadgetText(#Combo_0))
Else
ActiveItem = GetGadgetState(#Combo_0)
If ActiveItem = -1
ActiveItem = 0
EndIf
EndIf
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
End
Verfasst: 17.06.2009 10:42
von jpd
Hi HeXor,
Tips und Hilfe kann man immer gut gebrauchen
vielen Dank.
jpd
Verfasst: 17.06.2009 21:37
von al90
@jpd
Falls du doch mal die API benutzen möchtest:
#CBN_SELCHANGE
Benutze ich auch des öfteren. Allerdings habe ich es bisher noch nie für Editable Combos benutzt.
Verfasst: 19.06.2009 16:07
von jpd
Hi al90,
und dir auch nen Dankeschön!
Ciao
jpd