Mhh, an Invalidate hab ich gar nicht gedacht...
Wenn ich jedoch Invalidate durch Paint ersetzte, tritt beim Erstellen der Komponente folgender Fehler auf:
Exception EInvalidOperation : "Element '' hat kein übergeordnetes Fenster."
Delphi-Quellcode:
procedure TVierGewinnt.Paint;
begin
If Visible then
BitBlt(Canvas.Handle, 0, 0, Bmp.Width, Bmp.Height, BMP.Canvas.Handle, 0, 0, SRCCOPY); <--- Hier kommt der Fehler
//inherited;
end;
Edit: Sieht so aus, als müsste die Komponente wissen, wer ihr Parent ist... seltsamerweise ging das vorher ohne
Ist zwar nicht besonders elegant, aber ich nehm halt einfach mal an, dass der Owner auch gleichzeitig die Parentfunktion übernimmt :-/
Delphi-Quellcode:
constructor TVierGewinnt.Create(AOwner: TComponent);
begin
inherited;
BMP := TBitmap.Create;
try
Parent := AOwner as TWinControl;
except
Destroy;
exit;
end;
{....}
Dafür kann man DoubleBuffered jetzt weglassen, es lag tatsächlich an Invalidate! Danke Jens Schumann
Dani H.