![]() |
AW: FMX auf Stand Version 0.5 ???
Zitat:
Auf die Schnelle kann man das wie folgt fixen (wobei ich nicht garantierte, dass dies alle Eventualitäten abdeckt, bei ersten Tests sah es aber recht gut aus): Die Unit FMX.StdCtrls.pas aus dem Delphi-Verzeichnis, speichert man als Kopie in dem Ordner seines Projektes ab. Dann editiert man die Fitsize-Procedure wie folgt:
Delphi-Quellcode:
Vorteil dieser Lösung ist, dass man, wenn der Fehler von EMBA gefixt wurde, einfach wieder die Kopie der FMX.StdCtrls.pas aus dem Projektverzeichnis löscht (sollte man dann aber auch nicht vergesssen), man braucht an seinem Source-Code dann weiter nichts zu ändern.
procedure TLabel.FitSize;
var Size: TSizeF; Rect: TRectF; begin if not FInFitSize and (not (Align in [TAlignLayout.Client, TAlignLayout.Contents])) then begin FInFitSize := True; try Size.cx := canvas.TextWidth(Text); // neu size.cy := canvas.TextHeight(Text); // neu //if CalcTextObjectSize(Width, Size) then if size.cx > 0 then //neu begin FNeedFitSize := False; Rect.TopLeft := Position.Point; if not (Align in [TAlignLayout.Top, TAlignLayout.Bottom, TAlignLayout.MostTop, TAlignLayout.MostBottom, TAlignLayout.VertCenter]) then if Text = '' then Rect.Width := 0 else Rect.Width := Size.cx else Rect.Width := Width; if not (Align in [TAlignLayout.Left, TAlignLayout.Right, TAlignLayout.MostLeft, TAlignLayout.MostRight, TAlignLayout.HorzCenter]) then Rect.Height := Size.cy else Rect.Height := Height; BoundsRect := Rect; end else FNeedFitSize := True; finally FInFitSize := False; end; end; end; |
AW: FMX auf Stand Version 0.5 ???
Zitat:
Hintergrund ist, dass man so für alle Versionen, in denen der Fehler vorhanden ist, eine entsprechende Lösung einbinden kann, alle neueren aber durch den absichtlichen Fehler prüfen muss. Dann kann man das auch nicht vergessen. Zitat:
Denn so etwas gibt es bei der VCL bzw. generell Windows Controls ja (leider) nicht. |
AW: FMX auf Stand Version 0.5 ???
Die Datei auch im Delphi belassen und einfach nur patchen.
TLabel ableiten und die Änderungen einbauen. Natürlich lässt sich FitSize nicht überbreiben (kein override möglich), aber man kann dennoch ein eigenes FitSize implementeiren und muß dann nur noch ApplyStyle, DoChanged und Resize überschreiben, mit den Aufrufen der eigenen FitSize-Implementation. Nur beim SetAutoSize müsste man aufpassen, aber diese Stelle lässt sich mit dem überschreiben des Property AutoSize etwas einschränken. (neuer Setter) Oder man patcht in den Funktionsstart einen JUMP zur eigenen FitSize-Implementation. :stupid: |
AW: FMX auf Stand Version 0.5 ???
Zitat:
|
AW: FMX auf Stand Version 0.5 ???
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:23 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