Hallo,
Wie kann man dafür sorgen, dass man in eine ComboBox nichts mehr eingeben kann, sondern nur Punkte auswählen kann?
LG
Captain09
ComboBox manuelle Eingabe verhindern
-
- [ gelöst ]
-
Captain09 -
10. Mai 2014 um 19:48 -
Erledigt
-
-
Verwende den Style
[autoit]$CBS_DROPDOWNLIST
[/autoit] -
Je nach dem wie viele Items die ComboBox haben soll solltest du als Style stattdessen eher BitOR($CBS_DROPDOWNLIST, $WS_VSCROLL) benutzen, sonst werden dir eventuell nicht alle Items angezeigt.
-
Beides bringt nichts,
eingeben kann man immer noch, nur kann man nicht mehr auswählen
ich wollte es anders herum -
Poste bitte dein Script.
-
Kleine Hilfe zum Testen, ob in der Combo ne Taste gedrückt wurde.. wie du das dann behandelst sei mal dahingestellt..
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPI.au3>GUIRegisterMsg($WM_COMMAND, "WM_COMMAND");
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
Global $Form1 = GUICreate("Form1", 214, 91, 192, 124)
Global $Combo1 = GUICtrlCreateCombo("Combo1", 8, 8, 145, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
Global $Editel = GUICtrlCreateInput("Test", 8, 32, 81, 21)
GUISetState(@SW_SHOW)While 1
[/autoit] [autoit][/autoit] [autoit]
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ExitEndSwitch
[/autoit] [autoit][/autoit] [autoit]
WEndFunc WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
[/autoit] [autoit][/autoit] [autoit]
#forceref $hWnd, $iMsg, $lParamSwitch _WinAPI_LoWord($wParam)
[/autoit]
Case $Combo1
Switch _WinAPI_HiWord($wParam)
Case $CBN_EDITCHANGE
MsgBox(0,"","Taste im Combo gedrückt")
EndSwitch
EndSwitch
EndFunc ;==>WM_COMMAND -
- Offizieller Beitrag
Hier ein Beispiel, wie misterspeed und James es gemeint haben:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include <ComboConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>Global $hGui = GUICreate('Test', 240, 100)
[/autoit] [autoit][/autoit] [autoit]
Global $idCombo = GUICtrlCreateCombo('', 10, 10, 220, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL, $WS_VSCROLL))
GUICtrlSetData(-1, 'Test1|Test2|Test3|Test4|Test5|Test6|Test7', 'Test4')
Global $idEdit = GUICtrlCreateInput('', 10, 60, 220, 20)
GUICtrlSetData(-1, GUICtrlRead($idCombo))
GUISetState(@SW_SHOW)While 1
[/autoit]
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $idCombo
GUICtrlSetData($idEdit, GUICtrlRead($idCombo))
EndSwitch
WEnd -
Hier ein Beispiel, wie misterspeed und James es gemeint haben:
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
#include
#include
#includeGlobal $hGui = GUICreate('Test', 240, 100)
[/autoit] [autoit][/autoit] [autoit]
Global $idCombo = GUICtrlCreateCombo('', 10, 10, 220, 25, BitOR($CBS_DROPDOWNLIST, $CBS_AUTOHSCROLL, $WS_VSCROLL))
GUICtrlSetData(-1, 'Test1|Test2|Test3|Test4|Test5|Test6|Test7', 'Test4')
Global $idEdit = GUICtrlCreateInput('', 10, 60, 220, 20)
GUICtrlSetData(-1, GUICtrlRead($idCombo))
GUISetState(@SW_SHOW)While 1
[/autoit]
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $idCombo
GUICtrlSetData($idEdit, GUICtrlRead($idCombo))
EndSwitch
WEndPerfekt!
Genau so hatte ich mir das gedacht
Vielen vielen Dank Euch allen
LG
Captain09