Delphi-Quellcode:
TYPE
TGraphPaper = CLASS(TImage)
...
CONSTRUCTOR Create(MyParent: TWinControl; Title: STRING); REINTRODUCE;
PROCEDURE SetBounds(ALeft, ATop, AWidth, AHeight: INTEGER); OVERRIDE;
...
private
created: boolean;
...
END;
Delphi-Quellcode:
CONSTRUCTOR TGraphPaper.Create(MyParent: TWinControl; Title: STRING);
BEGIN
created := false;
INHERITED CREATE(MyParent);
...
created := true;
END;
Delphi-Quellcode:
PROCEDURE TGraphPaper.SetBounds(ALeft, ATop, AWidth, AHeight: INTEGER);
BEGIN
INHERITED SetBounds(ALeft, ATop, AWidth, AHeight);
if created then Zeichne;
...
Damit würde das Zeichnen nicht während der Erstellung ausgeführt werden.
Alternativ kannst Du doch die Zeichnen-Funktion einfach abbrechen, wenn Width oder Height 0 sind.
Das ist auch eine Idee, allerdings sollte man dann auch negative Werte ausfiltern. Das könnte/sollte man eventuell auch zusätzlich machen.