Create a transparent form which is still moveable (Views: 27)
Problem/Question/Abstract: How to create a transparent form which is still moveable Answer: You can achieve a transparency effect by creating a window region that includes only the controls on the form but not the background. Making a window transparent and still moveable: procedure TForm1.Button2Click(Sender: TObject); var frmRegion, tempRegion: HRGN; i: Integer; Arect: TRect; begin frmRegion := 0; for I := 0 to ControlCount - 1 do begin { create a region for the control } aRect := Controls[i].BoundsRect; { coordinates have to be window-relative, not client area relative } OffsetRect(aRect, clientorigin.x - left, clientorigin.y - top); tempRegion := CreateRectRgnIndirect(aRect); { merge the region with the "summary" region we are building } if frmRegion = 0 then frmRegion := tempRegion else begin CombineRgn(frmRegion, frmRegion, tempRegion, RGN_OR); DeleteObject(tempRegion); end; end; { create a region for the caption and menu bar and add it to the summary } tempregion := CreateRectRgn(0, 0, Width, GetSystemMetrics(SM_CYCAPTION) + GetSystemMetrics(SM_CYSIZEFRAME) + GetSystemMetrics(SM_CYMENU) * Ord(Menu < > nil)); CombineRgn(frmRegion, frmRegion, tempRegion, RGN_OR); DeleteObject(tempRegion); SetWindowRgn(handle, frmRegion, true); end; |