width / height im Constructor abfragen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
lazarusjulian
Beiträge: 39
Registriert: Mi 6. Jan 2016, 21:45

width / height im Constructor abfragen

Beitrag von lazarusjulian »

Hallo,

beim Erstellen von eigenen Komponenten ist mir aufgefallen,
dass im Constructor nicht die korrekte Größe der Komponente abgefragt werden kann.
Entweder ist sie 0, oder man definiert selbst einen Wert.

Wie aber bekomme ich die Höhe und Breite, welche der Komponente über den Objektinspektor zugewiesen wurden?
Der Hintergrund ist, dass ich in einer abgeleiteten Paintbox z.B. am rechten Rand etwas zeichnen möchte.
Das gestaltet sich aber schwierig, wenn man überhaupt nicht weiß wie breit die Komponente ist!

Wie komme ich im Constructor an die Breite und Höhe? Oder sind diese Werte erst nach dem Durchlauf des Constructors verfügbar?

cheers,
Julian

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1435
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: width / height im Constructor abfragen

Beitrag von fliegermichl »

Für Klassen die von TControl abgeleitet werden, kann man die virtuelle Methode class function GetControlClassDefaultSize überschreiben bzw. aufrufen, um die Größe zu erfahren.

[Nachtrag]
Ich hatte überlesen, daß du die Werte wissen willst, die im Objektinspektor eingetragen wurde. Hier ist der Constructor zu früh. Du kannst aber die virtuelle Methode Loaded überschreiben. Die wird nämlich genau dann aufgerufen, wenn das Objekt aus den Resourcen geladen wurde. GetControlClassDefaultSize gibt die Standardgröße zurück, wenn das Control per Code erzeugt wird.

lazarusjulian
Beiträge: 39
Registriert: Mi 6. Jan 2016, 21:45

Re: width / height im Constructor abfragen

Beitrag von lazarusjulian »

Dankeschön!

Ich habe nun die Prozedur Resize überschrieben, eigentlich naheliegend da das Element ja auch neugezeichnet werden muss bei Änderung der Größe. Mir war nur nicht klar, dass resize auch ohne "tatächliche größenänderung" bei der erstellung der komponente aufgerufen wird. daher Ideal um hier height und width abzufragen.

LG Julian

Antworten