Hallo Leute!
Ich habe ein Code den ich verwende, wo viele verschiedene vergebe werden, um am Ende auf ein Wert zu kommen, ich nutze dazu 10 Comboboxen und weil es Nervig ist immer erst zu Klicken bis die Box aufgeht habe ich nach einer Lösung gesucht.
Nun stelle ich euch AutoOpen_ComBo.au3 vor.
Wenn die maus über das Combo Contol ist wird das Control automatisch geöffnet (wenn es leer ist).
Bug behoben : 01.10.2010
Code:
Spoiler anzeigen
#include <GuiComboBox.au3>
#include <GuiComboBoxEx.au3>
#include <GUIConstantsEx.au3>
;===================================================================================================================================#
;~ Function Name....: Auto_OpenCombo($comB)
;~ Description......: ComBobox Automatisch Öffnen
;~ $comB ..........: ContolID der Combobox oder ein Array
;~ Return Value(s)..:
;~ Author(s)........: Kleiner27 (http://www.autoit.de)
;====================================================================================================================================#
Func Auto_OpenCombo($comB)
If IsArray($comB) Then
For $i = 0 To UBound($comB) - 1
If _GUICtrlComboBox_GetDroppedState($comB[$i]) Then
Opt('MouseCoordMode', 1)
Dim $M_pos = MouseGetPos()
Dim $aRect = _GUICtrlComboBoxEx_GetDroppedControlRect($comB[$i])
If ($M_pos[0] < $aRect[0]) Or ($M_pos[0] > $aRect[2]) Then Return _GUICtrlComboBox_ShowDropDown($comB[$i])
Return (0)
Else
If (GUICtrlRead($comB[$i]) <> '') Then ContinueLoop
Opt('MouseCoordMode', 2)
Dim $C_pos = ControlGetPos('', '', $comB[$i])
If @error Then Return (0)
If __Maus_Control($C_pos[0], $C_pos[1], $C_pos[2], $C_pos[3]) Then
GUICtrlSetState($comB[$i], $GUI_FOCUS)
Return _GUICtrlComboBox_ShowDropDown($comB[$i], True)
EndIf
EndIf
Next
Else
If _GUICtrlComboBox_GetDroppedState($comB) Then
Opt('MouseCoordMode', 1)
Dim $M_pos = MouseGetPos()
Dim $aRect = _GUICtrlComboBoxEx_GetDroppedControlRect($comB)
If ($M_pos[0] < $aRect[0]) Or ($M_pos[0] > $aRect[2]) Then Return _GUICtrlComboBox_ShowDropDown($comB)
Return (0)
Else
If (GUICtrlRead($comB) <> '') Then Return (0)
Opt('MouseCoordMode', 2)
Dim $C_pos = ControlGetPos('', '', $comB)
If @error Then Return (0)
If __Maus_Control($C_pos[0], $C_pos[1], $C_pos[2], $C_pos[3]) Then
GUICtrlSetState($comB, $GUI_FOCUS)
Return _GUICtrlComboBox_ShowDropDown($comB, True)
EndIf
EndIf
EndIf
EndFunc ;==>Auto_OpenCombo
Func __Maus_Control($O_X, $O_Y, $O_Width, $O_Height)
Dim $M_pos = MouseGetPos()
Return ($M_pos[0] > $O_X) and ($M_pos[0] < $O_X + $O_Width) and ($M_pos[1] > $O_Y) and ($M_pos[1] < $O_Y + $O_Height)
EndFunc ;==>__Maus_Control
LG Kleiner