Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ProgressBar Animation beenden wenn nicht 100% (https://www.delphipraxis.net/193513-progressbar-animation-beenden-wenn-nicht-100-a.html)

TUX_der_Pinguin 9. Aug 2017 09:40

ProgressBar Animation beenden wenn nicht 100%
 
Hallo liebe DPler,

ich habe in einer Anwendung eine Fortschrittsanzeige (TProgressBar) für eine Suche, werden jetzt zu viele Datensätze durchsucht wird die Suche unterbrochen und ein Meldung angezeigt. Die Fortschrittsanzeige bleibt dann z.B. bei 43% stehen. Unter Windows 7 als auch Windows 10 läuft aber noch eine Animation durch den Fortschrittsbalken, gibt es eine Möglichkeit diese Animation zu stoppen? Wie es das auch tut wenn man den Fortschritt auf 100% setzt. Dieses geflacker könnte den Anwender auf die Idee bringen die Suche würde noch laufen, was sie aber nicht mehr tut.

Ich hoffe jemand von euch hat einen Tipp für mich, bin da recht ratlos zur Zeit.

Der schöne Günther 9. Aug 2017 09:49

AW: ProgressBar Animation beenden wenn nicht 100%
 
Falls du die VCL-TProgressBar meinst, die hat eine
Delphi-Quellcode:
State
-Eigenschaft die genau dafür gedacht ist

jaenicke 9. Aug 2017 09:50

AW: ProgressBar Animation beenden wenn nicht 100%
 
Der laut GUI Richtlinien vorgesehene Weg ist dann den State auf pbsError oder pbsPaused zu setzen, je nachdem was für eine Meldung das ist.
Zitat:

Progress bar colors
- Use red or yellow progress bars only to indicate the progress status, not the final results of a task. A red or yellow progress bar indicates that users need to take some action to complete the task. If the condition isn't recoverable, leave the progress bar green and display an error message.
- Turn the progress bar red when there is a user recoverable condition that prevents making further progress. Display a message to explain the problem and recommend a solution.
- Turn the progress bar yellow to indicate either that the user has paused the task or that there is a condition that is impeding progress but progress is still taking place (as, for example, with poor network connectivity). If the user has paused, change the Pause button label to Resume. If progress is impeded, display a message to explain the problem and recommend a solution.

mensch72 9. Aug 2017 09:56

AW: ProgressBar Animation beenden wenn nicht 100%
 
alternativer Vorschlag(wir verwenden aber die sicher fast identisch aussehenden TMS-GUI Componenten):
- wenn es einen Abbruch gibt, dann bleibt der Balken(incl. Animation) da stehen wo er ist, wird aber per "ErrorState" von grün auf "ROT"(was dann auch weiter "rot flackert") umgesetzt
- da haben bisher alle Anwender kappiert das etwas nicht so fertig geworden ist wie es beabsichtigt war und sind drauf geeicht dann im Log nachzusehen was nicht geklappt hat
- Download/Upload-"Timeout/Abbruch" oder Speicherplatz "begerenzt/voll" sind da bei uns die am häufigsten geloggten Gründe, warum ein Vorgang nicht zu 100% durchläuft
- solange das Verhalten innerhalb des Programms kostant ist, kann man Anwender so durchaus auch mit indirekten Fehlerhinweisen wie eines plötzlich roten Progressbalkens in der Statuszeile glücklich machen... wenn Vorgänge wirklich länger daueren und Anwender können mit anderem weiterarbeiten nerven plötzlich auf popende Modale Fehlermeldungsdialoge vermutlich mehr

TUX_der_Pinguin 9. Aug 2017 10:08

AW: ProgressBar Animation beenden wenn nicht 100%
 
Zitat:

Zitat von Der schöne Günther (Beitrag 1378368)
Falls du die VCL-TProgressBar meinst, die hat eine
Delphi-Quellcode:
State
-Eigenschaft die genau dafür gedacht ist

Das habe ich wohl übersehen.

Hab es gleich mal ausprobiert und es funktioniert, die Animation ist beendet. Jedoch ändert sich dabei auch die Farbe des Balkens
Delphi-Quellcode:
pbsError
= rot und
Delphi-Quellcode:
pbsPaused
= gelb, damit könnte ich aber vielleicht Leben.

jaenicke 9. Aug 2017 10:16

AW: ProgressBar Animation beenden wenn nicht 100%
 
Zitat:

Zitat von TUX_der_Pinguin (Beitrag 1378374)
Hab es gleich mal ausprobiert und es funktioniert, die Animation ist beendet. Jedoch ändert sich dabei auch die Farbe des Balkens
Delphi-Quellcode:
pbsError
= rot und
Delphi-Quellcode:
pbsPaused
= gelb, damit könnte ich aber vielleicht Leben.

Das würde ich aber auch erwarten, da es so der Standard ist. Bei uns wird diese Fortschrittsanzeige auch in der Taskleiste angezeigt und ein solcher Status auch dort dann angezeigt.
Auch das entspricht dann dem Standardverhalten.

Gut sehen kannst du das am Windows Explorer, wenn du etwas kopierst und eine Datei schon vorhanden ist usw.
Der hält sich genau an diese Vorgaben.

TUX_der_Pinguin 9. Aug 2017 10:25

AW: ProgressBar Animation beenden wenn nicht 100%
 
Zitat:

Zitat von jaenicke (Beitrag 1378377)
Zitat:

Zitat von TUX_der_Pinguin (Beitrag 1378374)
Hab es gleich mal ausprobiert und es funktioniert, die Animation ist beendet. Jedoch ändert sich dabei auch die Farbe des Balkens
Delphi-Quellcode:
pbsError
= rot und
Delphi-Quellcode:
pbsPaused
= gelb, damit könnte ich aber vielleicht Leben.

Das würde ich aber auch erwarten, da es so der Standard ist. Bei uns wird diese Fortschrittsanzeige auch in der Taskleiste angezeigt und ein solcher Status auch dort dann angezeigt.
Auch das entspricht dann dem Standardverhalten.

Gut sehen kannst du das am Windows Explorer, wenn du etwas kopierst und eine Datei schon vorhanden ist usw.
Der hält sich genau an diese Vorgaben.

Macht ja auch alles soweit Sinn. Ich muss zugeben ich habe das bisher nie gebraucht. Aber danke dir und den anderen für die ausführlichen Informationen.

hoika 9. Aug 2017 12:14

AW: ProgressBar Animation beenden wenn nicht 100%
 
Hallo,
du könntest auch das Theme ändern.

Delphi-Quellcode:
uses
  Themes;

SetWindowTheme(ProgressBar.Handle, ' ', ' ');

TUX_der_Pinguin 9. Aug 2017 12:28

AW: ProgressBar Animation beenden wenn nicht 100%
 
Zitat:

Zitat von hoika (Beitrag 1378386)
Hallo,
du könntest auch das Theme ändern.

Delphi-Quellcode:
uses
  Themes;

SetWindowTheme(ProgressBar.Handle, ' ', ' ');

Darüber hatte ich auch nachgedacht und es mal kurz ausprobiert, jedoch wird da durch halt auch das Design geändert und das passt dann nicht zum restlichen look and feel der Anwendung.

hoika 9. Aug 2017 14:08

AW: ProgressBar Animation beenden wenn nicht 100%
 
Hallo,
ich meinte nicht prinzipiell, sondern nur in Deinem Abbruch-Code.

Und hier steht was von Style = UserPaint
http://www.windows-tech.info/18/866def1f6059f141.php

oder OwnerDraw
https://emoacht.wordpress.com/2011/1...-visual-style/


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:20 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz