Button geht nicht.. wie lösen?

  • hallo,
    habe ein problem.. wenn der counter aktiv ist, geht ein anderer button nicht mehr, wie kann ich das lösen? vllt mit einem kleinen beispiel..

    und hier ist mein problem.. testet selbst:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <EditConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    Local $sec, $min, $hr, $day
    $Form1_1 = GUICreate("Form1", 453, 348, 243, 135)
    $Button1 = GUICtrlCreateButton("start iwas anderes", 32, 168, 143, 34, 0)
    $bt = GUICtrlCreateButton("GO", 184, 304, 25, 17, 0)
    $Label1 = GUICtrlCreateLabel("Tage", 104, 232, 36, 17)
    $iD = GUICtrlCreateInput('', 152, 232, 25, 21, $ES_NUMBER)
    GUICtrlCreateLabel('Stunden', 104, 256, 36, 17)
    $iH = GUICtrlCreateInput('', 152, 256, 25, 21, $ES_NUMBER)
    GUICtrlCreateLabel('Minuten', 104, 280, 36, 17)
    $iM = GUICtrlCreateInput('', 152, 280, 25, 21, $ES_NUMBER)
    GUICtrlCreateLabel('Sekunden', 104, 304, 36, 17)
    $iS = GUICtrlCreateInput('', 152, 304, 25, 21, $ES_NUMBER)

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

    $iDown = GUICtrlCreateInput('', 376, 120, 49, 21, $ES_READONLY)
    GUISetState(@SW_SHOW)

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

    While True
    $msg = GUIGetMsg()
    Switch $msg

    Case $Button1
    MsgBox (1,"Test","Button funktioniert")
    EndSwitch
    If $msg = $bt Then
    If GUICtrlRead($iD) = '' Then
    $day = 0
    Else
    $day = GUICtrlRead($iD)
    EndIf
    If GUICtrlRead($iH) = '' Then
    $hr = 0
    Else
    $hr = GUICtrlRead($iH)
    EndIf
    If GUICtrlRead($iM) = '' Then
    $min = 0
    Else
    $min = GUICtrlRead($iM)
    EndIf
    If GUICtrlRead($iS) = '' Then
    $sec = 0
    Else
    $sec = GUICtrlRead($iS)
    EndIf
    _CountDown($sec, $min, $hr, $day, True, $iDown)
    ElseIf $msg = $GUI_EVENT_CLOSE Then
    Exit
    EndIf

    WEnd

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

    ;----------------------------------------------------------------------------------------------------------------------
    ; Funktion _CountDown($SEC [, $MIN=0 [, $HOUR=0 [, $DAY=0 [, $VISIBLEDOWN=True [, $ALTERNATECTRL='TT']]]]])
    ;
    ; Beschreibung zählt vorgegebene Zeitspanne (Tage, Stunden, Minuten, Sekunden) herunter mit Anzeige Tooltip (Standard)
    ; oder Ausgabe in GUI-Ctrl; wahlweise Anzeige von Restzeit (Standard) oder abgelaufener Zeit
    ;
    ; Parameter $SEC: Sekunden
    ; optional $MIN: Minuten
    ; optional $HOUR: Stunden
    ; optional $DAY: Tage
    ; optional $VISIBLEDOWN: Ansicht (herunterzählen/heraufzählen)
    ; optional $ALTERNATECTRL: GUI-Ctrl in das die Ausgabe mittels GUICtrlSetData() ausgegeben wird
    ;
    ; Erfordernisse #include <Date.au3>
    ;
    ; Autor BugFix ([email='bugfix@autoit.de'][/email])
    ;----------------------------------------------------------------------------------------------------------------------
    #include <Date.au3>
    Func _CountDown($SEC, $MIN=0, $HOUR=0, $DAY=0, $VISIBLEDOWN=True, $ALTERNATECTRL='TT')
    $Sekunden = $SEC + $MIN*60 + $HOUR*3600 + $DAY*86400
    $end = _DateAdd('s', $Sekunden, _NowCalc())
    Local $message
    Do
    Sleep(100)
    $sec = _DateDiff('s', _NowCalc(), $end)
    If Not $VISIBLEDOWN Then
    $secShow = $Sekunden - $sec
    Else
    $secShow = $sec
    EndIf
    Select
    Case $secShow < 60
    If $ALTERNATECTRL = 'TT' Then
    ToolTip(StringFormat('%02u', $secShow) & ' s')
    Else
    GUICtrlSetData($ALTERNATECTRL, StringFormat('%02u', $secShow) & ' s')
    EndIf
    Case $secShow < 60*60
    $message = StringFormat('%02u', Floor($secShow/60)) & ':' & _
    StringFormat('%02u', Mod($secShow,60)) & ' min'
    If $ALTERNATECTRL = 'TT' Then
    ToolTip($message)
    Else
    GUICtrlSetData($ALTERNATECTRL, $message)
    EndIf
    Case $secShow < 60*60*24
    $message = StringFormat('%02u', Floor($secShow/3600)) & ':' & _
    StringFormat('%02u', Floor(Mod($secShow,3600)/60)) & ':' & _
    StringFormat('%02u', Mod(Mod($secShow,3600),60)) & ' h'
    If $ALTERNATECTRL = 'TT' Then
    ToolTip($message)
    Else
    GUICtrlSetData($ALTERNATECTRL, $message)
    EndIf
    Case Else
    $message = Floor($secShow/86400) & ' d / ' & _
    StringFormat('%02u', Floor(Mod($secShow,86400)/3600)) & ':' & _
    StringFormat('%02u', Floor(Mod(Mod($secShow,86400),3600)/60)) & ':' & _
    StringFormat('%02u', Mod(Mod(Mod($secShow,86400),3600),60)) & ' h'
    If $ALTERNATECTRL = 'TT' Then
    ToolTip($message)
    Else
    GUICtrlSetData($ALTERNATECTRL, $message)
    EndIf
    EndSelect
    Until $sec = 0
    EndFunc;==>_CountDown

    [/autoit]
  • Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <EditConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    Global $sec, $min, $hr, $day, $HOUR, $VISIBLEDOWN,$ALTERNATECTRL
    $Form1_1 = GUICreate("Form1", 453, 348, 243, 135)
    $Button1 = GUICtrlCreateButton("start iwas anderes", 32, 168, 143, 34, 0)
    $bt = GUICtrlCreateButton("GO", 184, 304, 25, 17, 0)
    $Label1 = GUICtrlCreateLabel("Tage", 104, 232, 36, 17)
    $iD = GUICtrlCreateInput('', 152, 232, 25, 21, $ES_NUMBER)
    GUICtrlCreateLabel('Stunden', 104, 256, 36, 17)
    $iH = GUICtrlCreateInput('', 152, 256, 25, 21, $ES_NUMBER)
    GUICtrlCreateLabel('Minuten', 104, 280, 36, 17)
    $iM = GUICtrlCreateInput('', 152, 280, 25, 21, $ES_NUMBER)
    GUICtrlCreateLabel('Sekunden', 104, 304, 36, 17)
    $iS = GUICtrlCreateInput('', 152, 304, 25, 21, $ES_NUMBER)

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

    $iDown = GUICtrlCreateInput('', 376, 120, 49, 21, $ES_READONLY)
    GUISetState()

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg

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

    Case $Button1
    MsgBox(1, "Test", "Button funktioniert")
    Case $bt
    If GUICtrlRead($iD) = '' Then
    $day = 0
    Else
    $day = GUICtrlRead($iD)
    EndIf
    If GUICtrlRead($iH) = '' Then
    $hr = 0
    Else
    $hr = GUICtrlRead($iH)
    EndIf
    If GUICtrlRead($iM) = '' Then
    $min = 0
    Else
    $min = GUICtrlRead($iM)
    EndIf
    If GUICtrlRead($iS) = '' Then
    $sec = 0
    Else
    $sec = GUICtrlRead($iS)
    EndIf
    _CD()
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch

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

    WEnd

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

    ;----------------------------------------------------------------------------------------------------------------------
    ; Funktion _CountDown($SEC [, $MIN=0 [, $HOUR=0 [, $DAY=0 [, $VISIBLEDOWN=True [, $ALTERNATECTRL='TT']]]]])
    ;
    ; Beschreibung zählt vorgegebene Zeitspanne (Tage, Stunden, Minuten, Sekunden) herunter mit Anzeige Tooltip (Standard)
    ; oder Ausgabe in GUI-Ctrl; wahlweise Anzeige von Restzeit (Standard) oder abgelaufener Zeit
    ;
    ; Parameter $SEC: Sekunden
    ; optional $MIN: Minuten
    ; optional $HOUR: Stunden
    ; optional $DAY: Tage
    ; optional $VISIBLEDOWN: Ansicht (herunterzählen/heraufzählen)
    ; optional $ALTERNATECTRL: GUI-Ctrl in das die Ausgabe mittels GUICtrlSetData() ausgegeben wird
    ;
    ; Erfordernisse #include <Date.au3>
    ;
    ; Autor BugFix ([email='bugfix@autoit.de'][/email])
    ;----------------------------------------------------------------------------------------------------------------------
    #include <Date.au3>
    Func _CD()
    Global $day = GUICtrlRead($iD), $sec = GUICtrlRead($iS), $hr = GUICtrlRead($iH), $min = GUICtrlRead($iM), $VISIBLEDOWN = True, $ALTERNATECTRL = 'TT'
    AdlibEnable("_CountDown",100)
    EndFunc ;==>_CountDown

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

    Func _CountDown()
    $Sekunden = $sec + $min * 60 + $hr * 3600 + $day * 86400
    $end = _DateAdd('s', $Sekunden, _NowCalc())
    Local $message
    $sec = _DateDiff('s', _NowCalc(), $end)
    If Not $VISIBLEDOWN Then
    $secShow = $Sekunden - $sec
    Else
    $secShow = $sec
    EndIf
    Select
    Case $secShow < 60
    If $ALTERNATECTRL = 'TT' Then
    ToolTip(StringFormat('%02u', $secShow) & ' s')
    Else
    GUICtrlSetData($ALTERNATECTRL, StringFormat('%02u', $secShow) & ' s')
    EndIf
    Case $secShow < 60 * 60
    $message = StringFormat('%02u', Floor($secShow / 60)) & ':' & _
    StringFormat('%02u', Mod($secShow, 60)) & ' min'
    If $ALTERNATECTRL = 'TT' Then
    ToolTip($message)
    Else
    GUICtrlSetData($ALTERNATECTRL, $message)
    EndIf
    Case $secShow < 60 * 60 * 24
    $message = StringFormat('%02u', Floor($secShow / 3600)) & ':' & _
    StringFormat('%02u', Floor(Mod($secShow, 3600) / 60)) & ':' & _
    StringFormat('%02u', Mod(Mod($secShow, 3600), 60)) & ' h'
    If $ALTERNATECTRL = 'TT' Then
    ToolTip($message)
    Else
    GUICtrlSetData($ALTERNATECTRL, $message)
    EndIf
    Case Else
    $message = Floor($secShow / 86400) & ' d / ' & _
    StringFormat('%02u', Floor(Mod($secShow, 86400) / 3600)) & ':' & _
    StringFormat('%02u', Floor(Mod(Mod($secShow, 86400), 3600) / 60)) & ':' & _
    StringFormat('%02u', Mod(Mod(Mod($secShow, 86400), 3600), 60)) & ' h'
    If $ALTERNATECTRL = 'TT' Then
    ToolTip($message)
    Else
    GUICtrlSetData($ALTERNATECTRL, $message)
    EndIf
    EndSelect
    If $sec = 0 Then AdlibDisable()
    EndFunc

    [/autoit]

    So, jetzt habe ich irgentwas gemacht, es tut jetzt was, und man kann nebenbei andere sachen machen, jedoch zählt er komisch.

    2 Mal editiert, zuletzt von SiLenCa (3. Juni 2009 um 16:24)

  • Hallo Executor87,

    Nachdem du mit deinem Problem aus Skripte hierher umgezogen bist und ich nicht weiss ob du meine Antwort dort gelesen hast,
    ist hier der Link der dein Probleme mit Timer(n) lösen könnte, bei der Formatierung der Zeit hast du ja auch BugFix Lösung genommen, also schau dir das Skript mal genauer an,

    mfg (Auto)Bert

  • ich möchte aber eigentlich nur, das der button für mein eigentliches scipt funktioniert?`damit ich dieses starten kann, und dieses script soll bei einem bestimmten aufruf den aktuellen Countdown status in irgendein.... von mir aus in eine txt datei schreiben..
    dazu muss aber der 2 button auch gehen... den rest bekomme ich dann alleine hin
    und in bugfix seinem beispiel.. das ist für etwas anderes.. und irgendwas mit adlibenable..ich weiß nichtmal was das ist.... eine adlib? xD und _time_settimer weiß ich auch nicht für was das sein soll...

    wie gesagt.. der button soll einfach auch wenn der counter runterzählt gehen.. damit das script startet.. mehr soll er nicht tun.

  • Hallo

    ich möchte aber eigentlich nur, das der button für mein eigentliches scipt funktioniert?`damit ich dieses starten kann, und dieses script soll bei einem bestimmten aufruf den aktuellen Countdown status in irgendein.... von mir aus in eine txt datei schreiben..
    dazu muss aber der 2 button auch gehen... den rest bekomme ich dann alleine hin
    und in bugfix seinem beispiel.. das ist für etwas anderes.. und irgendwas mit adlibenable..ich weiß nichtmal was das ist.... eine adlib? xD und _time_settimer weiß ich auch nicht für was das sein soll...

    wie gesagt.. der button soll einfach auch wenn der counter runterzählt gehen.. damit das script startet.. mehr soll er nicht tun.


    einen vernünftigen CountDown bekommst du aber nur mit einem der beiden Methoden hin, also entweder Hilfe lesen oder BugFix's Beispiel analysieren => Script anpassen oder Projekt einstampfen,

    mfg (Auto)Bert

  • @ SiLenCa
    ja jetzt geht der button.. aber die count funktion is nicht wirklich die, die ich wollte :D
    so wie in meinem beispiel sollte es sein.. nur das auch der andere button zusätzlich funktioniert, wenn der count runterzählt... geht das denn nicht irgendwie?

    irgendwie stört mich das langsam^^ dauernd funktioniert ein button nicht... ist das problem gelöst.. kommt ein neues...

  • ja ok... ich versteh es einfach nicht wie ich das machen soll...

    danke für die hilfe.