Restored from previous forum. Originally posted by Danilo.
Fangbeast: maybe this is a start for you...
Code: Select all
Global hCombo, hComboEdit, hList
Global oldComboEditProc, ListHidden
;
OpenWindow(1,200,200,400,200,#PB_WINDOW_SystemMenu,"")
CreateGadgetList(WindowID())
hCombo = ComboBoxGadget(1,10,10,300,100,#PB_ComboBox_Editable)
hList = ListViewGadget(2,20,31,280,100)
HideGadget(2,1): ListHidden = 1
For a = 1 To 9: AddGadgetItem(2,-1,"FangBeast "+Str(a)): Next a
AddKeyboardShortcut(1,#PB_Shortcut_Return,100)
AddKeyboardShortcut(1,#PB_Shortcut_Up ,101)
;
Procedure CheckContents(A$)
If UCase(Left(A$,4)) = "FANG" ;And Len(A$) = 4
HideGadget(2,0): ListHidden = 0
Else
HideGadget(2,1): ListHidden = 1
EndIf
EndProcedure
;
Procedure ComboKey(Window,Message,wParam,lParam)
If Message = #WM_KEYDOWN And wParam = #VK_DOWN And ListHidden = 0
SetFocus_(hList): SetGadgetstate(2,0)
EndIf
Result = CallWindowProc_(oldComboEditProc,Window,Message,wParam,lParam)
ProcedureReturn Result
EndProcedure
;
Procedure WindowCallback(Window,Message,wParam,lParam)
Result = #PB_ProcessPureBasicEvents
Select Window
Case WindowID()
Select Message
Case #WM_COMMAND
If lParam = hCombo And (wParam >> 16) = #CBN_EDITCHANGE
A$=Space(1000) : GetWindowText_(hCombo,A$,1000)
CheckContents(A$)
EndIf
EndSelect
EndSelect
ProcedureReturn Result
EndProcedure
;
SetWindowCallback(@WindowCallback())
hComboEdit = ChildWindowFromPoint_(hCombo,5,5)
oldComboEditProc = SetWindowLong_(hComboEdit,#GWL_WNDPROC,@ComboKey())
;
Repeat
Select WaitWindowEvent()
Case #PB_EventCloseWindow: End
Case #PB_EventMenu
If EventMenuID() = 100 And GetFocus_() = hList
SetWindowText_(hCombo,GetGadgetItemText(2,GetGadgetState(2),0))
HideGadget(2,1): ListHidden = 1
SetFocus_(hComboEdit): SendMessage_(hComboEdit,#EM_SETSEL,$FFFFFFFF,$FFFFFFFF)
SetGadgetState(2,0)
ElseIf EventMenuID() = 101 And GetFocus_() = hList
If GetGadgetState(2) = 0
SetGadgetState(2,-1)
SetFocus_(hComboEdit): SendMessage_(hComboEdit,#EM_SETSEL,$FFFFFFFF,$FFFFFFFF)
Else
SetGadgetState(2,GetGadgetState(2)-1)
EndIf
EndIf
Case #PB_EventGadget
EndSelect
ForEver
Just Type "Fang" in the ComboBox to see whats happening...
But hey, its only small to get you started...
cya,
...Danilo
(registered PureBasic user)