Mega Code Archive

 
Categories / Delphi / Forms
 

Non rectangular forms and controls

Title: Non-rectangular forms and controls Question: How do I make a non-rectangular form? Answer: It's easy to make anything that descends from TWinControl any shape you want. All you need is a HRGN and the handle of the control. SetWindowRgn takes 3 parameters, the handle of the window to change, the handle to the region, and a boolean parameter to redraw or not after the change. Once you have a handle and a region, you can call SetWindowRgn(Handle, Region, True) and voil! Here is an example using my BitmapToRgn function (as described in article ID #512). Notice that you must not free the region with DeleteObject because the operating system owns the region after a call to SetWindowRgn. var MaskBmp: TBitmap; begin MaskBmp := TBitmap.Create; try MaskBmp.LoadFromFile('FormShape.bmp'); Height := MaskBmp.Height; Width := MaskBmp.Width; // The OS owns the region after call to SetWindowRgn SetWindowRgn(Self.Handle, BitmapToRgn(MaskBmp), True); finally MaskBmp.Free; end; end;