Eigentlich reicht ein simples
Delphi-Quellcode:
// ... Whatever here
RoundRect1.Fill.Color := TAlphaColorrec.gray;
aus, um die Farbe des Roundrect auf Grau zu setzen.
Davon abgsehen ist es gar keine gute Idee - weder unter Windows
VCL, noch unter FMX - direkte Zeichenaktionen auf Canvas von Objekten im Klick-Event zu machen.
Dafür sind die Onpaint-Events da, da sollen sich die Objekte selber neu zeichnen. Falls man da was spezielles zeichnen will, kann man das da aber auch tun, aber eben nur da. Alles andere macht auch keinen Sinn, da Zeichenausgaben auf dem Canvas nur flüchtig sind. Wenn Du in einem Button-Event auf dem Canvas des Controls malst, reicht es schon, ein anderes Formular über das Control zu ziehen, schon sind Deine Malaktionen verloren. Oder das Form erhält aus irgendeinem Grund den Auftrag sich neu zu zeichnen, auch da gehen Deine Zeichnungen aus dem OnClick-Event verloren.
Ansonsten würde ich nur die Objekte wie gewünscht verändern und dann einfach nur das Objekt sich neu zeichnen lassen.
Manchmal kriegt man das nur mit Control.beginupdate; Control.endupdate; hin (wobeil Control hier steht z.B. für Stringgrid, Troundrecht, was auch immer).