2008-11-24 6 views
9

Ich verwende eine Delphi 2009 VCL TProgressBar als eine Art "leeres/volles" Messgerät.Deaktivieren der Fortschrittsbalken-Animation auf Vista Aero

Unter Vista, mit aktiviertem Aero-Thema, ist eine Animation damit verbunden, was für ein Messgerät lästig und ungeeignet ist.

Gibt es eine Möglichkeit, dies zu deaktivieren (NICHT durch Anpassen der Designeinstellungen des Benutzers), um die Animation auf diesem Steuerelement zu verhindern?

Um zu verdeutlichen, möchte ich etwas im Wesentlichen identisch mit den "Speicherplatz verwendet" Meter in Windows Explorer. Keine Animation, aber immer noch mit schönen Rand- und Schattierungseffekten.

Update:

Ich verstehe, dass ich einen "Meter", anstatt einen echten Fortschrittsbalken müssen. Wie kann ein themenbezogener Zähler mit dem Standard-Windows-Fortschrittsbalken-Steuerelement implementiert werden?

Antwort

11

Gemäß der Vista UI guidelines for progress bars Sie sollten kein TProgressBar für solche Zwecke überhaupt verwenden, heißt es:

Verwenden Fortschrittsbalken nur für den Fortschritt. Verwenden Sie Meter, um Prozentsätze anzugeben, die nicht mit dem Fortschritt in Zusammenhang stehen.

Es gibt eine Menge von Komponenten von Drittanbietern (zB Abakus VCL), die bei Prozessautomatisierung und dergleichen ausgerichtet sind, vielleicht könnten Sie stattdessen eines dieser Steuerelemente verwenden?

+1

Verstanden - aber es sagt: "Meter: Dieses Muster ist kein Fortschrittsbalken, aber es ist mit dem Fortschrittsbalken Steuerelement implementiert." Wie kann ich ein solches "Meter" mit dem Fortschrittsbalken steuern? Was die Abakus-Komponenten betrifft, sollte meine Anwendung so aussehen, wie sie in den letzten zehn Jahren entworfen wurde. – Roddy

+0

Ich weiß nicht, wie das Messgerät zu implementieren ist, und Vista hier nicht zu überprüfen. Könnten Sie Spy ++ ausführen und sich die Windows-Stil-Flags ansehen, die für diese Meter-Steuerelemente festgelegt sind? Spy ++ kommt mit MS Visual C++. Google für "spy ++ freeware", wenn Sie es nicht haben. – mghie

+0

Wie für Abakus - ich höre dich ;-) Wenn Sie das Messgerät in Vista gut aussehen wollen, wäre es natürlich am besten, einen Stil für die gemeinsame Kontrolle zu finden. Ich finde nichts im Platform SDK ... Sehen Sie sich http://msdn.microsoft.com/en-us/library/cc656530(VS.85).aspx für die verfügbare Doku an. – mghie

0

Werfen Sie einen Blick auf this forum thread. Es ist der einzige vielversprechende Link, den ich gefunden habe, und der erste Eintrag erwähnt die verschiedenen Zustände des Fortschrittsbalkens, daher wird es wahrscheinlich nicht helfen, die Eigenschaften Smooth, State und Style zu ändern.

Wenn der Tipp in der letzten Buchung in der Tat die einzige Möglichkeit ist, den Fortschrittsbalken im Meter-Stil zu zeichnen, besteht die beste Option darin, eine absteigende Klasse von TProgressBar zu erstellen, den WM_PAINT-Handler zu überschreiben, nach Vista und aktivierten Themen zu suchen Verwenden Sie in diesem Fall die Funktionen in UxTheme, um die verschiedenen Teile des Steuerelements zu zeichnen.

9

Sie können versuchen, Themen für diese Steuerung auszuschalten;

+0

+1, weil diese Antwort nützlich scheint - obwohl ich keine Ahnung, ob es funktioniert, oder ist der richtige Weg absichtlich das Thema auf einem allgemeinen Steuerelement deaktivieren. –

+0

ich getestet habe dies und es funktioniert, ist die Funktion in der Bibliothek UxTheme (http://msdn.microsoft.com/en-us/library/bb759827(VS.85).aspx) –

+0

Ja und nein. Es schaltet die Animation aus ABER es schaltet auch * alle * Theming des Steuerelements aus, so dass Sie nur eine durchgehende blaue Box ohne Rahmen, Schattierung oder irgendeine andere UI Verschönerung bekommen. Mein Ziel ist es, etwas zu bekommen, das zu den 'Speicherplatzverbrauchern' im Explorer passt. – Roddy

3

die VistaProBar Versuchen bei http://rmklever.com/ Es tut NICHT haben Animation mit ihr verbunden sind.

+0

Danke - sieht nützlich aus – Roddy