Fórum Form com quinas arredondadas #360729
03/07/2008
0
Alguem ai saberia como possa fazer para deixar meu form com as quinas arredondadas. O detalhe é que eu nao estou querendo usar nenhum tipo de skin .. estou querendo fazer no braço mesmo.
Se alguem puder dar uma ajuda.
Vlw´sss
Mmoreira
Curtir tópico
+ 0Posts
03/07/2008
Tonidavi2004
// procedure feita por Rubem Nascimento Rocha.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
procedure MakeRounded(Control: TWinControl);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
BorderStyle := bsNone;
MakeRounded(Form1);
end;
procedure TForm1.MakeRounded(Control: TWinControl);
var
R: TRect;
Rgn: HRGN;
begin
with Control do
begin
R := ClientRect;
rgn := CreateRoundRectRgn(R.Left, R.Top, R.Right, R.Bottom, 20, 20);
Perform(EM_GETRECT, 0, lParam(@r));
InflateRect(r, - 5, - 5);
Perform(EM_SETRECTNP, 0, lParam(@r));
SetWindowRgn(Handle, rgn, True);
Invalidate;
end;
end;
end.
Gostei + 0
04/07/2008
Mmoreira
Valew pela força cara pois era exatamente isso que eu estava precisando, resolvido o problema.
Abraços!
Gostei + 0
05/07/2008
Marco Salles
na edição 93 da Revista Clube Delphi , foi apresentado um modo de arrendondar os cantos dos panels da Aplicação . Que pode ser [u:9b66bd4f91][b:9b66bd4f91]facilmente adaptada para a classe TForm[/b:9b66bd4f91][/u:9b66bd4f91]
procedure TForm1.MakeRoundedEdicao93(Control: TWinControl); const bgColor = $00800ff80; linecolor = clblack; var img:TImage; reg:hrgn; begin setlength(img,length(img)+1); img:=TImage.Create(self); img.Width:=control.Width; img.Height:=control.Height; img.Parent:=control; img.Canvas.Brush.Color:=bgcolor; img.Canvas.Pen.Color:=bgcolor; img.Canvas.Rectangle(0,0,img[i].Width,img[i].Height); img.Canvas.Pen.Color:=linecolor; img.Canvas.RoundRect(0,0,img[i].Width-1,img[i].Height-1,50,50); reg:=CreateRoundRectRgn(0,0,control.Width,control.Height,50,50); setWindowrgn(control.Handle,reg,true); deleteObject(reg); end;
e no oncreate escreva :
procedure TForm1.FormCreate(Sender: TObject); begin BorderStyle := bsNone; MakeRoundedEdicao93(form1); end;
Gostei + 0
05/07/2008
Marco Salles
na edição 93 da Revista Clube Delphi , foi apresentado um modo de arrendondar os cantos dos panels da Aplicação . Que pode ser [u:20f63d0474][b:20f63d0474]facilmente adaptada para a classe TForm[/b:20f63d0474][/u:20f63d0474]
procedure TForm1.MakeRoundedEdicao93(Control: TWinControl); const bgColor = $00800ff80; linecolor = clblack; var img:TImage; reg:hrgn; begin setlength(img,length(img)+1); img:=TImage.Create(self); img.Width:=control.Width; img.Height:=control.Height; img.Parent:=control; img.Canvas.Brush.Color:=bgcolor; img.Canvas.Pen.Color:=bgcolor; img.Canvas.Rectangle(0,0,img[i].Width,img[i].Height); img.Canvas.Pen.Color:=linecolor; img.Canvas.RoundRect(0,0,img[i].Width-1,img[i].Height-1,50,50); reg:=CreateRoundRectRgn(0,0,control.Width,control.Height,50,50); setWindowrgn(control.Handle,reg,true); deleteObject(reg); end;
e no oncreate escreva :
procedure TForm1.FormCreate(Sender: TObject); begin BorderStyle := bsNone; MakeRoundedEdicao93(form1); end;
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)