Text auf/vor Progressbar

  • Gibt es eine Möglichkeit, auf/vor einer ablaufenden Progressbar, einen
    Text anzuzeigen ? Bei mir verschwindet der Text immer wieder, wenn
    ich der Progressbar ein aktuellen Wert zuweise.

    Hier ein Beispiel:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants .au3="">

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

    Dim $i, $bar, $lblproz

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

    GUICreate("Progresstest",220,100)
    $bar = GUICtrlCreateProgress (10,15,200,20,$PBS_SMOOTH)
    $lblproz = GUICtrlCreateLabel ("Text soll sichtbar bleiben", 10,15,200,20,$SS_CENTER)
    GUICtrlSetColor($lblproz,0xFFFFFF)
    GUISetState(@SW_SHOW)

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

    Sleep(2000)

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

    While 1
    $msg = GUIGetMsg()
    $i += 1
    If $msg = $GUI_EVENT_CLOSE Or $i = 101 Then ExitLoop
    GUICtrlSetData($bar,$i)
    Sleep(100)
    Wend

    [/autoit]

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

    Einmal editiert, zuletzt von Micha_he (24. Dezember 2007 um 10:44)

  • Hhier mit jetzt ner neuen UDF :):

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Dim $i, $count, $bar, $lblproz

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

    GUICreate("Progresstest",220,100)
    $bar = GUICtrlCreateProgress (10,15,200,20,$PBS_SMOOTH)
    $lblproz = GUICtrlCreateLabel ("Text soll sichtbar bleiben", 10,15,200,20,$SS_CENTER)
    ;GUICtrlSetState($lblproz,$GUI_ONTOP)
    GUICtrlSetBkColor($lblproz,$GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetColor($lblproz,0x0000FF)
    GUISetState(@SW_SHOW)

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

    Sleep(2000)

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

    While 1
    $msg = GUIGetMsg()
    $count += 1
    If $msg = $GUI_EVENT_CLOSE Or $i = 101 Then ExitLoop
    If $count = 4 Then
    $count = 0
    $i += 1
    _GUICtrlProgressUpdate($bar,$i, $lblproz)
    ElseIf $i = 101 Then
    ExitLoop
    EndIf
    Sleep(20)
    Wend

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

    ;===============================================================================
    ;
    ; Function Name: _GUICtrlProgressUpdate($progress, $value, $Over1 = -1, $Over2 = -1, $Over3 = -1)
    ; Description:: Updates ProgressBar and resets up to three Controls in front of it.
    ; Parameter(s): $progress : Progressbar
    ; $value : Value of the ProgressBar
    ; $Over1 - $Over3 : Optional Controls to set in the foreground
    ; Requirement(s): ?
    ; Return Value(s): Same as GuiCtrlSetData
    ; Author(s): Prog@ndy
    ;
    ;===============================================================================
    ;
    Func _GUICtrlProgressUpdate($progress, $value, $Over1 = -1, $Over2 = -1, $Over3 = -1)
    $ret = GUICtrlSetData($progress,$value)
    If $Over1 Then GUICtrlSetState($Over1,$GUI_ENABLE)
    If $Over2 Then GUICtrlSetState($Over2,$GUI_ENABLE)
    If $Over3 Then GUICtrlSetState($Over3,$GUI_ENABLE)
    Return $ret
    EndFunc

    [/autoit]
  • Besten Dank für den Tip ;)

    Dann hätten es aber auch die zwei Zeilen 8 und 19 (ohne Funktion) getan....

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants .au3="">

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

    Dim $i, $bar, $lblproz

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

    GUICreate("Progresstest",220,100)
    $bar = GUICtrlCreateProgress (10,15,200,20,$PBS_SMOOTH)
    $lblproz = GUICtrlCreateLabel ("Text soll sichtbar bleiben", 10,17,200,20,$SS_CENTER)
    GUICtrlSetBkColor($lblproz,$GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetColor($lblproz,0xFFFFFF)
    GUISetState(@SW_SHOW)

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

    sleep(2000)

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

    While 1
    $msg = GUIGetMsg()
    $i += 1
    If $msg = $GUI_EVENT_CLOSE Or $i = 101 Then ExitLoop
    GUICtrlSetData($bar,$i)
    GUICtrlSetState($lblproz,$GUI_Enable)
    Sleep(100)
    Wend

    [/autoit]

    Gut, flimmern tut es bei mir nicht, schöner wäre es aber, man könnte ein
    Objekt fest vor ein anderes stellen. Dann müsste man nicht ständig das
    Label wieder nach vorne holen.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Wenn da eine %-Anzeige rein soll, dann muss sowieso das Label aktualisiert werden und es kommt wieder nach vorne :)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>

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

    Dim $i, $bar, $lblproz

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

    GUICreate("Progresstest",220,100)
    $bar = GUICtrlCreateProgress (10,15,200,20,$PBS_SMOOTH)
    $lblproz = GUICtrlCreateLabel ("Text soll sichtbar bleiben", 10,17,200,20,$SS_CENTER)
    GUICtrlSetBkColor($lblproz,$GUI_BKCOLOR_TRANSPARENT)
    GUICtrlSetColor($lblproz,0x0000FF)
    GUISetState(@SW_SHOW)

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

    sleep(2000)

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

    While 1
    $msg = GUIGetMsg()
    $i += 1
    If $msg = $GUI_EVENT_CLOSE Or $i = 101 Then ExitLoop
    GUICtrlSetData($bar,$i)
    ;GUICtrlSetState($lblproz,$GUI_Enable)
    GUICtrlSetData($lblproz,"Fortschritt: " & $i & "%")
    Sleep(100)
    Wend

    [/autoit]
  • Es soll nur eine Beschreibung des gerade ablaufenden Vorgangs sein, Keine %-Anzeige. Daher müsste ich den Wert, solange die Progressbar läuft, nicht ändern.

    Zur Nutzung dieses Forum's, ist ein Übersetzer für folgende Begriffe unerlässlich:

    "On-Bort, weier, verscheiden, schädliges, Butten steyling, näckstet, Parr, Porblem, scripe, Kompletenz, harken, manuel zu extramieren, geckukt, würglich, excell, acces oder Compilevorgeng"

  • Schon fast zwei Jahre alt, aber wen ebenfalls die Suchfunktion hier verschlagen hat:
    Das Flickern lässt sich leicht lösen. Man muss einfach vor UND nach dem SetData(Progressbar) das Label aktualisieren, also z.B. so:

    [autoit]


    For $i = 0 To 10
    GUICtrlSetData($balkenlabel, $i * 10)
    GUICtrlSetData($balken, $i * 10)
    GUICtrlSetData($balkenlabel, $i * 10)
    Sleep(100)
    Next

    [/autoit]