Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#1

[FMX] Edit färben

  Alt 18. Apr 2018, 14:26
Huhu DP.

FMX, oder genauer gesagt die Styles, machen mich eines Tages noch malle im Kopp. Ich portiere gerade eine unserer Anwendungen von D2007 auf 10.2.3 mit FMX. In unserem Programm wird über die Farbe des Hintergrundes von Edits eine Menge an Infos an die User gegeben. (Spezialanwendung für geschultes Fachpersonal, bitte keine Diskussion über "...aber Standard!!".)

Das tolle am FMX.TEdit: Es hat gar keine Color-Property mehr! Also bin ich auf die Suche gegangen, und habe den folgenden Schnipsel aufgetrieben:
Delphi-Quellcode:
procedure SetEditColor(AEditControl: TCustomEdit; AColor: TAlphaColor);
var
  T: TFmxObject;
begin
  if Assigned(AEditControl) then
  begin
    T := AEditControl.FindStyleResource('background');
    if Assigned(T) and (T is TRectangle) then
       if Assigned(TRectangle(T).Fill) then
          TRectangle(T).Fill.Color := AColor;
    AEditControl.Repaint;
  end;
end;
"Geil!", dachte ich mir, Problem gelöst! Zwar sehe ich dann beim Editieren des Formulars manche Farben nicht mehr, aber sei's drum.

Dann aber habe ich das mal ausführen lassen, und musste feststellen, dass da nichts geändert wurde. Kurzes Debuggen: FindStyleResource() kommt mit nil zurück. Mal den Style eines Edits im StyleEditor aufgerufen, und siehe da: Es GIBT eine Ressource mit dem Namen "background". Warum wird diese dann nicht gefunden?

Aber es kommt noch schlimmer. Die o.g. Prozedur ist offenbar für ein älteres Delphi geschrieben. Für eines, wo TEdit noch mit einem TRectangle gestyled wurde. In 10.2.3 aber ist der Typ des "background"-Objektes "TActiveStyleObject", und darin wird auf ein Bitmap verwiesen!
Ja wie bescheuert ist DAS denn!? Da hat man ein tolles vektorbasiertes GUI Framework, und holt sich durch die Hintertür wieder klobige Rasterbilder ins Boot? Wer kam auf den Quark? Und NOCH viel schlimmer ist: Wie soll man den JETZT bitte noch die Farbe ändern? Soll ich nun für alle meine ~8 Farben einen eigenen Style machen (mit einem völlig unterentwickelten Style-Designer)? Bevor ich mich mit dem Kram nochmals herum ärgere, schreibe ich mir fast lieber meine eigene Edit-Komponente...

Aber lieber wäre es mir ja, wenn jemand hier noch einen guten Rat für mich hätte, wie es ggf. doch geht. Vor allem weil ich sehr gerne auch die TNumberBox für rein numerische Eingaben in ähnlicher Weise behandeln möchte.

Oder gibt es ggf. für günstig Edits die solche Funktionalität auch bieten und ... deren Farbe man gnädigerweise ändern darf?
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat