![]() |
AW: [FMX] Edit färben
Zitat:
Sherlock |
AW: [FMX] Edit färben
Was spricht gegen Custom Style?
|
AW: [FMX] Edit färben
Was spricht gegen einen Farbeffekt den man an- und ausmacht? Ist eine Zeile, ist verständlich und funktioniert auch (hoffentlich) in kommenden Versionen noch. 8-)
|
AW: [FMX] Edit färben
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
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:
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.
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; 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. |
AW: [FMX] Edit färben
Ich verstehe nur nicht was daran so schwer ist, die Farbproperty z.B. crNone crDefault einzurichten und wenn das abweicht (dort etwas angegeben wurde), dann nimmt der Style diese Frabe, anstatt seiner eigenen.
Diese "umständlichen" und extrem unintuitiven Krücken können doch nicht wahr sein und vor allmem, wozu gibt es dann überhaupt diese Property, wenn die niemand beachtet? PS: Und jetzt mal versuchen mit "nativen" Komponenten zu arbeiten, anstatt mit diesem selbstgemalten Zeug und seinen "schrottigen" Styles. |
AW: [FMX] Edit färben
Zitat:
|
AW: [FMX] Edit färben
Mein Vorschlag ist doch einfach? Das was schon ständig alle suchen, also dass die vorhandenen Property für Color und Co. vom Style verwendet werden.
Alternativ einfach diese Property löschen und keiner fragt sich mehr, warum die nichts machen. :roll: Hatte damals auch erstmal ewig suchen müssen, bis ich rausfand, wie man beim Panel den Border entfernt. (so wie man es seit Jahrzehnten in der VCL macht) Da wurde man fast überall an die Styles verwiesen und dass man sich einen Eigenen bauen soll. (gut, mit TLayout ging es dann gleich einfacher) |
AW: [FMX] Edit färben
Der Vorschlag macht sogar Sinn, vor allem wenn man mehr VCL-Entwickler zu FMX holen möchte. FMX hätte von Anfang an eine plattformübergreifende Variante von VCL sein sollen, alle Komponenten mit allen Properties. Stattdessen hat man bei FMX das Rad neu erfunden und dazu noch "im Betrieb" ständig die Spezifikationen geändert. Erst seitdem Delphi Ortsnamen hat, ist das recht stabil geworden. So hat man es sich mit einigen Leuten verscherzt, die jetzt erst langsam wieder kommen.
O'Neill |
AW: [FMX] Edit färben
Ich antworte hier mal auf alle zusammen, jeden einzeln "durchquoten" würde etwas viel :)
Alle Lösungen die zusätzliche Komponenten erfordern (Transparent+Rect, Effekte) scheiden aus weil dadurch meine Datenversorgung ziemlich verkompliziert wird. Ich müsste quasi immer gucken ob ich die Farbe überhaupt setzen will, wenn ja ob es ein passendes Child- und/oder Parent-Objekt gibt, und stattdessen dann dieses nehmen. Geht zwar, würde aber wirklich fummelig im Rahmen meines sonstigen Frameworks und beim Formularbauen sehr unhandlich. (Randfrage: Überstrahlt das Glow dann nicht auch den Text?) Die Lösungen von SO sind ja im Wesentlichen das, was ich schon probiert hatte. Das Problem bei den Styles ist ja, dass mir wie gesagt die Funktion FindStyleResource() mit nil zurück kommt. So kann ich da leider keinem Rectangle etwas zuweisen. Wenn DAS ginge, dann wäre mein Problem auf akzeptable Weise gelöst. (Eine statische Farbe kann ich so zwar machen, aber ich muss sie zur Laufzeit ändern können. Das ist das wichtigste.) Beim OnPaint habe ich das Gefühl, dass mir da viel flöten geht was mir das OS abnimmt. Zum Beispiel wird bei der gezeigten Variante die Markierung überhaupt nicht gezeichnet wenn ich das richtig sehe. Das wäre verdammt nahe am ganz eigenen Edit, und wenn dann würde ich gleich zu letzterem tendieren weil man dann wirklich alles in der Hand hätte. Ich probiere aber mal, wie das ist wenn ich nicht die originale "background"-Komponente im Style austausche, sondern ein Rectangle als Child von "content", wie in einem Beispiel gezeigt. Vielleicht finde ich das dann ja zur Laufzeit... Danke euch! |
AW: [FMX] Edit färben
Zitat:
Wenn ich Deine zuerst versuchte Variante probiere (das ActiveStyleObject durch ein TRectangle ersetze und wieder in background umbenenne) wird bei mir das Object auch mit Deiner Original-Procedure gefunden. Möglicherweise liegt daher das Problem auch an anderer Stelle, die hier evtl. mit Deiner konkreten Implementation zu tun haben könnte. Davon abgesehen kann man dann zwar so die Farbe ändern, aber man sieht den Text nicht und hat kein Cursor-Blinken mehr. Also ist der Weg mit dem Rectangle im Content eingefügt, der bessere Weg. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:29 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