AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

FMX Button Farbe zur Laufzeit ändern

Ein Thema von Rainer Wolff · begonnen am 12. Mai 2020 · letzter Beitrag vom 15. Mai 2020
Antwort Antwort
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
318 Beiträge
 
Delphi 10.4 Sydney
 
#1

FMX Button Farbe zur Laufzeit ändern

  Alt 12. Mai 2020, 20:59
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?
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

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

AW: FMX Button Farbe zur Laufzeit ändern

  Alt 13. Mai 2020, 00:05
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...
Miniaturansicht angehängter Grafiken
stildesigner.jpg  
  Mit Zitat antworten Zitat
jziersch

Registriert seit: 9. Okt 2003
Ort: München
240 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: FMX Button Farbe zur Laufzeit ändern

  Alt 13. Mai 2020, 08:48
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.
Erstelle einfach ein TRectangle. Ziehe dieses in der strukturierten Übersicht in den Button sodass es ein Kind davon wird. Schalte seine property Align auf Client oder Content und HitTest auf false, sodass der Parent immer noch die events bekommt.
Nun kannst Du die Eigenschaften Fill und Stroke des Rectangle direkt ändern.
WPCubed GmbH
Komponenten für Delphi:
WPTools, wPDF, WPViewPDF
  Mit Zitat antworten Zitat
jziersch

Registriert seit: 9. Okt 2003
Ort: München
240 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: FMX Button Farbe zur Laufzeit ändern

  Alt 13. Mai 2020, 09:20
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.
WPCubed GmbH
Komponenten für Delphi:
WPTools, wPDF, WPViewPDF
  Mit Zitat antworten Zitat
Thomas Horstmann

Registriert seit: 25. Apr 2007
86 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: FMX Button Farbe zur Laufzeit ändern

  Alt 13. Mai 2020, 15:37
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;
  Mit Zitat antworten Zitat
Rainer Wolff

Registriert seit: 25. Okt 2005
Ort: Bretten
318 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: FMX Button Farbe zur Laufzeit ändern

  Alt 14. Mai 2020, 12:41
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...
Darüber habe ich es jetzt auch gemacht, für Verwirrung hat aber gesorgt, dass speziell in dem Formular, in dem ich das brauche, ein IDE-Fehler reinspuckt. Wenn ich hier meinen Style umbenenne, ist er danach im Objektinspector nicht im Dropdown wählbar. Nur von Hand komplett austippen hilft (Vervollständigung geht wg. fehlender Dropdownliste auch nicht).

In einem testweise zusammengeklickten Formular geht es.

Das hatte mich natürlich zusätzlich verwirrt.
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.827 Beiträge
 
Delphi 12 Athens
 
#7

AW: FMX Button Farbe zur Laufzeit ändern

  Alt 15. Mai 2020, 06:30
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:13 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz