GUICtrlSetData für GuiCtrlCreateDate

  • Hi,
    ich versuche mit dem Befehl "GUICtrlSetData" den Wert für
    das Control Date zu ändern.
    Hier mal ein Beispiel-Script:


    [autoit]

    #include <GUIConstants.au3>
    #include <Date.au3>

    [/autoit][autoit][/autoit][autoit]

    $guiauswahl = GUICreate("Versuch",200 ,200)

    [/autoit][autoit][/autoit][autoit]

    $guidate = GuiCtrlCreateDate("", 5, 40, 190, 20,$DTS_SHORTDATEFORMAT)
    $guilabel = GUICtrlCreatelabel ("Datum", 5, 100, 200, 25)

    [/autoit][autoit][/autoit][autoit]

    GUISetState ()

    [/autoit][autoit][/autoit][autoit]

    do
    $msg = GUIGetMsg(0)
    $date = GUICtrlRead($guidate)
    if $msg = $guidate then
    $date = GUICtrlRead($guidate)
    if $date < _NowDate() Then ;Datum soll nicht in Vergangenheit liegen
    msgbox (0,"Versuch", "Datum muß gleich oder größer als aktuelles Datum sein")
    GUICtrlSetData($guidate, _NowDate()) ;Datum soll wieder auf aktuellem Tagesdatum zurückgesetzt werden
    GUICtrlSetData($guilabel, _NowDate()) ;Das Label ist nur ein Test ob es auch funktioniert
    endif
    endif
    until $msg = $GUI_EVENT_CLOSE

    [/autoit]


    Nach Eingabe des Datums das in der Vergangenheit liegt kommt eine Meldung und dann soll das Datum wieder auf aktuellem Tagesdatum
    zurückgestzt werden. Leider bleibt das Datum aber falsch stehen.
    Was mache ich fasch?

    CU
    KKThunder

    • Offizieller Beitrag

    Hallo!

    Da geht es um einige kleine Probleme zwischen deutschem und internationalem (englischem) Datumsformat. Das Control liefert deutsches Format (das meine Funktion in englisches umbaut), erwartet aber internationales zurück. _NowCalcDate liefert englisches Format und ist daher in diesem Fall vor _NowDate, was nationales liefert, vorzuziehen.


    [autoit]

    #include <GUIConstants.au3>
    #include <Date.au3>

    $guiauswahl = GUICreate("Versuch",200 ,200)

    $guidate = GuiCtrlCreateDate("", 5, 40, 190, 20,$DTS_SHORTDATEFORMAT)
    $guilabel = GUICtrlCreatelabel ("Datum", 5, 100, 200, 25)

    GUISetState ()

    do
    $msg = GUIGetMsg(0)
    $date = GUICtrlRead($guidate)
    if $msg = $guidate then
    $date = GUICtrlRead($guidate)
    if _DateDiff("D", _DateLocal2Int($date), _NowCalcDate()) > 0 Then ;Datum soll nicht in Vergangenheit liegen
    msgbox (0,"Versuch", "Datum muß gleich oder größer als aktuelles Datum sein")
    GUICtrlSetData($guidate, _NowCalcDate()) ;Datum soll wieder auf aktuellem Tagesdatum zurückgesetzt werden
    GUICtrlSetData($guilabel, _NowDate()) ;Das Label ist nur ein Test ob es auch funktioniert
    endif
    endif
    until $msg = $GUI_EVENT_CLOSE

    [/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ; von peethebee in Galenda
    Func _DateLocal2Int($conv_date)
    $conv_parts = StringSplit($conv_date, ".")
    Return $conv_parts[3] & "/" & $conv_parts[2] & "/" & $conv_parts[1]
    EndFunc ;==>_DateLocal2Int

    [/autoit]

    peethebee

  • peethebee

    Tja was soll ich sagen, funktioniert wunderbar.
    Besten Dank auch für die schnelle Antwort.
    Ich glaube darauf wäre ich nicht gekommen.

    Thanks

    KKThunder ;)