![]() |
FMX Button Farbe zur Laufzeit ändern
Jetzt google ich mal wieder lang genug blöd rum, um eine Antwort auf eine eigentlich einfache Frage zu finden.
Ich habe 10 Reihen mit je 3 Buttons, die sind beschriftet, und ich möchte zur Laufzeit eine der Button-Reihen einfärben (wechselnd). Die Beschriftung kann sich auch dynamisch zur Laufzeit ändern. Die Möglichkeit, die ich gefunden habe, ist, einen Custom Style zu definieren, ein Rechtangle hinein (Hit-Test false!), und dann die property Style-Lookup zu ändern. Aber der Umgang mit diesen Styles ist imho auch etwas schwergängig und bescheiden dokumentiert. Ich würde meine Style dann ja gerne einen Namen ala 'Greenbuttonstyle' geben, aber sobald ich den Style umbenenne, steht er mir im Button nicht mehr zur Auswahl. Der Style muss daher Button1Style1 oder ähnlich bescheiden lauten. Wo gibts denn für den ganzen Krempel ein paar brauchbare Anleitungen? |
AW: FMX Button Farbe zur Laufzeit ändern
Liste der Anhänge anzeigen (Anzahl: 1)
Du musst den Stylenamen im Stildesigner selber (Eigenschaft "StyleName") umbenennen, dann geht es (siehe anlg. Screenshot). Zur Laufzeit (oder auch designzeit) kannst Du dann beliebigen Buttons den Style zuweisen...
|
AW: FMX Button Farbe zur Laufzeit ändern
Zitat:
Nun kannst Du die Eigenschaften Fill und Stroke des Rectangle direkt ändern. |
AW: FMX Button Farbe zur Laufzeit ändern
Falls Du etwas wie eine Vorlage für Deine Buttons verwenden möchtest geht das leicht mit Clone()
rec := TRectangle( Rectangle1.Clone(Button1) ); rec.Parent := Button1; rec.Align := TAlignLayout.Client; Clone kopiert auch die Kinder des Objektes sodass Du dort z.b. auch ein TText objekt unterbringen kannst. Das ganze funktioniert dann ähnlich wie ein Stil, allerdings ohne die Suche über StyleLookup und Stylename. |
AW: FMX Button Farbe zur Laufzeit ändern
Ich leite TButton ab und überschreibe "Paint".
Delphi-Quellcode:
type
TMyButton = class(TButton) ... protected procedure Paint; override; ... procedure TMyButton.Paint; var iSave : TCanvasSaveState; begin { Ererbte Eigenschaften } inherited Paint; { Einstellungen speichern } iSave := Canvas.SaveState; { Ausgaben deaktivieren } Canvas.BeginScene; { Eigener Hintergrund } Canvas.Fill.Kind := TBrushKind.Solid; Canvas.Fill.Color := TAlphaColorRec.Blue; Canvas.FillRect(LocalRect,0,0,[],1); { Ausgaben aktivieren } Canvas.EndScene; { Zurücksetzen } Canvas.RestoreState(iSave); end; |
AW: FMX Button Farbe zur Laufzeit ändern
Zitat:
In einem testweise zusammengeklickten Formular geht es. Das hatte mich natürlich zusätzlich verwirrt. |
AW: FMX Button Farbe zur Laufzeit ändern
Kannst du mal in quality.embarcadero.com nachschauen, ob dieser Fehler dort schon
erfasst wurde und falls nicht den mal bitte erfassen? Bitte dann die Report Nummer hier posten. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:31 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz