GUICtrl neu einlesen

  • Hallo
    gibt es in AutoIt die Möglichkeit einzelne GUIControl oder GUILabel mit neuen Werten zuversorgen ohne die gesamte GUI neu einzulesen?
    z.B.
    $test = "2009/09/30" ; Dieser Wert wird verändert
    $simDate = GUICtrlCreateDate($test, 20, 370, 210, 20)

    Danke und Gruß

    Einmal editiert, zuletzt von energy98 (4. August 2009 um 16:26)

  • Hast du dir schonmal den Befehl

    [autoit]

    GUICtrlSetData()

    [/autoit]

    angeschaut?

    Mal ein Beispiel:

    [autoit]

    $test = "2009/09/30" ; Dieser Wert wird verändert
    $simDate = GUICtrlCreateDate($test, 20, 370, 210, 20)

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

    $test = "2009/10/01" ; Der Wert wurde verändert
    GUICtrlSetData($simDate, $test)

    [/autoit]

    PS: Noch ein Tipp:
    Wenn du das/den aktuelle Jahr, Monat, Tag haben willst nimm doch:

    [autoit]

    $test = @MDAY & "/" & @MON & "/" & @YEAR

    [/autoit]
    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:

    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P

    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%

  • woran ich dachte ist das Folgende:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiButton.au3>
    #include <Date.au3>
    $mCount = 12
    Opt('MustDeclareVars', 1)
    Dim $Form1, $Date1, $Radio1, $Radio2, $Radio3, $nMsg, $mCount
    $Form1 = GUICreate("test", 633, 454)
    GUIRegisterMsg($WM_COMMAND, '_WMCOMMAND')

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

    $Radio1 = GUICtrlCreateRadio("12", 40, 190, 113, 17)
    $Radio2 = GUICtrlCreateRadio("6", 40, 230, 113, 17)
    $Radio3 = GUICtrlCreateRadio("3", 40, 280, 113, 17)

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

    $Date1 = GUICtrlCreateDate(_DateSum($mCount), 40, 144, 217, 25)
    GuiCtrlSetState($Radio1, $BST_CHECKED)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    Func _WMCOMMAND($hWnd, $msg, $wParam, $lParam)
    Local $nNotifyCode, $nID, $hCtrl
    $nNotifyCode = BitShift($wParam, 16)
    $nID = BitAND($wParam, 0x0000FFFF)
    $hCtrl = $lParam
    If $nID = $Radio1 Then GUICtrlSetData($Date1, ($mCount = 12))
    If $nID = $Radio2 Then GUICtrlSetData($Date1, ($mCount = 6))
    If $nID = $Radio3 Then GUICtrlSetData($Date1, ($mCount = 3))
    ;If $nID = $simHost Then GUICtrlSetData($sim107, "tf@" & StringLower(GUICtrlRead($simHost) & '.'))
    ConsoleWrite($Date1 & "==" & $mCount & @CRLF)
    EndFunc ;==> _WMCOMMAND

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

    Func _DateSum($cMonth)
    Local $iDays, $sNewDate, $aDate
    $sNewDate = _DateAdd( 'M',$cMonth, _NowCalcDate()) ;** Monatsdifferenz
    $aDate = StringSplit($sNewDate, "/")
    $iDays = _DateDaysInMonth( $aDate[1], $aDate[2] ) ;** Anzahl der Monatstage
    return $aDate[1] & "/" & $aDate[2] & "/" & $iDays
    EndFunc

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


    Wenn man die Radio-Button drückt soll sich das Datum des "GUICtrlCreateDate" um 12, 6 oder 3 Monate verändern (zum MonatsEnde).
    Wo ist der Fehler?

    Gruß

    • Offizieller Beitrag

    Du musst die Berechnung mit den neuen Werten auch durchführen.
    Außerdem brauchst Du in dem Fall gar kein GuiRegisterMsg:

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <WindowsConstants.au3>
    #include <GuiButton.au3>
    #include <Date.au3>
    $mCount = 12
    Opt('MustDeclareVars', 1)
    Dim $Form1, $Date1, $Radio1, $Radio2, $Radio3, $nMsg, $mCount
    $Form1 = GUICreate("test", 633, 454)

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

    $Radio1 = GUICtrlCreateRadio("12", 40, 190, 113, 17)
    $Radio2 = GUICtrlCreateRadio("6", 40, 230, 113, 17)
    $Radio3 = GUICtrlCreateRadio("3", 40, 280, 113, 17)

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

    $Date1 = GUICtrlCreateDate(_DateSum($mCount), 40, 144, 217, 25)
    GUICtrlSetState($Radio1, $BST_CHECKED)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Radio1
    $mCount = 12
    GUICtrlSetData($Date1, _DateSum($mCount))
    Case $Radio2
    $mCount = 6
    GUICtrlSetData($Date1, _DateSum($mCount))
    Case $Radio3
    $mCount = 3
    GUICtrlSetData($Date1, _DateSum($mCount))
    EndSwitch
    WEnd

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

    Func _DateSum($cMonth)
    Local $iDays, $sNewDate, $aDate
    $sNewDate = _DateAdd('M', $cMonth, _NowCalcDate()) ;** Monatsdifferenz
    $aDate = StringSplit($sNewDate, "/")
    $iDays = _DateDaysInMonth($aDate[1], $aDate[2]) ;** Anzahl der Monatstage
    Return $aDate[1] & "/" & $aDate[2] & "/" & $iDays
    EndFunc ;==>_DateSum

    [/autoit]