Ja, so würde ich es auch machen.
Wenn Du dann dem in den Style eingefügten Rectangle den Stylenamen "RectangleStyleColor" gibst und zur Designzeit den jeweiligen Edits, die eine andere Hintergundfarbe benötigen, den entsprechenden StyleLookup für den Editstyle zugewiesen hast (z.B. "EditStyleColor"), kannst Du dem Retangle zur Laufzeit die benötigte Farbe zuweisen, mit Deiner Procedure von Nr. 1, nur etwas angepasst:
Delphi-Quellcode:
procedure SetEditColor(AEditControl: TCustomEdit; AColor: TAlphaColor);
var
T: TFmxObject;
begin
if Assigned(AEditControl) then
begin
T := AEditControl.FindStyleResource('RectangleStyleColor');
if Assigned(T) and (T is TRectangle) then
if Assigned(TRectangle(T).Fill) then
TRectangle(T).Fill.Color := AColor;
AEditControl.Repaint;
end;
end;
Zur besseren Verständlichkeit ein kleines Demo anliegend (siehe auch screenshot), wo man zur Laufzeit dem aktiven Editfeld eine gewünschte Farbe zuweisen kann oder über die ausgewählte Farbe des Colorpickers.
Es sind natürlich auch noch andere Varianten möglich:
Den angelegten Style mehrfach kopieren und die Rectangels direkt mit den gewünschten Farben versehen. So kann man bereits zur Designzeit bestimmte Felder farblich gestalten. Zur Laufzeit könntest Du dann direkt mit dem StyleLookup-Property den gewünschten Style, bzw. Farbe zuweisen.