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.
Hinweis und Zusatzfrage:
Man kann ja auch mit
FindStyleResource('...')
sich ein (Fmx-)Objekt aus dem Style holen und dann dort Farbe etc. setzen - funktioniert auch soweit. Bei TPanel ist es allerdings so, dass der Style nur aus einem TRectangle besteht und obige Funktion findet dieses Objekt (panelstyle) nicht, da es scheinbar nur in Unterobjekten sucht. An den Panelstyle (oberstes Objekt) kommt man zwar auch mittels
TStyledControl.FResourceLink
heran, aber da dieses protected ist, muss man sich eine Klasse ableiten, die dies veröffentlicht und dann einen harten Typecast machen. Funktioniert; aber ist das so gewollt oder gibt es eine andere/bessere Möglichkeit?