AutocompleteCombobox funktioniert nicht im PanelGadget
Verfasst: 06.09.2005 15:16
Ich habe ein Problem mit der AutoCompleteCombobox Funktion (Code stammt aus purearea.net). Auf einem normalen Fenster funktioniert der Code, füge ich allerdings ein Panelgadget ein, funktioniert er nicht mehr richtig, beim Autovervollständigen wird der Text sofort bis zum Ende
vervollständigt und nicht jeder einzelne Buchstabe. Ich benutze PureBasic 3.94 auf Windows XP Professional.
Hier ist der Beispielcode:
Wenn man das Panel entfernt funktioniert das Autocomplete.
Vielleicht hat ja jemand von euch eine Idee, wie man es im Panelgadget nutzen kann.
vervollständigt und nicht jeder einzelne Buchstabe. Ich benutze PureBasic 3.94 auf Windows XP Professional.
Hier ist der Beispielcode:
Code: Alles auswählen
Declare AutocompleteComboBox(ComboBox.l)
Enumeration
#Window_Helpverwalt
#Eingaben
#v_abt
EndEnumeration
If OpenWindow(#Window_Helpverwalt, 20,100,1000,850, #PB_Window_SystemMenu | #PB_Window_MaximizeGadget | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_WindowCentered ,"Helpdeskeintrag verwalten")
If CreateGadgetList(WindowID())
PanelGadget(#Eingaben,10, 5,930,700)
;-Panel 1 Daten
AddGadgetItem(#Eingaben, 1, "Daten")
ComboBoxGadget(#v_abt, 120, 180, 230, 100, #PB_ComboBox_Editable)
AddGadgetItem(#v_abt,-1,"Verbrauchsabrechnung")
AddGadgetItem(#v_abt,-1,"Einkauf")
AddGadgetItem(#v_abt,-1,"Technik")
;- Ereignisschleife
Repeat
Ende = 0
EventID.l = WaitWindowEvent()
Select EventID.l
Case #PB_EventCloseWindow
Ende = 1
Case #PB_EventGadget
;MessageRequester("active_item.l",Str(Active_Item))
Select EventGadgetID()
Case #v_abt : AutocompleteComboBox(#v_abt)
EndSelect
EndSelect
Until Ende = 1
EndIf
CloseWindow(#Window_Helpverwalt)
EndIf
Procedure AutocompleteComboBox(ComboBox.l)
;- autocomplete specified combobox
Shared LenTextSave.l
Shared GadgetSave.l
; get text entered by user
TextTyped.s = UCase(GetGadgetText(ComboBox))
LenTextTyped.l = Len(TextTyped)
; skip if same gadget and same length or shorter text (backspace?)
If ComboBox = GadgetSave And LenTextTyped <= LenTextSave
LenTextSave = LenTextTyped
ElseIf LenTextTyped
GadgetSave = -1
; search combo contents for item that starts with text entered
MaxItem.l = CountGadgetItems(ComboBox) - 1
For Item.l = 0 To MaxItem
If TextTyped = UCase(Left(GetGadgetItemText(ComboBox, Item, 0), LenTextTyped))
; found matching item
; set combo state
SetGadgetState(ComboBox, Item)
; select added text only
hComboEdit.l = ChildWindowFromPoint_(GadgetID(ComboBox), 5, 5)
SendMessage_(hComboEdit, #EM_SETSEL, LenTextTyped, -1)
; save gadget number and text length for next pass
LenTextSave = LenTextTyped
GadgetSave = ComboBox
; exit For loop
Item = MaxItem
EndIf
Next
EndIf
EndProcedure
Wenn man das Panel entfernt funktioniert das Autocomplete.
Vielleicht hat ja jemand von euch eine Idee, wie man es im Panelgadget nutzen kann.
