Delphi-PRAXiS
Seite 1 von 2  1 2      

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/)
-   -   Caption-Text eines TabSheet-Reiters farbig ausgeben (https://www.delphipraxis.net/167258-caption-text-eines-tabsheet-reiters-farbig-ausgeben.html)

r29d43 20. Mär 2012 12:59

Caption-Text eines TabSheet-Reiters farbig ausgeben
 
Hi,

gibt es eigentlich eine plus minus einfache Möglichkeit, den Caption-Text eines TabSheet-Reiters farbig o. unterstrichen ausgeben zu können?

Ich habe zwei TabSheets in einem PageControl und möchte je nach "kritischem Inhalt" eines der TabSheets dessen TabSheet-Caption dann in roter Farbe oder unterstrichen outputten. Natürlich könnte man zur Not diesbezüglich auch noch irgendwelche visuellen Info-Flags sonstwohin setzen, imo wäre das mit einer farbigen TabSheet-Caption für mich jetzt aber das eleganteste.

Mit der TabSheet-Property "Font.Color" geht es jedenfalls leider nicht.

(Als Notlösung hätte ich hier sonst nur noch, für diese Caption primär nur Blanks einzusetzen und den eigentlichen Caption-Text dann mit einem darübergesetzten TStaticText-Label entsprechend zu simulieren.)

Thx im Voraus.
Gruß

uligerhardt 20. Mär 2012 13:20

AW: Caption-Text eines TabSheet-Reiters farbig ausgeben
 
Mit dem Delphi-eigenen TPageControl dürfte das was Größeres werden. Aber es gibt massenweise Fremdkomponenten, die das können.

Bummi 20. Mär 2012 13:21

AW: Caption-Text eines TabSheet-Reiters farbig ausgeben
 
ich weiß nicht wie es unter Turbodelphi aussieht

OwnerDraw:=true;

Delphi-Quellcode:
procedure TForm2.PageControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin
   PageControl1.Canvas.Brush.Color := clWhite;
   PageControl1.Canvas.FillRect(Rect);
   if Tabindex=1 then
      begin
        if PageControl1.ActivePageindex=TabIndex then PageControl1.Canvas.Font.Color := clRed else PageControl1.Canvas.Font.Color := clblue;
        PageControl1.Canvas.Font.Style := [fsBold,fsUnderline]
      end;
    PageControl1.Canvas.Textout(rect.Left + 2,rect.Top + 2,PageControl1.Pages[Tabindex].Caption)

end

uligerhardt 20. Mär 2012 13:56

AW: Caption-Text eines TabSheet-Reiters farbig ausgeben
 
Zitat:

Zitat von Bummi (Beitrag 1157523)
OwnerDraw:=true;

Mit Owner-Drawing machst du aber das Theming platt, oder?

Bummi 20. Mär 2012 14:05

AW: Caption-Text eines TabSheet-Reiters farbig ausgeben
 
sieht so aus ...

Steku 20. Mär 2012 14:15

AW: Caption-Text eines TabSheet-Reiters farbig ausgeben
 
Zitat:

Zitat von uligerhardt (Beitrag 1157521)
Mit dem Delphi-eigenen TPageControl dürfte das was Größeres werden. Aber es gibt massenweise Fremdkomponenten, die das können.

Ich werfe einfach mal wieder die LMD-Tools Freeware Edition
in den Raum. Könnte mir vorstellen, dass das Vorhaben mit der entsprechenden
Kompo daraus recht einfach umzusetzen ist...

http://lmd.de/download/index.php#LMD

Gruß
Steku

r29d43 20. Mär 2012 14:49

AW: Caption-Text eines TabSheet-Reiters farbig ausgeben
 
Thx all.


@Bummi, ja klappt auch mit Turbo-Delphi, danke.



Was hat es eigentlich mit diesem Theming auf sich? Was besonderst wichtiges? War schon eine etwas längere Zeit nicht mehr hier und bin deswegen nicht mehr ganz auf dem Laufenden.

uligerhardt 20. Mär 2012 15:09

AW: Caption-Text eines TabSheet-Reiters farbig ausgeben
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von r29d43 (Beitrag 1157549)
Was hat es eigentlich mit diesem Theming auf sich? Was besonderst wichtiges? War schon eine etwas längere Zeit nicht mehr hier und bin deswegen nicht mehr ganz auf dem Laufenden.

Seit XP gibt's ja Themes/visual styles (a.k.a. Teletubbie-/Playskool-/...-Look :mrgreen:), d.h. Controls haben nicht mehr zwangsweise die Windows95-Optik. Vergleiche mal die beiden PageControls auf dem Screenshot: Das linke hat wegen OwnerDrawing den Classic-Look, während das rechte ein stinknormales PageControl ist und demzufolge gethemed ist:
Anhang 36551

r29d43 20. Mär 2012 17:38

AW: Caption-Text eines TabSheet-Reiters farbig ausgeben
 
Zitat:

Zitat von uligerhardt (Beitrag 1157555)
Seit XP gibt's ja Themes/visual styles (a.k.a. Teletubbie-/Playskool-/...-Look :mrgreen:), d.h. Controls haben nicht mehr zwangsweise die Windows95-Optik...


Ja, diese Sache kenn ich auch noch. Dachte mir nachher auch schon minimal irgendwo, dass es damit was zu tun haben könnte. (Ist auch schon extrem lange her, dass ich damit mal überhaupt was mit zu tun hatte).

In meinem TabSheet-Caption-Fall ist dieses dann wegfallende Theming wegen der nur sehr kleinen davon betroffenen Fläche allerdings auch nicht so tragisch, imo. Wird wohl kaum auffallen, dass da kein Gradient mehr als Caption-Hintergrund existiert. Und von daher: Die Vorteile dieser OwnerDraw-Methode überwiegen hier mE also schon ein bisschen.

mz23 21. Mär 2012 05:35

AW: Caption-Text eines TabSheet-Reiters farbig ausgeben
 
Zitat:

Zitat von Bummi (Beitrag 1157523)
ich weiß nicht wie es unter Turbodelphi aussieht

OwnerDraw:=true;

Delphi-Quellcode:
procedure TForm2.PageControl1DrawTab(Control: TCustomTabControl; TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin
   PageControl1.Canvas.Brush.Color := clWhite;
   PageControl1.Canvas.FillRect(Rect);
   if Tabindex=1 then
      begin
        if PageControl1.ActivePageindex=TabIndex then PageControl1.Canvas.Font.Color := clRed else PageControl1.Canvas.Font.Color := clblue;
        PageControl1.Canvas.Font.Style := [fsBold,fsUnderline]
      end;
    PageControl1.Canvas.Textout(rect.Left + 2,rect.Top + 2,PageControl1.Pages[Tabindex].Caption)

end

Danke Bummi :)
Schöne Grüße aus -1° Nürnberg (06:32),
Manfred


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:45 Uhr.
Seite 1 von 2  1 2      

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