ab wann ist ein Canvas gültig

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

ab wann ist ein Canvas gültig

Beitrag von siro »

Hallo,
ich habe ein grafische Komponente geschrieben. automatische, vertikale Skalierung für Kurven.
Nun möchte ich, das sie sich automatisch der Textbreite anpasst, denn die Textbreite ändert sich zu Laufzeit, je nach Skalierung
Dazu muss ich auf "canvas.TextWidth" zugreifen.
Ab wann kann ich das tun ? bzw. ab wann ist der Canvas gültig.
Meine "unwissende" Vermutung ist, dass der canvas erst gültig wird in der OnPaint Procedure und da darf ich mit Sicherheit aber keine Breitenänderung der Komponente mehr vornehmen.
Ich habe eine Methode SetScale, da stelle ich die neue Skalierung meiner Komponente ein.
Hier werden lediglich die neuen Werte übernommen, welche später zum Zeichnen der Skalierung benötigt werden.
Darf ich hier schon auf Canvas.TextWidth zugreifen ?

Da TLabel auch eine Eigenschaft AutoSize hat, wollte ich das mal erforschen:
TLabel ist implementiert in StdCtrls.
TLabel = class(TCustomLabel)
TcustomLabel ist ebenfalls in StdCtrls
abgeleitet von TGraphicControl
TGraphicControl ist definiert in Controls.
TGraphicControl ist abgeleitet von TControl
und hat als erste Klasse einen canvas
TCanvas ist in Graphics abgeleitet von TFPCustomCanvas
der wiederum in FPCanvas und abgeleitet von TPersistent
läd FPCanvas.inc

Wo die Methode AutoSize implementiert ist, habe ich bisher nicht gefunden....

Ihr könnt mir da sicher weiter helfen.
Entscheiden ist für mich, ab wann darf ich auf Canvas zugreifen ?

Hier mal paar Bildchen:
Dateianhänge
Scale_01.jpg
Scale_01.jpg (6.28 KiB) 988 mal betrachtet
Scale_02.jpg
Grüße von Siro
Bevor ich "C" ertragen muß, nehm ich lieber Lazarus...

Antworten