Form com quinas arredondadas
Pessoal,
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
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
Curtidas 0
Respostas
Tonidavi2004
03/07/2008
// 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
Mmoreira
03/07/2008
tonidavi2004,
Valew pela força cara pois era exatamente isso que eu estava precisando, resolvido o problema.
Abraços!
Valew pela força cara pois era exatamente isso que eu estava precisando, resolvido o problema.
Abraços!
GOSTEI 0
Marco Salles
03/07/2008
so para enriquecer o tópico , se assim eu possa faze-lo , vale salientar
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]
e no oncreate escreva :
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
Marco Salles
03/07/2008
so para enriquecer o tópico , se assim eu possa faze-lo , vale salientar
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]
e no oncreate escreva :
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