Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Windoof Benutzer Farben


Fasi-Monster - Mi 23.10.02 14:35
Titel: Windoof Benutzer Farben
Sanfte Grüße (hi,hi)
Ich habe da ein Problem mit Farben. Delphi schleift die Farben der Benutzereinstellungen durch und so kommt es, dass die Buttons und Reiter der PageControls in Farben erscheit, die eigentlich nicht zum "ausgewählten " rest passen. Gibt es eine Möglichkeit das zu unterbinden?


Tino - Mi 23.10.02 14:48

Also bei mir sind die Buttons und die Reiter des PageControls in der richtigen Farbe... :roll:


Fasi-Monster - Mi 23.10.02 16:30

Also nochmal:
wenn ich mit Delphi6 ein Proggi bastle und nix in Farben ändere, dann werden die Farben, gemäß der Einstellung, die man bei Windows macht übernommen. Die Buttons werden bei der Einstellung Ahorn z.B. hellbraun u.s.w. Wenn ich aber sagen will, dass die Farbe meiner Form blau sein soll, kann es (je nach windows) sein, das die Buttons hellbraun sind.
Also, wie kann man das unterbinden?


Tino - Do 24.10.02 00:27

Also nochmal:
Fasi-Monster hat folgendes geschrieben:
Wenn ich aber sagen will, dass die Farbe meiner Form blau sein soll, kann es (je nach windows) sein, das die Buttons hellbraun sind.

Ähä. Wem willst Du etwas sagen? Möchtest Du Änderungen in den Einstellungen von Windows machen oder in bei der Entwicklung. Also z. B. im Objektinspektor?

Gruß
TINO


Delete - Do 24.10.02 08:07

Fasi-Monster hat folgendes geschrieben:
wenn ich mit Delphi6 ein Proggi bastle (Anm. von Simmi: :wink:) und nix in Farben ändere, dann werden die Farben, gemäß der Einstellung, die man bei Windows macht übernommen.

Ist eigentlich ja auch logisch.
Zitat:
"Wenn ich aber sagen will, dass die Farbe meiner Form blau sein soll, kann es (je nach windows) sein, das die Buttons hellbraun sind.

Der TButton hat keine "Color"-Eigenschaft, die Farbe lässt sich also auf dem Weg über den Objektinspektor nicht unbedingt ändern. Du kannst deine Form also so bunt machen wie du willst - die Buttons werden immer die Farbe besitzen, der die Windows-User eingestellt hat; hellbraun eben bei dieser "Ahorn"-Einstellung ...

Zitat:
Also, wie kann man das unterbinden?

Gegenfrage: warum sollte man das unterbinden? Warum ein Programm benutzen, dass sich den Systemfarben widersetzt und dadurch evtl. Sch... aussieht, wenn der User die selben Farben für den Hintergrund usw. benutzt?
Dann lieber alles unverändert lassen, dann reagiert das Programm auf die Farbänderung des Anwenders (Der Kunde ist König!) flexibel.

Ansonsten, um deine Frage zu beantworten: Du musst eine passende Komponente verwenden, die dir die farbliche Änderung von Buttons erlaubt, bzw. du musst diese Farbänderung selbst programmieren.


Tino - Do 24.10.02 08:23

@MathiasSimmack: Danke, jetzt habe ich es vestanden. Hatte nicht daran gedacht das der TButton keine Color Eingeschaft besitzt und habe deshalb das angebliche "Problem" nicht so richtig verstanden.

Gruß
TINO


Fasi-Monster - Do 24.10.02 09:55

:roll:
Also gut, ich habe ja die Möglichkeit die Buttons durch PDJButtons zu ersetzten, denn da kann ich die Farbe ändern. Ich hätte da eine Theorie zu den TabSheets von den PageControls. Wie sieht´s denn mit
"PageControl1.Canvas.Brush.Color := clred;" aus oder ähnliches, denn das hier funktioniert nicht. Hat einer schon mal so was versucht?


Fasi-Monster - Do 24.10.02 16:26

:D
Also Hoschies...

Im Obj.Insp. vom PageControl auf OnDrawTab

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
procedure TRetour_frm.PageControl1DrawTab(Control: TCustomTabControl;
  TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin
  If TabIndex >= 0 Then With Control.Canvas Do 
  Begin
      TextRect( Rect, Rect.Left+8, Rect.Top+3,
      TPageControl(Control).Pages[TabIndex].Caption );
  End;  
end;

und außerdem noch in den Eigenschaften "OwnerDraw" auf True
Die Schrift sieht man erst nach´m Kompilieren. Nur den doofen Rand von den TabSheet bekomme ich noch nicht weg.


Bunt ist das Leben(??) und Granatenstark(???????)

(24.10.02 17:06 Tino) Code-Tags hinzugefügt.