Das Beispiel von autoBert funktioniert bei mir einwandfrei. Welche AutoIt-Version benutzt Du?
Ich würde (wegen der Optik und damit der Benutzer nichts falsches eintragen kann) das noch etwas abändern:
AutoIt
#include <GUIConstantsEx.au3>
#include <Date.au3>
#include <GuiComboBox.au3>
Global $hGui, $iJahr, $iMonat
_Example()
Func _Example()
$hGui = GUICreate("Kalender Test", 180, 180)
Local $idCboJahr = GUICtrlCreateCombo('', 5, 5, 100, 20, $CBS_DROPDOWNLIST)
Local $idCboMonat = GUICtrlCreateCombo('', 5, 30, 100, 20, $CBS_DROPDOWNLIST)
Local $idCboTag = GUICtrlCreateCombo('', 5, 55, 100, 20, $CBS_DROPDOWNLIST)
Local $idBtnOK = GUICtrlCreateButton("&OK", 5, 150, 170, 25)
_InitJahr($idCboJahr)
_InitMonat($idCboMonat)
_InitTag($idCboTag)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $idCboJahr, $idCboMonat
$iJahr = GUICtrlRead($idCboJahr)
$iMonat = _GUICtrlComboBox_GetCurSel($idCboMonat) + 1
_InitTag($idCboTag)
EndSwitch
WEnd
EndFunc ;==>_Example
Func _InitJahr($iID)
For $i = @YEAR - 2 To @YEAR + 5
If $i = @YEAR Then
GUICtrlSetData($iID, $i, $i)
Else
GUICtrlSetData($iID, $i)
EndIf
Next
$iJahr = @YEAR
EndFunc ;==>_InitJahr
Func _InitMonat($iID)
For $i = 1 To 12
$sMon = _DateToMonth($i, 2)
If $i = @MON Then
GUICtrlSetData($iID, $sMon, $sMon)
Else
GUICtrlSetData($iID, $sMon)
EndIf
Next
$iMonat = @MON
EndFunc ;==>_InitMonat
Func _InitTag($iID)
GUICtrlSetData($iID, "", "")
$iTage = _DateDaysInMonth($iJahr, $iMonat)
For $i = 1 To $iTage
If _DateToDayOfWeek($iJahr, $iMonat, $i) <> 1 Then _
GUICtrlSetData($iID, ($i < 10 ? '0' : '') & $i); & '.' & $iMonat & '.' & $iJahr)
Next
EndFunc ;==>_InitTag
Alles anzeigen