Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - panels färben


OcculsuInfernuM - Sa 06.01.07 18:17
Titel: panels färben
also ich habe einen panel von dem ich gern die farbe ändern würde...

gedacht habe ich mir das per popupmenü


Delphi-Quelltext
1:
2:
3:
4:
procedure TForm1.red1Click(Sender: TObject);
begin
panel1.Brush.canvas.clred
end;


aber canvas erkennt er nicht an (rot unterstrichen)

was kann man da machen

oder gibs ne andere möglichkeit das panel zu färben?

Moderiert von user profile iconChristian S.: Delphi-Tags hinzugefügt
Moderiert von user profile iconChristian S.: Topic aus Sonstiges (Delphi) verschoben am Sa 06.01.2007 um 18:20


GTA-Place - Sa 06.01.07 18:22

Ja, mit Panel1.Color := clRed; geht es auch ;-)


Gausi - Sa 06.01.07 18:33

Wobei das nicht mehr funktioniert, wenn man die Anwendung durch ein XP-Manifest im XP-Stil haben will.

Da hilft dann wohl nur selberzeichnen, und weil das Panel weder die Eigenschaft Canvas noch ein OnPaint-Event besitzt (zumindest bei Delphi7), muss man sich da ne eigene Klasse ableiten.


GTA-Place - Sa 06.01.07 18:47

Oder aber man ist klug und zieht einfach ein Shape drüber ;-)


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var
  Shape: TShape;
begin
  Shape := TShape.Create(Panel1);
  Shape.Parent := Panel1;
  Shape.Name   := 'Shape';
  Shape.Brush.Color := clRed;
  Shape.Pen.Color   := clRed;
  Shape.Align := alClient;
end;

Freigeben nicht vergessen, oder eben schon zur Designzeit aufs Panel legen.


EDIT: Um es deutlich zu sagen: Besser ist natürlich der Vorschlag von Gausi, aber vllt. für Anfänger nicht ganz einfach. Solltest du, OcculsuInfernuM, mehre Panels färben wollen und XPManifest verwenden, dann solltest du dich an den Vorschlag von Gausi halten.


Coder - Sa 06.01.07 19:24

user profile iconGausi hat folgendes geschrieben:
Wobei das nicht mehr funktioniert, wenn man die Anwendung durch ein XP-Manifest im XP-Stil haben will.

Doch.
Einfach ParentBackground auf false.

MfG


jaenicke - Sa 06.01.07 19:37

Geht aber AFAIK erst ab Delphi 2005 oder 2006...

// EDIT: Genau:
Delphi 7: ParentBackground nutzt nix
Delphi 2005: Da gehts mit ParentBackground
Delphi 2006: Da gehts auch

Ich hab das übrigens nur per Zufall bei Delphi 2005 PE herausgefunden, als ich das circa 4 Wochen hatte. Sonst wäre ich nie drauf gekommen, dass es da plötzlich geht... ;-)


OcculsuInfernuM - So 07.01.07 14:54

ok danke euch habs hinbekomen