Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi TProgressbar - Farbe definieren (https://www.delphipraxis.net/215040-tprogressbar-farbe-definieren.html)

TERWI 26. Apr 2024 23:49

TProgressbar - Farbe definieren
 
Ich möchte gerne der Einfachheit halber für ein Diagramm (12 Monats-Anzeige) die TProgressbar nutzen.
Vertikal wie erforderlich ist OK, Animation lässt sich ja auch abschalten ...
... aber ich bekomme das mit der gewünschten Farbe zum eingestellten Wert / Postion einfach nicht hin.
Die Farbe lässt sich nicht unabhängig vom Wert einstellen.
Viel rumgekugelt, aber bisher nix gescheites / funktionierendes / keine Lösung gefunden.

Alternative Komponenten ? ... nicht wirklich erwünscht !
Ich möchte gerne möglichst mit "Bordmitteln" arbeiten.
... und: Ja ich weiß: Selber zeichen auf Canvas was zu vermeiden gewünscht ist / wäre ...

Papaschlumpf73 27. Apr 2024 09:14

AW: TProgressbar - Farbe definieren
 
Glaube das funktioniert nur, wenn die Laufzeit-Themes deaktiviert sind. Wenn die Themes aktiviert sind, kann man den Balken z.B. in rot anzeigen mit ProgressBar.State:=pbsError;
Damit kommt man aber nicht sehr weit; es gibt nur 3 States: pbsNormal, pbsError und pbsPaused.

himitsu 27. Apr 2024 09:32

AW: TProgressbar - Farbe definieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Nja, Rot, Gelb und Grün (früher Blau) wird vom Design der Komponente selbst geboten,
ansonsten VCL-Styles oder eine andere Komponente.


Delphi-Referenz durchsuchenTGauge :stupid:

TERWI 29. Apr 2024 13:31

AW: TProgressbar - Farbe definieren
 
Zur Ergänzung: Ich hätte die Anzeige gerne in vertikal !
Mit TGauge scheint das nicht zu funzen (auch immer mit %-Angabe drin)
und mit Progressbar "sehe" ich nur nen running-Balken bei Status NORMAL. Sonst nicht.

Hab mir mal TChart angesehen (hatte ich nicht instaliert) .... schick, aber völlig oversized.
Gibt's da nix einfaches ?

Papaschlumpf73 29. Apr 2024 13:44

AW: TProgressbar - Farbe definieren
 
Dann würde ich ein einfaches TShape dafür nehmen. Dem kannst du jede Farbe geben.

TERWI 29. Apr 2024 14:32

AW: TProgressbar - Farbe definieren
 
Wie kann/soll man mit einem TShape einfach nen vertikalen Balken Basteln ?
Habe weiter mit der Progreessbar gespielt.
Mit Projekt/Optionen/Anwendung/Manifest/Laufzeit-Themes AUS wird das auch nix.
"Früher" hat das immer problemlos geklappt.

Papaschlumpf73 29. Apr 2024 14:50

AW: TProgressbar - Farbe definieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Anbei ein kleines Beispiel...

FriedrichAT 4. Mai 2024 23:51

AW: TProgressbar - Farbe definieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!

Geht auch ohne Shape.

Delphi-Quellcode:
Uses  Winapi.CommCtrl, Winapi.UxTheme, // ergänzen

type
  TForm1 = class(TForm)
    ProgressBar1: TProgressBar;
    ProgressBar2: TProgressBar;
    TrackBar1: TTrackBar;
    procedure FormShow(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
  private   { Private-Deklarationen }
  public    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
begin
  Winapi.UxTheme.SetwindowTheme(ProgressBar1.Handle, '', '');
  // Setzen der Hintergrundfarbe
  SendMessage(ProgressBar1.Handle, PBM_SETBKCOLOR, 0, clRed);
  // Setzen der Balkenfarbe
  SendMessage(ProgressBar1.Handle, PBM_SETBARCOLOR, 0, clNavy);

  Winapi.UxTheme.SetwindowTheme(ProgressBar2.Handle, '', '');
  // Setzen der Hintergrundfarbe
  SendMessage(ProgressBar2.Handle, PBM_SETBKCOLOR, 0, clNavy);
  // Setzen der Balkenfarbe
  SendMessage(ProgressBar2.Handle, PBM_SETBARCOLOR, 0, clRed);
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  ProgressBar1.Position:= Trackbar1.Position;
  ProgressBar2.Position:= Trackbar1.Position;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:44 Uhr.

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