![]() |
Hintergrundfarbe von TMemo zur Laufzeit setzen, geschafft.
Hallo Zusammen,
in vielen Beispielen im Internet wird gezeigt wie die Hintergrundfarbe eines TButton oder TEdit gesetzt wird. Beide sollen ein TRectangle haben welche eingefärbt werden kann. Doch das TMemo hat eben kein TRectangle das direkt eingefärbt werden kann. Im Internet habe ich ein Stück Code gefunden wie dieses verdammte TRectangle erzeugt werden kann. Den Code habe ich erweitert um die die Farbe zur Laufzeit zu setzen in Abhängigkeit zu den Daten. Welche ein Aufwand um nur die Hintergrundfarbe zu setzen. Wenn jemand einen besseren Weg kennt, bitte gerne.
Delphi-Quellcode:
procedure TfrMain.NachrichtApplyStyleLookup(Sender: TObject);
var Obj: TFmxObject; Rectangle1: TRectangle; i:integer; aColor:TAlphaColor; begin inherited; //Grün wenn es eine neuen Nachricht ist, ansonsten weiß if dm1.FDNachrichtigen.FieldByName('status').AsInteger = 0 then aColor := claGreen else aColor := claWhite; Obj := Nachricht.FindStyleResource('background'); if Obj <> nil then begin //suche das bgColorRect wenn es gefunden wurde, Farbe ändern for i := 0 to Obj.ChildrenCount-1 do begin if ((Obj.Children[i].ClassType = TRectangle) and (Obj.Children[i].Name = 'bgColorRect'))then begin TRectangle(Obj.Children[i]).Fill.Color := aColor; exit; end; end; //Kein TRectangle vorhanden, neues anlegen TControl(Obj).Margins := TBounds.Create(TRectF.Create(-2, -2, -2, -2)); Rectangle1 := TRectangle.Create(Obj); Rectangle1.Name := 'bgColorRect'; Obj.AddObject(Rectangle1); Rectangle1.Align := TAlignLayout.Client; Rectangle1.Fill.Color := aColor; Rectangle1.Stroke.Color := claNull; Rectangle1.HitTest := False; Rectangle1.SendToBack; end; end; Gruß Kostas |
AW: Hintergrundfarbe von TMemo zur Laufzeit setzen, geschafft.
Liste der Anhänge anzeigen (Anzahl: 1)
Wenn ich das richtig sehe wird ein TMemo (zumindest unter 10 Seattle) aus Bitmaps zusammengeflickt.
Ich persönlich würde einfach ein halbdurchsichtiges
Delphi-Quellcode:
nehmen, in das Memo packen und
TRectangle
Delphi-Quellcode:
setzen
HitTest = False
|
AW: Hintergrundfarbe von TMemo zur Laufzeit setzen, geschafft.
Liste der Anhänge anzeigen (Anzahl: 1)
Hmmm.... also in XE5 gibt's TMemo.Color !??! :?:
Gibt's das im 10er etwa nicht mehr?? |
AW: Hintergrundfarbe von TMemo zur Laufzeit setzen, geschafft.
Wir sind in der Abteilung "Cross-Platform-Entwicklung", also keine VCL sondern FMX ;-)
|
AW: Hintergrundfarbe von TMemo zur Laufzeit setzen, geschafft.
Huch... Sorry, hattte ich übersehen :roll:
|
AW: Hintergrundfarbe von TMemo zur Laufzeit setzen, geschafft.
Hallo Zusammen,
es gibt natürlich auch die Möglichkeit ein StyleBook auf die Form zu platzieren und zwei separate Styles zu definieren und dann per code die Styles zu wechseln. Es mir leider nicht gelungen über den custom Styldesigner vom TMemo die Hintergrundfarbe zu ändern. Der Designer zeigt eine Menge Objekte an die zu dem TMemo gehören. Die kann man auch verschieben, das dann passiert habe ich nicht ausprobiert. Wahrscheinlich ist das gesamte Control danach beim Teufel. Es gibt rechts oben zwei Quadrate mit der Farbe Schwarz und Weiß. Do wie die Farbe gesetzt werden kann, habe ich nicht gefunden, auch nicht im Objektinspektor. Irgend wie steige ich da nicht durch. Der Vorschlag vom Günther ist auch gut. Irgend wie ist das alles nicht zufriedenstellend. Jetzt gibt es FMX doch schon ziemlich lange. Eigentlich sollte es doch schön langsam anwendungsfreundlicher sein finde ich. Gruß Kostas |
AW: Hintergrundfarbe von TMemo zur Laufzeit setzen, geschafft.
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:13 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