Einzelnen Beitrag anzeigen

Benutzerbild von Jazzman_Marburg
Jazzman_Marburg

Registriert seit: 2. Aug 2004
359 Beiträge
 
#1

[OOP] Ableiten von TImage: Wann hat mein Objekt eine Größe?

  Alt 19. Okt 2010, 18:48
Hallo Gemeinde.

Mein TImage Nachfahre TGraphPaper macht mir Kummer. Das Ding soll einfach sowas wie kariertes Rechenblatt darstellen, wo ich dann später ein Koordinaten-System uä. reichzeichne. Ich leite also von TImage ab:

Code:
TGraphPaper = CLASS(TImage)
Im Konstruktor steht:
Code:
CONSTRUCTOR TGraphPaper.Create(MyParent: TWinControl; Title: STRING);

BEGIN

  INHERITED CREATE(MyParent);
  Parent   := MyParent;
  ...
Mit INHERITED CREATE(MyParent) wird die SetBounds Methode von TImage aufgrufen (INHERITED SetBounds(ALeft, ATop, AWidth, AHeight)-- denn mein GraphPaper soll sich mit dem Resizing seines Parents neuzeichnen - bzw. dessen Größe entsp. anpassen.
Das wird hier erledigt:
Code:
PROCEDURE TGraphPaper.SetBounds(ALeft, ATop, AWidth, AHeight: INTEGER);
BEGIN

  INHERITED SetBounds(ALeft, ATop, AWidth, AHeight);

  Zeichnen;
  ...
Jetzt zum eigentlichem Problem:
In der Methode Zeichnen greife ich auf WIDTH und HEIGHT zu, um die Anzahl der Rechenkästchen zu bestimmen, die gezeichnet werden sollen. Dort knallt es aber, da eine Division durch Null erfolgt, weil: WIDTH und HEIGHT zu diesem Zeitpunkt (Create) den Wert Null haben. Klar die Zeile Parent := MyParent; kommt ja auch erst später (ich frage mich gerade: Bekommt es an dieser Stelle, die Größe seines Parents ).
Aber wie kann ich denn meinem Objekt nun initial eine Größe zuweisen, bevor das SetBounds gerufen wird?

Ich hoffe ich konnte mich halbwegs verständlich machen.
Vielleicht hat jemand ja eine Idee?

Lieben Dank
Gruß, Jazzman
--- Delphi XE Starter, Windows 8 ---
  Mit Zitat antworten Zitat