Hallo Andy, ich habe nun mal nach PB 4.2 alles umgestellt.
Du müßtest die Pathes umändern, wo sich deine Bilddateien als
auch die Textdatei befinden.
Habe diesen Source auch bei meinem Sohn unter XP-Professional auf seinem
Lappy getestet. Beide Einträge sind dort komplett Markiert.
Ein Fehler ist aber bei der PB 4.3 beta 4 nun zu sehen. Bei PB 4.2, wird die
erste Combobox schön einzeilig angezeigt. Bei der aktuellen Beta komischerweise wurden wohl mehrere Leerzeilen hinzugefügt
Code: Alles auswählen
;PB 3.94
;Der Karl
;updated 12.10.2006
;Updated to PB 4.2 by Falko
#comboTest = 0
Procedure cmbAutoComplete(WindowID, Message, wParam, lParam)
Protected comboWert.s, comboIndex.l, comboLang.l, comboStart.l, parameter.l
Protected start.l, ende.l
result = #PB_ProcessPureBasicEvents
Select Message
Case #WM_COMMAND
Select lParam
Case GadgetID(0)
If GetGadgetState(0)<0
SetGadgetState(0, 1)
EndIf
Select (wParam >> 16 & $FFFF)
Case #CBN_EDITUPDATE
If GetAsyncKeyState_(#VK_BACK) Or GetAsyncKeyState_(#VK_DELETE)
;tu nix
Else
comboWert = GetGadgetText(#comboTest)
comboIndex = SendMessage_(lParam, #CB_FINDSTRING, -1, @comboWert)
comboStart = Len(comboWert)
;Länge des eingegebenen Textes
SendMessage_(lParam, #CB_SETTOPINDEX, 1, 0)
If comboIndex >= 0
SendMessage_(lParam, #CB_SETCURSEL, comboIndex, 0)
comboLang = Len(GetGadgetText(#comboTest))
;Länge des gefundenen Textes
parameter = (comboLang << 16 & $FFFFFFFF) + comboStart
SendMessage_(lParam, #CB_SETEDITSEL, 0, parameter)
;eybd_event_(#VK_DOWN, 0, 0, 0)
;eybd_event_(#VK_END, 0, 0, 0)
EndIf
EndIf
EndSelect
EndSelect
EndSelect
ProcedureReturn result
EndProcedure
Procedure InitWindow()
;Window zeichnen und ComboBox aus einer externen Datei füllen (jede Zeile = ein Eintrag)
If OpenWindow(0, 0, 0, 400, 200, "Test", #PB_Window_SystemMenu)
If CreateMenu(0, WindowID(0))
MenuTitle("Datei")
LoadImage(0, "F:\PureBasic_4\Falko\Forum\folder_page.bmp")
LoadImage(1, "F:\PureBasic_4\Falko\Forum\printer.bmp")
MenuItem(0, "Öffnen" + #TAB$ + "STRG+O")
MenuItem(1, "Schließen")
SetMenuItemBitmaps_(MenuID(0), 0, #MF_BYCOMMAND , ImageID(0), ImageID(1)); hiernmit wird das BMP angezeigt
EndIf
If CreateGadgetList(WindowID(0))
ComboBoxGadget(#comboTest, 10, 10, 180, 150, #PB_ComboBox_Editable)
EndIf
ReadFile(0, "F:\PureBasic_4\Falko\Forum\cmb.txt")
While Not Eof(0)
AddGadgetItem(0, -1, ReadString(0))
Wend
CloseFile(0)
EndIf
EndProcedure
InitWindow()
SetWindowCallback(@cmbAutoComplete())
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
End
So müsste es theoretisch dann auch bei dir unter XP aussehen:
Gruß, Falko