1

Many modern applications have irregularly shaped forms. What is the best way to do this in Delphi? Is it possible to do this without using any third party VCLs?

Hans Passant
  • 922,412
  • 146
  • 1,693
  • 2,536
rajeemcariazo
  • 2,476
  • 5
  • 36
  • 62

2 Answers2

9

yes is possible, you must use the SetWindowRgn function to set the new window region to draw.

try this code

procedure TForm1.FormCreate(Sender: TObject);
var
  region:HRGN;
begin
  region := CreateRoundRectRgn(ClientRect.left, ClientRect.top, ClientRect.right, ClientRect.bottom, 15, 15);
  SetWindowRgn(Handle, region, true);
end;

alt text

check theses links for more info

RRUZ
  • 134,889
  • 20
  • 356
  • 483
  • 6
    SetWindowRgn() is the old-school approach to shaping windows. On Win2000 and later, UpdateLayeredWindow() and SetLayeredWindowAttributes() (which are wrapped by the TForm.TransparentColor... and TForm.AlphaBlend... properties) are are the preferred method now. – Remy Lebeau Aug 26 '10 at 21:10
8

You can use TForms's TransparentColorValue property. In combination with BorderStyle=bsNone it will give you such shape.

Torbins
  • 2,111
  • 14
  • 16