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
width / height im Constructor abfragen
-
- Beiträge: 39
- Registriert: Mi 6. Jan 2016, 21:45
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1639
- 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
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.
[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.
-
- Beiträge: 39
- Registriert: Mi 6. Jan 2016, 21:45
Re: width / height im Constructor abfragen
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
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