Einzelnen Beitrag anzeigen

Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Komponente flackert trotz BitBlt

  Alt 2. Jul 2004, 20:01
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.
  Mit Zitat antworten Zitat