TCustomLabel.DoMeasureTextPosition existiert nicht mehr ?

Rund um die LCL und andere Komponenten
Antworten
siro
Beiträge: 731
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

TCustomLabel.DoMeasureTextPosition existiert nicht mehr ?

Beitrag von siro »

Hallo zusammen,
ich habe soeben eine neue Lazarus Version installiert

Version: 2.2.0
Datum: 2022-01-02
FPC-Version:3.2.2
Revision: lazarus_2_2_0
x86_64-win64-win32/win64

Nun wollte ich mein Package installieren.
Habe dort einen Abkömmling von TCustomLabel

Beim Compilieren bekomme ich jedoch eine Fehlermeldung.

LAZ_RotateLabel.pas(17,17) Error: There is no method in an ancestor class to be overridden: "DoMeasureTextPosition(var LongInt;var LongInt);"

Erstaunlicherweise gibt es diese Methode auch garnicht bei TCustomLabel in der Unit StdCtrls.
Ich hatte die aber überschrieben:

Code: Alles auswählen

uses
  Classes,
  Graphics,
  StdCtrls;

Type TRotateLabel = class(TCustomLabel)
    protected
      procedure CalculatePreferredSize(var PreferredWidth, PreferredHeight: integer;
        WithThemeSpace: Boolean); override;
      procedure DoMeasureTextPosition(var TextTop, TextLeft: integer); override;
    public
      procedure Paint; override;
    published
      property Font;
      property Caption;
      property AutoSize;
      property ParentFont;
      property Color;
      property Transparent;
  end;                             
wp_xyz hatte mir damals sehr geholfen beim paint wegen dem Clipping, das war im April 2017.
Er meinte ist soll CalculatePreferredSize und DoMeasureTextPosition überschreiben.
Verweis auf den Thread:
viewtopic.php?f=12&t=10673&p=94196&hili ... ion#p94196

Hat sich da jetzt etwas geändert bei TCustomLabel ?

für Informationen bin euch schonmal dankbar.

Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

wennerer
Beiträge: 515
Registriert: Di 19. Mai 2015, 20:05
OS, Lazarus, FPC: Linux Mint 20 Cinnamon,Lazarus 2.2.6 (rev lazarus_2_2_6) FPC 3.2.2 x86_64-linux-
CPU-Target: x86_64-linux-gtk2

Re: TCustomLabel.DoMeasureTextPosition existiert nicht mehr ?

Beitrag von wennerer »

Hallo Siro,
im Internationalen Forum gibt es diese Diskussion:
https://forum-lazarus-freepascal-org.tr ... _tr_pto=sc
Vielleicht nützt dir das was?

Viele Grüße
Bernd

siro
Beiträge: 731
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: TCustomLabel.DoMeasureTextPosition existiert nicht mehr ?

Beitrag von siro »

Ich danke Dir Bernd,
ich lese mir das grade durch, da wurde wohl tatsächlich etwas "rausgeschmissen" :shock:

Ich hab aber grad noch VIELE weitere Probleme beim Compilieren von Lazarus, ich werde jetzt Lazarus nochmal komplett entfernen müssen.
Die Fehlerfenster nehmen grad kein Ende.... :cry: dies Fenster häufen sich grade....
Upps_01.jpg
Upps_01.jpg (23.85 KiB) 879 mal betrachtet
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

wp_xyz
Beiträge: 4885
Registriert: Fr 8. Apr 2011, 09:01

Re: TCustomLabel.DoMeasureTextPosition existiert nicht mehr ?

Beitrag von wp_xyz »

Hast du die Version 2.2.0 über die alte installiert? Dann mach mal "Tools" > "Configure Build Lazarus" > in der Box "Clean up" "Clean all" und "Switch after building to automatically" markieren > "Build".

Zu dem DoMeasureTextPosition-Problem: Ich kann mich nicht mehr erinnern, was Ondrej, der Verursacher der Löschung, mir geschrieben hat, warum das so nötig war und warum die alte Methode nicht übergangsweise wiederhergestellt werden kann. Allerdings habe ich die Möglichkeit, den Labeltext zu drehen nach der damaligen Diskussion direkt in TLabel eingebaut - zumindest kann ich in Laz 2.2.0 Label.Font.Orientation=300 setzen und der Text ist um 30° gedreht.

Ich denke es führt kein Weg daran vorbei, dass du dir deine Komponente genau ansiehst und auf die aktuelle Version anpasst. Ich würde den Code, der mit der Drehung zu tun hat, in ein {$IF Laz_FullVersion < 2020000}...{$ENDIF} setzen, so dass er in Laz 2.2.0+ nicht mehr verwendet wird. (Laz_FullVersion benötigt die Unit LazVersion).
Zuletzt geändert von wp_xyz am Sa 12. Mär 2022, 21:51, insgesamt 1-mal geändert.

siro
Beiträge: 731
Registriert: Di 23. Aug 2016, 14:25
OS, Lazarus, FPC: Windows 11
CPU-Target: 64Bit
Wohnort: Berlin

Re: TCustomLabel.DoMeasureTextPosition existiert nicht mehr ?

Beitrag von siro »

Zunächst einmal wieder vielen Dank für eure Informationen.

Genau richtig erkannt, ich hatte eine Doppelinstallation. :P
Nach "gründlichem" Aufräumen meines Rechners, habe ich nun diese Probleme beseitigt...
Nun läuft es wieder richtig und ich kann Lazarus auch wieder Compilieren.
Bis auf meine RotatedLabel Komponente konnte ich auch mein Package wieder installieren.

Und nun die Überraschung:
Wie ich grad ausprobiere , hat wp_xyz dem Label die Rotation schon beigebracht. :shock:
Beim Font.Orientation kann man den Winkel in Zehntel Grad Schritten einstellen
SUPI: Damit benötige ich meine Komponente dafür garnicht mehr.
Ich bin begeistert.

Vielen, vielen Dank für die Erweiterung wp_xyz

Siro
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Antworten