Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Как создать круглую форму?

01.01.2007

Здесь приведён полный пример того, как создать круглую форму.

Не забудьте создать TButton, чтобы окно можно было закрыть.

unit Unit1; 
 
interface 
 
uses 
  Windows, Messages, SysUtils, Classes, Graphics, Controls, 
  Forms, Dialogs, ExtCtrls, Buttons, StdCtrls; 
 
type 
  TForm1 = class(TForm) 
    Button1: TButton; 
    procedure FormCreate(Sender: TObject); 
    procedure Button1Click(Sender: TObject); 
  private 
    { Private-Deklarationen} 
    procedure CreateParams(var Params: TCreateParams); override; 
  public 
    { Public-Deklarationen} 
  end;       
 
var 
  Form1: TForm1; 
 
implementation 
 
{$R *.DFM} 
 
{ TForm1 } 
 
procedure TForm1.CreateParams(var Params: TCreateParams); 
begin 
  inherited CreateParams(Params); 
 
  { удаляем заголовок и рамку }
  Params.Style := Params.Style or ws_popup xor ws_dlgframe; 
end; 
 
procedure TForm1.FormCreate(Sender: TObject); 
var 
  FormRgn: hRgn; 
begin 
  {clear form} 
  Form1.Brush.Style := bsSolid; //bsclear; 
  { делаем круг формы } 
  GetWindowRgn(Form1.Handle, FormRgn); 
 
  { удаляем старый объект } 
  DeleteObject(FormRgn); 
  { делаем прямоугольник формы }
  Form1.Height := 500; 
  Form1.Width := Form1.Height; 
  { создаём круглую форму } 
  FormRgn := CreateRoundRectRgn(1, 1, Form1.Width - 1, 
             Form1.height - 1, Form1.width, Form1.height); 
 
  { устанавливаем новое круглое окно }
  SetWindowRgn(Form1.Handle, FormRgn, TRUE); 
end; 
 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
  Form1.close; 
end; 
 
end.

Взято из https://forum.sources.ru