AutocompleteCombobox funktioniert nicht im PanelGadget

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
wellensittich05775
Beiträge: 1
Registriert: 06.09.2005 14:53

AutocompleteCombobox funktioniert nicht im PanelGadget

Beitrag von wellensittich05775 »

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:

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. :roll: