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 [DevExpress-HowTo] TcxButton mit beliebigem Inhalt (https://www.delphipraxis.net/167110-%5Bdevexpress-howto%5D-tcxbutton-mit-beliebigem-inhalt.html)

neo4a 13. Mär 2012 20:33


[DevExpress-HowTo] TcxButton mit beliebigem Inhalt
 
Um einen geskinnten cxButton mit beliebigen Inhalt (z.B. mehrzeilig mit unterschiedlichen Fonts und Images links und rechts) zu versehen, sind diese Schritte nötig:

Der Text wird in einer eigenen Subklasse mittels einer virtuellen Methode gezeichnet. Durch das Ableiten kann man sie überschreiben:
Delphi-Quellcode:
  TdcButtonGlyph = class(TcxButtonGlyph)
  protected
    procedure DrawButtonText(ACanvas: TCanvas; const ACaption: TCaption;
      ATextBounds: TRect; AState: TcxButtonState; ABiDiFlags: LongInt;
      ANativeStyle: Boolean; AWordWrap: Boolean; ASkinsUsed: Boolean = False); override;
  end;
Ableiten des TcxButtons, um die protected-Methode überschreiben zu können, die den obigen Subklassen-Typ liefert:
Delphi-Quellcode:
  TdcButton = class(TcxButton)
  protected
    function GetGlyphClass: TcxButtonGlyphClass; override;
  end;
In der Implementierung wird der neue Subklassentyp gemeldet:
Delphi-Quellcode:
function TdcButton.GetGlyphClass: TcxButtonGlyphClass;
begin
  Result := TdcButtonGlyph;
end;
Und schließlich wird der gewünschte Inhalt gezeichnet:
Delphi-Quellcode:
procedure TdcButtonGlyph.DrawButtonText(ACanvas: TCanvas;
  const ACaption: TCaption; ATextBounds: TRect; AState: TcxButtonState;
  ABiDiFlags: Integer; ANativeStyle, AWordWrap, ASkinsUsed: Boolean);
begin
  ACanvas.Brush.Style := bsClear;
  ACanvas.TextOut(32, 10, 'Titel: ' + ACaption );
  ACanvas.Font.Color := clGray;
  ACanvas.TextOut(32, 25, 'Beschreibung: ');
end;
HTH.


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