![]() |
ProgressBar Farbe lässt sich nicht ändern
Auf nen Button klick (bis jetzt ist das noch so*) soll die Farbe zweier Progress Bars geändert werden.
Aber irgendwie geht das nicht. Oder gibts da noch vllt ne andere Möglichkeit? Bis jetzt hab ich folgendes:
Delphi-Quellcode:
Andere Farben gehen auch nicht
uses CommCtrl;
procedure TfrmEinstellungen.btnPGBFarbeClick(Sender: TObject); begin frmMain.pbLeft.Perform(PBM_SETBARCOLOR, -1, clblue); frmMain.pbRight.Perform(PBM_SETBARCOLOR, -1, clblue); end;
Delphi-Quellcode:
---------------------------
clgreen
clorange clred clgreen clblack *soll später noch durch ne ComboBox bzw durch ne PaintBox geändert werden |
Re: ProgressBar Farbe lässt sich nicht ändern
die Progressbar nimmt doch die Farbe von ihrem Parent an oder liege ich jetzt völlig daneben?
|
Re: ProgressBar Farbe lässt sich nicht ändern
Hast du das XP-Manifest in dein Programm eingebunden?
|
Re: ProgressBar Farbe lässt sich nicht ändern
TProgressBar scheint gar keine Eigenschaft BarColor oder Color zu haben. Jedenfalls hab ich die hier (D2007) nicht gefunden. Man könnte aber TGauge nehmen, da kann man die Farben nach Belieben ändern.
|
Re: ProgressBar Farbe lässt sich nicht ändern
Zitat:
Zitat:
|
Re: ProgressBar Farbe lässt sich nicht ändern
Bei den Schweizern (swissdelphicenter.ch) gibts ein Code wie man eine Progressbar farbig bekommt...
|
Re: ProgressBar Farbe lässt sich nicht ändern
mit Hilfe von SwissDelphiCenter bin ich nun auf folgenden Code bekommen
Delphi-Quellcode:
Allerdings scheint der auch nicht wirklich zu funtkionieren?!frmMain.pbLeft.Brush.color := clTeal; SendMessage(frmMain.pbLeft.Handle, PBM_SETBARCOLOR, 0, clblue); frmMain.pbRight.Brush.color := clTeal; SendMessage(frmMain.pbRight.Handle, PBM_SETBARCOLOR, 0, clblue); |
Re: ProgressBar Farbe lässt sich nicht ändern
Wenn du das XP Manifest nutzt, dann wird das Theme verwendet, sprich: Der ProgressBar wird von Windows anhand des Themes gezeichnet. Somit musst du dir entweder selber einen Progressbar schreiben bzw. komplett einen Balken selber malen.
|
Re: ProgressBar Farbe lässt sich nicht ändern
Gerade getestet:
Delphi-Quellcode:
Funktioniert. Es muss an etwas anderem liegen. Vermutlich an dem vorhanden Manifest, wie Muetze schon gesagt hat.
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, commctrl; type TForm1 = class(TForm) ProgressBar1: TProgressBar; procedure FormPaint(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormPaint(Sender: TObject); begin SendMessage(Progressbar1.Handle, PBM_SETBARCOLOR, 0, clRed); end; end. |
Re: ProgressBar Farbe lässt sich nicht ändern
Hm ich werd da nochmal schauen.
Aber danke euch erstmal ;) |
Re: ProgressBar Farbe lässt sich nicht ändern
Zitat:
|
Re: ProgressBar Farbe lässt sich nicht ändern
Zitat:
oder mit
Delphi-Quellcode:
das Theme für die Progressbar abschalten.
uses uxTheme;
if uxTheme.IsThemeActive then uxTheme.SetWindowTheme(Progressbar1.Handle, '', ''); |
Re: ProgressBar Farbe lässt sich nicht ändern
Delphi-Quellcode:
So gehts!!
uses uxTheme, commctrl;
procedure TfrmEinstellungen.btnFarbeClick(Sender: TObject); begin if uxTheme.IsThemeActive then uxTheme.SetWindowTheme(frmMain.pbLeft.Handle, '', ''); uxTheme.SetWindowTheme(frmMain.pbRight.Handle, '', ''); frmMain.pbLeft.Brush.color := clTeal; SendMessage(frmMain.pbLeft.Handle, PBM_SETBARCOLOR, 0, clblue); frmMain.pbRight.Brush.color := clTeal; SendMessage(frmMain.pbRight.Handle, PBM_SETBARCOLOR, 0, clblue); end; Danke dir bitsetter!!! |
Re: ProgressBar Farbe lässt sich nicht ändern
Fehlt da nicht ein begin...end?
|
Re: ProgressBar Farbe lässt sich nicht ändern
Zitat:
edit: lol...genau der gleiche wortlaut xD |
Re: ProgressBar Farbe lässt sich nicht ändern
:lol: XD
|
Re: ProgressBar Farbe lässt sich nicht ändern
nunja, das mag sein aber es läuft ersteinmal, und das ist das wichtigste^^
Aber ich glaube wenn wir nur einen Fall haben ist ein Begin & End unwichtig oder? |
Re: ProgressBar Farbe lässt sich nicht ändern
Naja...
Das ist fast so als würdest du sagen:
Delphi-Quellcode:
Ergebnis:
if MyObject.IstApfel then
MyObject.Form := Rund; MyObject.Color := clRed; Egal, was MyObject ist, er wäre immer rot! Delphi kann ja nicht wissen, was er alles machen soll, wenn die Bedingung erfüllt ist. Ein Beispiel:
Delphi-Quellcode:
Was soll er machen, wenn "IstApfel" und "IstLebensmittel" wahr sind?
if myObject.IstApfel then
MyObject.Form := Rund; MyObject.Color := clRed; if myObject.IstLebensmittel then myObject.Essen; Was, wenn nur "IstLebensmittel" wahr ist? Und was wenn gar nichts wahr ist xD? Und Einrückungen zählen nicht ;) Die ignoriert der Compiler! Zwar funktioniert es so, aber die zweite ProgressBar hat nie einen Skin. MfG xZise |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:14 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz