Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Syles in eigener Komponente verwenden. (https://www.delphipraxis.net/191152-syles-eigener-komponente-verwenden.html)

bernau 14. Dez 2016 08:40

Syles in eigener Komponente verwenden.
 
Ich habe einige visuelle Komponenten selber Programmiert. Diese sind nachfahren von TGraphicControl.

Das Problem ist nun, dass bei Verwendung von Styles, diese Komponenten nicht mitgestyled werden. (Bei einem "schwarzen" Layout, bleiben meine Komponenten "weis")

Wie kann ich beim "neu zeichnen" herausfinden welche Hintergrundfarbe ein gestyltes z.B. TEdit hat. Ich könnte in der Komponente natürlich "versteckt" ein TEdit erzeugen und dort die Farbe auslesen. Das ist aber wohl nicht der Sinn der Sache.

Whookie 14. Dez 2016 10:13

AW: Syles in eigener Komponente verwenden.
 
Wenn es nur um Farben geht mache ich das in etwa so:

Delphi-Quellcode:
  { Set the color of label text }
  if (StyleServices.Enabled) And (seFont In StyleElements) then
  begin
    if not Enabled then
      Canvas.Font.Color := StyleServices.GetStyleFontColor(sfWindowTextDisabled)
    else
      Canvas.Font.Color := StyleServices.GetStyleFontColor(sfWindowTextNormal);
  end
  else
  begin
    if not Enabled then
      Canvas.Font.Color := clGrayText
    else
      Canvas.Font.Color := iColr;
  end;

  Canvas.TextOut(xo+CDO, yo+CDO, Text);
Für alles andere bieten die StyleServices natürlich auch Funktionen und Konstanten (zu finden in Vcl.Themes.pas).


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:22 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