{
Dieses Beispiel macht ein Fenster zur Laufzeit transparent.
Sichtbar bleiben die Titelleiste und alle visuellen
Komponenten auf dem Fomular. Soll das Fenster gleich schon
zu Beginn transparent sein, muß dieser Quelltext im
OnCreate-Ereignis des Formluars aufgerufen werden.
}
procedure TForm1.Button1Click(Sender: TObject);
var
FormRegion,TempRegion: hRgn;
I: Integer;
Rect: TRect;
begin
FormRegion := 0;
for I := 0
to ControlCount - 1
do begin
Rect := Controls[I].BoundsRect;
OffsetRect(Rect, ClientOrigin.X - Left, ClientOrigin.Y - Top);
TempRegion := CreateRectRgnIndirect(Rect);
if FormRegion = 0
then
FormRegion := TempRegion
else begin
CombineRgn(FormRegion, FormRegion, TempRegion, RGN_OR);
DeleteObject(TempRegion);
end;
end;
TempRegion := CreateRectRgn(0, 0, Width,
GetSystemMetrics(SM_CYCAPTION) +
GetSystemMetrics(SM_CYSIZEFRAME) +
GetSystemMetrics(SM_CYMENU) *
Ord(Menu <>
NIL));
CombineRgn(FormRegion, FormRegion, TempRegion, RGN_OR);
DeleteObject(TempRegion);
SetWindowRgn(
Handle, FormRegion, True);
end;