In OnPaint/OnPainting einfach Canvas.Brush.Color zuzuweisen geht auch nicht, so wie man es vielerorts aus der
VCL kannte.
Find ich zwar auch ein bissl umständlich und blöd, aber so isses nunmal.
Auch hierzu muss man ergänzen, dass es zwar nicht über Canvas.brush.color geht, aber eben z.B. so:
Delphi-Quellcode:
procedure TForm14.Panel1Paint(Sender: TObject; Canvas: TCanvas;
const ARect: TRectF);
begin
canvas.BeginScene;
canvas.Fill.Kind := TBrushKind.bkSolid;
Canvas.Clearrect (Arect, TAlphaColorRec.Yellow);
canvas.EndScene;
end;
Das zeichnet das Panel in Gelb, egal was man für einen Stil zugewiesen hat. Allerdings muss man dann auch alles andere, was sich im Panel befindet, selber zeichnen, für das TPanel dann vielleicht nicht so sinnvoll. Aber hilfreich zu wissen, wenn man z.B. in einem Listbox-Item eine andere Hintergrundfarbe benötigt, oder gleich mehrere unterschiedliche Hintergrundfarben innerhalb des gleichen ListBoxItems.
Generell ist es möglich, mit dem FMX-Canvas wie zu
VCL-Zeiten zu arbeiten. Wo FMX gewisse Einschränkungen hat, zeichne ich das eine oder andere eben selber über den Canvas (z.B. bei mehreren TString-Columns in einem StringGrid, die unterschiedliche Ausrichtungen haben (also Links,- rechtsbündig oder zentriert)).
Insgesamt finde ich es aber als Erleichterung, das nicht mehr tun zu müssen (über den Canvas arbeiten). Unter der
VCL habe ich fast alle Grids oder Listboxen per Ownerdraw gezeichnet, unter FMX benötige ich das fast nicht mehr.