Nesse exemplo iremos utilizar o seguintes componentes:
1 Panel Localizado no Tool Palette.
1 Edit Localizado no Tool Palette.
1 button Localizado no Tool Palette.
Imagem de como ficou meu form com os componentes:
Em seguida clicamos em F12 e será direcionado para aba Code,
onde iremos escrever nosso código.
abaixo do código { TForm1 } iremos criar uma procedure.
procedure Arredondarcantos(componente: TWinControl; Y:String);
var
BX: TRect;
mdo: HRGN;
begin
with componente do
begin
BX := ClientRect;
mdo := CreateRoundRectRgn(BX.Left, BX.Top, BX.Right,
BX.Bottom, StrToInt(Y), StrToInt(Y)) ;
Perform(EM_GETRECT, 0, lParam(@BX)) ;
InflateRect(BX, - 4, - 4) ;
Perform(EM_SETRECTNP, 0, lParam(@BX)) ;
SetWindowRgn(Handle, mdo, True) ;
Invalidate;
end;
end;
Com essa procedure você pode arredondar o Form, Edit, Panel, DBGrid etc...
Agora clicamos em nosso Button1 no Object Inspector do button
clicamos no Events a adicionamos
Arredondarcantos(dbgrid1,edit1.Text);
no evento OnClick
Só testar, deixe seu comentário, duvidas e sugestões.
Ao final irei explicar o código então vamos lá.
Foi criada 2 variáveis uma do tipo TRect
TRect define um retângulo.
TRect representa as dimensões de um retângulo.
As coordenadas são especificadas como quatro números inteiros separados representando
os lados esquerdo, superior, direito e inferior, ou como dois pontos representando
os locais dos cantos superior esquerdo e inferior direito.
a segunda variável do tipo HRGN onde é o
Identificador para a região que será modificada para representar a região da janela.
PerformPerform para ignorar a fila de mensagens do Windows e enviar uma mensagem
diretamente para o procedimento de janela do controle.
InflateRect
Aumenta um retângulo por um valor específico.
InflateRect insufla a largura do retângulo subtraindo DXdo lado
esquerdo e adicionando DXao lado direito .
InflateRect insufla a Altura do retângulo subtraindo DYdo lado
Superior e adicionando DYao lado Inferior .
SetWindowRgn
A função SetWindowRgn define a região da janela de uma janela. A região da
janela determina a área dentro da janela onde o sistema permite o desenho.
O sistema não exibe nenhuma parte de uma janela que esteja fora da região da janela.
NOSSA UNIT FICOU ASSIM
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes,
Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls;
type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure Arredondarcantos(componente: TWinControl; Y:String);
var
BX: TRect;
mdo: HRGN;
begin
with componente do
begin
BX := ClientRect;
mdo := CreateRoundRectRgn(BX.Left, BX.Top, BX.Right, BX.Bottom,
StrToInt(Y), StrToInt(Y)) ;
Perform(EM_GETRECT, 0, lParam(@BX)) ;
InflateRect(BX, - 4, - 4) ;
Perform(EM_SETRECTNP, 0, lParam(@BX)) ;
SetWindowRgn(Handle, mdo, True) ;
Invalidate;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Arredondarcantos(dbgrid1,edit1.Text);
end;
end.
17/04/2026 05:01
Delphi
10530
Política de privacidade
Utilizamos cookies e outras tecnologias semelhantes para melhorar a sua experiência no nosso site.
Ao continuar navegando, você declara que está de acordo com a nossa política de privacidade.