Thema: Delphi Transparenter Frame?!

Einzelnen Beitrag anzeigen

Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.015 Beiträge
 
Delphi 12 Athens
 
#12

Re: Transparenter Frame?!

  Alt 8. Mär 2009, 17:21
Zitat von Flodding:
wie tu ich das?
Überschreibe WMEraseBkgnd:

Delphi-Quellcode:
...
    procedure WMEraseBkgnd(var Message: TWMEraseBkgnd); message WM_ERASEBKGND;
...


procedure TFrame3.WMEraseBkgnd(var Message: TWMEraseBkgnd);
var
  SaveIndex: Integer;
  P: TPoint;
begin
  SaveIndex := SaveDC( Message.DC );
  try
    GetViewportOrgEx( Message.DC, P );

    SetViewportOrgEx( Message.DC, P.X - Left, P.Y - Top, nil );
    IntersectClipRect( Message.DC, 0, 0, Parent.ClientWidth, Parent.ClientHeight );

    Parent.Perform( wm_EraseBkgnd, Message.DC, 0 );
    Parent.Perform( wm_Paint, Message.DC, 0 );
  finally
    RestoreDC( DC, SaveIndex );
  end;

  if not ( Parent is TCustomControl ) and not ( Parent is TCustomForm ) then begin
    Control.Parent.Invalidate;
  end;

  Message.Result := 1;
end;
Deine anderen Massnahmen sind damit allerdings bestenfalls unnötig, wahrscheinlich sogar kontraproduktiv.

Den Code habe ich mal eben aus einem bestehenden Projekt "herausseziert". Hoffe es funktioniert so auch...
Uwe Raabe
  Mit Zitat antworten Zitat