![]() |
Re: TTabControl, XP-Style, OwnerDraw
*push*
|
Re: TTabControl, XP-Style, OwnerDraw
Bleib beim Owner-Draw und benutze für die anderen Tabs die Funktionen aus der Unit Themes. Da gibbet den ThemeManager, der Dir für (fast) jedes zu zeichnende Element die passende XP-Bitmap malt. Auch Texte lassen sich so im XP-Style darstellen.
Muss quasi den ThemeManager frage, ob XP-Themes aktiviert sind. Wenn nein rufst Du inherited, wenn ja, zeichnest Du die XP-Elemente. Kannst ja auch mal in die Quellen von TTabSheet reinschaun, weil bei den VCL-Komponenten malen die Borlands den XP-Style auch selber. |
Re: TTabControl, XP-Style, OwnerDraw
Hmmm, danke!
Ich muss ehrlich sagen, dass ich mit dem Thememanager (und der Themes Unit) noch nie gearbeitet habe. Das hört sich nach viel Arbeit an. Vor allem wenn man bedenkt, dass es hier nur um Eye-Candy geht und nicht um wichtige Funktionalität. Zitat:
Weil zur Zeit habe ich keinen Plan, wie das funktionieren soll... Alles in allem scheint es mir auch etwas viel Aufwand sein, nur für ein wenig Eye-Candy. Ich hoffe allerdings, dass die TPainBox mit XP-Styles funktioniert, denn das brauche ich wirklich... Vielen Dank, Andreas |
Re: TTabControl, XP-Style, OwnerDraw
TPainBox? :lol:
Aber dass die TPaintbox nicht funktioniert, kann ich mir nicht vorstellen, die repräsentiert ja nur ienen Ausschnitt des Form-Canvas. |
Re: TTabControl, XP-Style, OwnerDraw
Nein, nein, bitte nicht missverstehen!
Ich habe nicht behauptet, dass die TPaintBox nicht funktioniert. Allerdings sind mir in Zusammenhang mit den XP-Styles schon die unglaublichsten Sachen passiert... Deshalb hoffe ich, dass es da kein Problem geben wird.... Ansonsten melde ich mich natürlich, Andreas |
Re: TTabControl, XP-Style, OwnerDraw
Zitat:
Hab selbst gedacht ist hölle schwer, aber echt kein Problem! probier mal unter ![]() Gruß oki edit: uuups, wenn du D7 hast, ist das eh schon dabei (hab ich gehört). |
Re: TTabControl, XP-Style, OwnerDraw
Und die Zeichenroutinen beim ThemeManager ähneln stark den normalen, wie z.B.:DrawEdge, nur dass die Parameter verständlicher sind und man nicht so viel zeichnen muss, wie bei den oldscool 3d effekten.
Im Endeffekt ists weniger code. Hier mal ein Bleistift:
Delphi-Quellcode:
Wobei diese Prozedur in eine andere eingebettet ist und oRect ist ne variable der äusseren...
Procedure DrawBtn( _sText: String;
_bDown: Boolean); Var oEleDet: TThemedElementDetails; Begin If ThemeServices.ThemesEnabled //hier mit Themes Then Begin // ab her wird das Element ermittelt If _bDown Then oEleDet:=ThemeServices.GetElementDetails(tbPushButtonPressed) Else Begin If _iIndex=iMouseOver Then oEleDet:=ThemeServices.GetElementDetails(tbPushButtonHot) Else oEleDet:=ThemeServices.GetElementDetails(tbPushButtonNormal); End; //hier ist dann das Zeichnen ThemeServices.DrawElement(Canvas.Handle,oEleDet,oRect); ThemeServices.DrawText(Canvas.Handle,oEleDet, _sText,oRect,DT_CENTER Or DT_VCENTER,0); End Else Begin //Hier ohne If _bDown Then DrawEdge(Canvas.Handle,oRect,BDR_SUNKEN, BF_RECT Or BF_SOFT Or BF_ADJUST Or BF_MIDDLE) Else DrawEdge(Canvas.Handle,oRect,BDR_RAISED, BF_RECT Or BF_SOFT Or BF_ADJUST Or BF_MIDDLE); Canvas.Brush.Color:=clBtnFace; If _iIndex=iMouseOver Then Canvas.Font.Color:=clHighlightText Else Canvas.Font.Color:=clWindowText; DrawText(Canvas.Handle,@_sText[1],1,oRect,DT_CENTER Or DT_VCENTER); End; End; die tbXXX Konstanten findest Du auch in der Unit Themes ... |
Re: TTabControl, XP-Style, OwnerDraw
Danke!
Das werde ich mir mal zu Gemüte führen! Bei Problemen melde ich mich wieder! Vielen Dank, Andreas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:54 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