procedure TForm1.FormCreate(Sender: TObject); var dwExStyle : DWORD; begin dwExStyle := GetWindowLong(Handle, GWL_EXSTYLE); dwExStyle := dwExStyle or WS_EX_TRANSPARENT; SetWindowLong(Handle, GWL_EXSTYLE, dwExStyle); end;
var FullRgn, ClientRgn, CtlRgn : THandle;procedure TForm1.DoInvisible; var AControl : TControl; A, Margin, X, Y, CtlX, CtlY : Integer; begin Margin := ( Width - ClientWidth ) div 2; FullRgn := CreateRectRgn(0, 0, Width, Height); X := Margin; Y := Height - ClientHeight - Margin; ClientRgn := CreateRectRgn( X, Y, X + ClientWidth, Y + ClientHeight ); CombineRgn( FullRgn, FullRgn, ClientRgn, RGN_DIFF ); for A := 0 to ControlCount - 1 do begin AControl := Controls[A]; if ( AControl is TWinControl ) or ( AControl is TGraphicControl ) then with AControl do begin if Visible then begin CtlX := X + Left; CtlY := Y + Top; CtlRgn := CreateRectRgn( CtlX, CtlY, CtlX + Width, CtlY + Height ); CombineRgn( FullRgn, FullRgn, CtlRgn, RGN_OR ); end; end; end; SetWindowRgn(Handle, FullRgn, TRUE); deleteobject(fullrgn); end;procedure TForm1.FormCreate(Sender: TObject); begin DoInvisible; end;
var
dwExStyle : DWORD;
begin
dwExStyle := GetWindowLong(Handle, GWL_EXSTYLE);
dwExStyle := dwExStyle or WS_EX_TRANSPARENT;
SetWindowLong(Handle, GWL_EXSTYLE, dwExStyle);
end;
FullRgn, ClientRgn, CtlRgn : THandle;procedure TForm1.DoInvisible;
var
AControl : TControl;
A, Margin, X, Y, CtlX, CtlY : Integer;
begin
Margin := ( Width - ClientWidth ) div 2;
FullRgn := CreateRectRgn(0, 0, Width, Height);
X := Margin;
Y := Height - ClientHeight - Margin;
ClientRgn := CreateRectRgn( X, Y, X + ClientWidth, Y + ClientHeight );
CombineRgn( FullRgn, FullRgn, ClientRgn, RGN_DIFF );
for A := 0 to ControlCount - 1 do begin
AControl := Controls[A];
if ( AControl is TWinControl ) or ( AControl is TGraphicControl )
then with AControl do begin
if Visible then begin
CtlX := X + Left;
CtlY := Y + Top;
CtlRgn := CreateRectRgn( CtlX, CtlY, CtlX + Width, CtlY + Height );
CombineRgn( FullRgn, FullRgn, CtlRgn, RGN_OR );
end;
end;
end;
SetWindowRgn(Handle, FullRgn, TRUE);
deleteobject(fullrgn);
end;procedure TForm1.FormCreate(Sender: TObject);
begin
DoInvisible;
end;