Progressbar Uhrzeit bezogen

  • Hallo leute ich hab ein kleines Problem, wie krieg ich eine Progressbar dazu das es mir mit der Uhrzeit vorranschreitet,

    ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 uhr
    >>>>>>>>>>

    es soll immer Minuteweise vorranschreiten wie löse ich das ??

    Please HELP

    bin dankbar für jeden Tipp :rolleyes:

  • Moin, 24 Stunden Mal 60 Minuten die Stunde (24*60 = 1440 ) dass ganze durch 100% die eine Progress bar darstellen kann (100/1440 = 0,069) d.h. jede Minute musst du deine Progressbar um den Wert 0,069 Weitersetzten Guictrlsetdata($Progressbar,$WertAlt+0,069)

    Gruß Marvin

  • Moin, 24 Stunden Mal 60 Minuten die Stunde (24*60 = 1440 ) dass ganze durch 100% die eine Progress bar darstellen kann (100/1440 = 0,069) d.h. jede Minute musst du deine Progressbar um den Wert 0,069 Weitersetzten Guictrlsetdata($Progressbar,$WertAlt+0,069)Gruß Marvin


    Rechnung ist zwar richtig, eine Progressbar kann aber nur ganze Integerwerte annehmen, d.h. sie wir nur alle ~ 14,5 min sichtbar aktualisiert,

    Das nur Int möglich siehst du hier:

    [autoit]

    Local $hGuiMain = GUICreate("My GUI Progressbar", 220, 100, 100, 200)
    Local $progressbar1 = GUICtrlCreateProgress(10, 10, 200, 20)
    GUISetState(@SW_SHOW, $hGuiMain)

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

    GUICtrlSetData($progressbar1, 13.33)
    MsgBox(0,"Wert der Prgressbar:",GUICtrlRead($progressbar1))

    [/autoit]

    bwohl 13,33 zugewiesen nimmt sie nur den Wert 13 an,

    mfg autoBert

    Einmal editiert, zuletzt von autoBert (15. Februar 2012 um 11:50)

  • autoBert: stimmt nicht du kannst auch Dezimalzahlen verwenden :) man sieht es nur nicht gleich weil der Wert sehr gering ist, also ist es erst sinnvoll den wert ab >1 zu setzen sonst sieht man ihn eh sogut wie überhaupt nicht..


    €: jep jetzt stimmts :)

    Gruß Marvin

    Einmal editiert, zuletzt von Protex (15. Februar 2012 um 11:56)

  • irgend etwas mach ich Falsch oder Ich raffs einfach net ....


    wie krieg ich den balken von 6 auf 23 uhr das der sich bewegt ...?????... wenn die App läuft?

    Sorry bin noch Anfänger was Autoit angeht. Bitte um Tipps

    Danke


    [autoit]


    #include <Excel.au3>
    #include <Array.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <WindowsConstants.au3>

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

    Local $time, $minlaufer

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

    $Form2 = GUICreate("Hotline Bereitschaft für am "& 1,577, 50, 251, 326)
    $progressbar1 = GUICtrlCreateProgress(0, 33, 577, 17)
    GUICtrlSetColor(-1, 32250); not working with Windows XP Style
    $time = ((@HOUR + @MIN) + $minlaufer)
    GUICtrlSetData($progressbar1, $time)

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

    GUISetState(@SW_SHOW, $Form2)

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

    While 1
    $nMsg = GUIGetMsg()

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

    Switch $nMsg

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

    Case $GUI_EVENT_CLOSE
    Exit
    $minlaufer = "9,6"
    EndSwitch

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

    WEnd

    [/autoit][autoit][/autoit][autoit][/autoit]
  • Nochmal zum Veständniss du willst also den Balken haben dass er sich von Support Anfang bis Support Ende einfach füllt? damit man sieht wie lange man noch Arbeiten muss?
    wann genau sind denn Support Zeiten von 6 bis 23 Uhr? mhh wenn ja weicht ihr aber hart von den Regelarbeitszeiten ab oder ist damit 18 -23 Uhr gemeint? :D

    Gruß Marvin

  • Von 6 bis 23 Uhr soll eine Info Anzeige werden,
    für ein paar User die aus einer Exel Tabelle Informationen bekommen,
    diese ändert sich aber mehrfach am Tag somit soll das Programm mit Anzeige Balken auch
    signaliseren wenn änderungen statgefunden in der Exel Tabelle.

  • Meine Frage ist immer noch nicht beantwortet xD also ist deine Zeitspanne die das Programm läuft 17 Stunden? also demensprechend 17 Stunden Arbeitszeit?
    je nachdem wie lange die Arbeitszeit ist kannste deinen Wert ja anpassen dass er genau hinhaut :)
    XD Gruß Marvin

  • Also brauchst du doch nur eine neue Rechnung in diesem Fall keine 24 St sondern 16 d.h. (16*60=960) somit kommste auf einen Wert von 0,104... um diesen Wert musste deine Progressbar erweitern jede Minute also am besten machste das ganze alle 10 Minuten und erweiterst also deine Progressbar um 1% alle 10 Minuten^^ Gruß Marvin

    Gruß Marvin

  • gemacht balken bewegt sich aber nicht was mach ich falsch oder muss ich noch machen? damit der sich dann alle paar min bewegt?

  • Hallo doni_darco1,

    das kannst du über AdlibRegister lösen:

    Spoiler anzeigen
    [autoit]

    #include <Excel.au3>
    #include <Array.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <WindowsConstants.au3>

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

    Global $iStart = 6 * 60 ;6 Uhr
    Global $iGesamt = 16 * 60 ;gesamte Bereitschaftszeit

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

    $Form2 = GUICreate("Hotline Bereitschaft für am " & 1, 587, 50, 251, 326)
    $idLblPer = GUICtrlCreateLabel("",550,10,30,17)
    $progressbar1 = GUICtrlCreateProgress(5, 33, 577, 17)
    GUICtrlSetColor(-1, 32250); not working with Windows XP Style
    GUISetState(@SW_SHOW, $Form2)
    _ShowProgress() ;damit beim Progarmmstart sfortr ein Fortschritt errechnet wird
    AdlibRegister("_ShowProgress", 60000) ;alle 60 Sekunden aufrufen

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

    While 1
    $nMsg = GUIGetMsg()

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

    Switch $nMsg

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

    Case $GUI_EVENT_CLOSE
    Exit
    ;$minlaufer = "9,6"
    EndSwitch
    WEnd

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

    Func _ShowProgress()
    Local $iBereits = @HOUR * 60 + @MIN - $iStart
    $iPercent = $iBereits / $iGesamt * 100
    ConsoleWrite(@HOUR & ":" & @MIN & @TAB & $iPercent & @CRLF) ;zur Kontrolle
    GUICtrlSetData($progressbar1, $iPercent)
    GUICtrlSetData($idLblPer,GUICtrlRead($progressbar1) & " %") ;zur Demo, dass die Progressbar nur ganze Werte annimmt
    EndFunc ;==>_ShowProgress

    [/autoit]

    also am besten machste das ganze alle 10 Minuten und erweiterst also deine Progressbar um 1% alle 10 Minuten


    @Protex 960 <> 1000, da kämen ja erst nach 40 "Überminuten" die 100% zustande,

    mfg autoBert

  • So was hier zb

    Spoiler anzeigen
    [autoit]


    #include <GUIConstantsEx.au3>

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

    Local $time, $minlaufer
    Global $Process = 1
    $hForm = GUICreate("Hotline Bereitschaft für am "& 1,577, 50, 251, 326)
    $hProgress = GUICtrlCreateProgress(0, 33, 577, 17)
    GUICtrlSetColor(-1, 32250); not working with Windows XP Style
    GUISetState(@SW_SHOW)
    AdlibRegister("_MoveProcess",600000)

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

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

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

    EndSwitch
    WEnd

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

    Func _MoveProcess()
    GUICtrlSetData($hProcess,$Process)
    $Process += 1
    EndFunc

    [/autoit]
  • Hallo protex,

    deine Lösung hat 2 Fehler:

    • egal zu welcher Uhrzeit man startet fängt der Fortschritt bei null und ermiitelt nicht den Fortschritt seit Beginn (6.00 Uhr)der Bereitschaft an, also auch nach einem Stromausfall oder Rechnerabsturz
    • dies ausser acht gelassen und vorausgesetzt das Programm wird um 6:00 gestartet ereicht es erst 22:40 die 100 %. Dies sollte aber um 22:00 (Ende der Bereitschaft) der Fall sein.

    mfg autoBert

  • autoBert, habe ich irgendwo geschrieben dass das sein fertiges Script ist? es soll nur ein Denkanstoß sein und mehr nicht, ich weiß auch dass es Script um genau 6 gestartet werden müsste so wie es momentan gebaut ist usw also bin mir bewusst was ich für Scripte mache aber danke der Korrektur

    Gruß Marvin

  • Als ich meinen Beitrag geschrieben habe in der Berufsschule war noch kein Eintrag vor mir ich habe also den Beitrag kurz nach deinem Wohl geschrieben und nicht extra vorhher noch mal geschaut ob jemand was geschrieben hatte

    Gruß Marvin

  • Dann solltest du mal F5 oder besser STRG-F5 drücken, denn den Beitrag vor dir: https://autoit.de/index.php?page…6876#post246876 stelte ich um 17:12 ein. Du hast dann um 17:28 deine Lösung eingestellt. So etwas kann passieren, warum du dich aber jetzt mit

    Als ich meinen Beitrag geschrieben habe in der Berufsschule war noch kein Eintrag vor mir ich habe also den Beitrag kurz nach deinem Wohl geschrieben

    herausreden willst verstehe ich nicht. Diese Unsitte solltest du dir abgewöhnen, wenn man Unrecht hat sollte man schweigen oder besser es zugeben,

    mfg autoBert

  • Danke für eure Hilfe,

    ich komm in moment leider immer noch nicht weiter das ding läuft asyncron wer kann mir noch ein bischen helfen?