Einzelnen Beitrag anzeigen

Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.477 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Verständnisprobleme mit FMX

  Alt 6. Mai 2015, 22:20
OK.

TText ist direkt von TControl abgeleitet und hat als Komponente keine (veröffentlichte) Hintergrundeigenschaft, insofern kannst Du da nirgendwo etwas zur Desingn-Time oder Runtime einstellen. Insofern bietet es sich an, hier das Onpaint-Event zu nehmen, dann kannst Du die Komponente selber und abweichend von dem verwendeten Style zeichnen (was Du ja wolltest, wenn ich Dich richtig verstanden habe):

Delphi-Quellcode:
procedure TForm10.Text1Paint(Sender: TObject; Canvas: TCanvas;
  const ARect: TRectF);
begin
  canvas.BeginScene;
  canvas.Fill.Color := TAlphaColorRec.Yellow;
  canvas.FillRect(Arect, 1,1, AllCorners,1);
  canvas.Fill.Color := TAlphaColorRec.Black;
  canvas.FillText (ARect, TText (Sender).Text, True, 1, [], TTextAlign.Center, TTextAlign.Center);
  canvas.EndScene;
end;
Aber bei FireMonkey gilt der Spruch "Viele Wege führen nach Rom" ganz besonders. Hier sind meistens mehrere Varianten an Lösungen möglich.

So könnte man auch das TText-Element in ein TRectangle packen und dann die Hintergrundfarbe des Rectangles zur Laufzeit (bzw. auch vorher schon zur Designzeit) manipulieren:

Delphi-Quellcode:
procedure TForm10.FormCreate(Sender: TObject);
begin
  Rectangle1.Fill.Color := TAlphaColorRec.Lime;
  Rectangle1.Fill.Kind := TBrushKind.solid;
end;
In den anliegenden Screenshots siehst Du zur Designzeit oben nur die TText-Komponente, unten eine TText-Komponente in einem TRectangle. Zur Laufzeit haben beide eine andere Farbe, auf unterschiedlichen Wegen gelöst.

[Edit: Noch ein Hinweis: Wenn man den Rahmen von TRectangle nicht haben will, muss man unter Stroke,Thickness den Wert von 1 auf 0 setzen.]
Miniaturansicht angehängter Grafiken
ttextdesign.jpg   ttextruntime.jpg  

Geändert von Harry Stahl ( 6. Mai 2015 um 22:28 Uhr)
  Mit Zitat antworten Zitat