Benutzer mit den meisten Antworten
Progress Bar Anzeige stimmt / passt nicht

Frage
-
Bei meinem Programm läuft soweit alles gut, bis auf die Anzeige der Progress Bar. Die Anzeige funktioniert, der ProgressBar->Value stimmt, Maximum und Minimum stimmen auch, aber wenn ich performStep ausführe (auch da stimmt immer der Wert), ist die Anzeige nicht ganz korrekt. Während die ersten 3 Steps jeweils so ca. 1 Balken wegmachen, ist beim 4 (dem letzten) Schritt gleich 2 Balken weg...
Kann man das irgendwie beheben?
//Edit: Betriebssystem WinXP, VS2010//Edit2: Meine Progressbar ist übrigens recht klein (40px Breite x 10px Höhe). Dieser Effekt tritt aber auch bei größeren Versionen auf. Allerdings da nicht ganz so sichtbar. 50% Sehen dann eher aus wie ca. 60%.
- Bearbeitet Stippy19 Donnerstag, 2. Februar 2012 17:11
Antworten
-
Hallo Stippi,
doch die gibt es - ich hab das vor einiger Zeit mal benötigt und mir ein eigenes Control geschrieben. Da hatte ich irgendwo im Internet die Anleitung dafür gefunden, wie man die klassische Progressbar erzeugen kann. (Ich weiß leider nicht mehr wo...)
Ich hab daher mal das Projekt hochgeladen:
ProgressBarModEs enthält neben dem Quellcode die eine dll - diese muss nur in die Toolbox gezogen werden, und dann sollten zwei zusätzliche Controls zur Verfügung stehen: ProgressBarMod_Vert und ProgressBarMod_Horiz. Es gibt übrigens eine zusätzliche Eigenschaft "Blink" (Boolean).
(Ich hoffe es funktioniert - bisher hab ich das nur auf meinem Rechner genutzt...)
Alex
- Als Antwort vorgeschlagen LionAM Montag, 27. Februar 2012 23:56
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 8. März 2012 17:56
- Bearbeitet LionAM Donnerstag, 8. März 2012 19:44 Link funktionierte nicht
- Tag als Antwort aufgehoben Robert BreitenhoferModerator Freitag, 9. März 2012 10:46
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 22. März 2012 12:54
-
Zu der Frage, warum die Standard-Progressbar so ungenau ist:Also das scheint ja nur unter Windows XP der fall zu sein (bei Vista weiß ich es nicht), da sie dort mit Blöcken dargestellt wird. Die verschiedenen Balken unterscheiden sich um maximal einen Block vom Sollwert - scheinbar wird aber immer aufgerundet. Im Gegensatz dazu kann ich unter Windows 7 keine Ungenauigkeit erkennen (±1 Pixel).
Vielleicht könntest du manuell eine Korrekturfunktion anwenden (d.h. ausprobieren, bei welchen Werten jeweils 1/2/3/... Balken angezeigt werden). Ich weiß nur nicht, ob die Anzahl der gezeigten Balken womöglich auch von der DPI-Einstellung oder vom Anzeigeschema abhängt...
Wenn dir die klassische (Windows 2000) Progressbar aus meinem obigen Post nicht gefällt, kannst du dir natürlich auch eine eigene zeichnen.
Alex
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Montag, 12. März 2012 12:38
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 22. März 2012 12:54
Alle Antworten
-
Da hast du recht, das Prob hab ich auch. Liegt an diesem Einzelbalken-artigen Style der ProgressBar von WinXp. Wenn ich den Style auf Continuous umstelle, ändert sich optisch allerdings erstmal nichts... ich hätte gehofft dann statt der vielen kleinen Balken einen durchgehenden Strich zu haben.
EDIT:
Laut Hilfe: Der Continuous-Stil wird berücksichtigt, wenn visuelle Stile nicht aktiviert sind. Also einfach in der main(..) die Zeile "Application::EnableVisualStyles();" auskommentieren. Der ProgressBar Balken ist jetzt schön durchgängig und passt zum eingestellten Wert, allerdings sieht das Formular ohne Visual Styles grottig aus.Kann man die Visual Styles auch irgendwie nur für die ProgressBar deaktivieren oder bekommt man irgendwie anders einen schönen durchgehenden Ladebalken hin?
- Bearbeitet Seppel der Programmierer Montag, 6. Februar 2012 12:55
-
Bin jetz kein Profi aber ich glaube das liegt an folgendem
1. wenn dein ProgressBar sagen wir die größe für 5 Balken hat aber Maximum 100 und Step 25 -> 4 Schritte
hätte zur folge das gerundet wird und somit eine unpräzise darstellung
2. Eine lösung für die sache mit Sytle hätte ich auch gern:
ich hab Win7 da wird das zwar durch einen gefüllten Balken dargestellt aber alle sekunden(~) komt so ein "glitzern" drüber,
was auf dauer (v.a. bei zweckentfremdung -> werte darstellen) sehr nervig wirkt
zu Seppel:
so weit ich weiß kann man die Visual Styles nicht für spezielle Elemente einfach abstellen
Allzwecklösung:
such online nach alternativen Steuerelementen oder versuch eines selbst zu machen
- Bearbeitet Wugi Montag, 6. Februar 2012 20:31
-
Habe nochmal gesucht, scheint aber irgendwie keine Lösung dafür zu geben, bei der man trotzdem die "original" progressBar verwenden kann...
-
Hallo Stippi,
doch die gibt es - ich hab das vor einiger Zeit mal benötigt und mir ein eigenes Control geschrieben. Da hatte ich irgendwo im Internet die Anleitung dafür gefunden, wie man die klassische Progressbar erzeugen kann. (Ich weiß leider nicht mehr wo...)
Ich hab daher mal das Projekt hochgeladen:
ProgressBarModEs enthält neben dem Quellcode die eine dll - diese muss nur in die Toolbox gezogen werden, und dann sollten zwei zusätzliche Controls zur Verfügung stehen: ProgressBarMod_Vert und ProgressBarMod_Horiz. Es gibt übrigens eine zusätzliche Eigenschaft "Blink" (Boolean).
(Ich hoffe es funktioniert - bisher hab ich das nur auf meinem Rechner genutzt...)
Alex
- Als Antwort vorgeschlagen LionAM Montag, 27. Februar 2012 23:56
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 8. März 2012 17:56
- Bearbeitet LionAM Donnerstag, 8. März 2012 19:44 Link funktionierte nicht
- Tag als Antwort aufgehoben Robert BreitenhoferModerator Freitag, 9. März 2012 10:46
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 22. März 2012 12:54
-
Hallo Stippy19,
Ich gehe davon aus, dass die Antwort Dir weitergeholfen hat.
Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.Grüße,
Robert
Robert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können. -
Hallo Stippy19,
Einige wichtige Sachen sind hier im Forum zu beachten:
Immer für eine Neue Frage einen Neuen Thread aufmachen
Grundsätzlich ist zu jedem neuen Thema ein eigener Thread zu öffnen, denn dadurch wird die Übersicht gewahrt.
Ein eigener Thread nutzt der Kommunikation, verhindert Spannungen und Streit und trägt der Übersichtlichkeit in einem Forum bei.
Lösungsbeiträge als „Die Antwort“ markieren
Bitte markieren Sie den Beitrag, der zur Lösung geführt hat, als "Die Antwort". Durch Bewerten eines Beitrags als "Die Antwort" können andere Teilnehmer die Lösung schneller finden. Außerdem können Sie dem Benutzer, der die Antwort eingereicht hat, für seinen Beitrag danken und zur Steigerung der Antwortqualität in der Diskussionsgruppe beitragen.
[Quelle: Forenregeln]
Wie bewerte ich einen Beitrag? Um einen Beitrag als hilfreich zu bewerten, klicken Sie in einem beliebigen Beitrag aufAls hilfreich bewerten. Sie können Ihre Stimme nur einmal für einen Beitrag abgeben.
[Quelle: Häufig gestellte Fragen]
Lies einmal folgende Links durch:How to ask a question on a professional forum
Danke und Grüße,
Robert
Robert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können. -
Aber, das ist doch das gleiche Thema und praktisch die gleiche Frage. Die Frage oben war: "Kann man das beheben?", die Frage jetzt ist: "Woran liegt das?". Das ist im Endeffekt doch die gleiche Frage. Denn wenn man weiß woran es liegt, kann man es beheben (theoretisch).
-
Aber, das ist doch das gleiche Thema und praktisch die gleiche Frage.
Hallo Stippy19,
Ja, es ist war, es gehört zum selben Thema, deshalb mache ich nochmals den Thread auf, vielleicht hat noch jemand eine Idee.
Grüße,
Robert
Robert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können. -
Zu der Frage, warum die Standard-Progressbar so ungenau ist:Also das scheint ja nur unter Windows XP der fall zu sein (bei Vista weiß ich es nicht), da sie dort mit Blöcken dargestellt wird. Die verschiedenen Balken unterscheiden sich um maximal einen Block vom Sollwert - scheinbar wird aber immer aufgerundet. Im Gegensatz dazu kann ich unter Windows 7 keine Ungenauigkeit erkennen (±1 Pixel).
Vielleicht könntest du manuell eine Korrekturfunktion anwenden (d.h. ausprobieren, bei welchen Werten jeweils 1/2/3/... Balken angezeigt werden). Ich weiß nur nicht, ob die Anzahl der gezeigten Balken womöglich auch von der DPI-Einstellung oder vom Anzeigeschema abhängt...
Wenn dir die klassische (Windows 2000) Progressbar aus meinem obigen Post nicht gefällt, kannst du dir natürlich auch eine eigene zeichnen.
Alex
- Als Antwort vorgeschlagen Robert BreitenhoferModerator Montag, 12. März 2012 12:38
- Als Antwort markiert Robert BreitenhoferModerator Donnerstag, 22. März 2012 12:54
-
Hallo Stippy19,
Ich gehe davon aus, dass die Antworten Dir weitergeholfen haben.
Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.Grüße,
Robert
Robert Breitenhofer, MICROSOFT
Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip „Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.