Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

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

Delphi , Программа и Интерфейс , Формы

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

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

Code:

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.
Взято из http://forum.sources.ru

Вот перевод контента на русский язык:

Что отличное вопрос! Код, который вы предоставили, это приложение Delphi, создавшее круглую форму с custom-образом. Для создания круглой формы используется функция CreateRoundRectRgn, чтобы создать регион (а.к.a. "rgn"), а затем этот регион устанавливается как регион окна с помощью функции SetWindowRgn.

Вот разбивка, как это работает: 1. В обработчике события FormCreate формирование стиля кисти формы установлен на твердый (bsSolid) и высота и ширина формы устанавливаются в 500. 2. Старый регион (если есть) удаляется с помощью функции DeleteObject. 3. Новый круглый прямоугольник региона создается с помощью функции CreateRoundRectRgn. Эта функция принимает шесть параметров: * x1, y1: верхний-левый угол рамки * x2, y2: нижний-правый угол рамки * width, height: ширина и высота рамки 4. Новый регион устанавливается как регион окна с помощью функции SetWindowRgn. Третий параметр (TRUE) указывает, что регион должен использоваться для обеих зон - клиентской области и области вне клиента.

Чтобы создать простую круглую форму без необходимости создания региона вручную, вы можете использовать компонент TShape из единицы ExtCtrls. Вот пример:

unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls;
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  end;
var
  Form1: TForm1;
implementation

{$R *.dfm}

{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
  Shape1 := TShape.Create(self);
  Shape1.Parent := self;
  Shape1.Shape := ssCircle;
  Shape1.Width := 500;
  Shape1.Height := 500;
end;

В этом примере компонент TShape создается и добавляется в форму. Форма устанавливается на круг (ssCircle) и ее размер устанавливается в 500x500 пикселей.

Обратите внимание, что вам нужно добавить кнопку TButton, чтобы закрыть форму по вашему запросу:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Close;
end;

Надеюсь, это поможет! Пожалуйста, дайте мне знать, если у вас есть какие-либо дальнейшие вопросы. 😊

Создать круглую форму в Delphi можно с помощью класса TForm и использования функции CreateRoundRectRgn для создания региона, а затем вызова SetWindowRgn для установки нового круглого окна.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Формы ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 09:30:14/0.006195068359375/0