News & Events
Dica: Painel com cantos arredondados
- 31 de março de 2008
- Posted by: Adriano Santos
- Category: delphi delphi2006 delphi2007 dicas
Difficulty level not set for this Post
Painel com cantos arredondados
Mais uma dica enviada pelo colega Rubem Nascimento Rocha, muito legal. Eu publiquei uma dica de como fazer painéis com cantos arredondados na seção Ask the Expert da revista 93. O Rubem descobriu uma função ainda melhor que faz os componentes descendentes do TWinControl terem seus cantos arredondados. Dêem uma olhada:
procedure 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;
Exemplo de uso: Insira alguns componentes como TMemo, TPanel, TButton etc. No evento OnClick de determinado botão insira o código abaixo:
procedure TForm1.Button1Click(Sender: TObject);
begin
// TMemo:
Memo1.BorderStyle := bsNone;
MakeRounded(Memo1);
// TEdit:
Edit2.BorderStyle := bsNone;
MakeRounded(Edit2);
// TPanel:
MakeRounded(Panel1);
// TStaticText:
MakeRounded(StaticText1);
// TForm
Form1.BorderStyle := bsNone;
MakeRounded(Form1);
end;
Adriano Santos
Editor Técnico Revista ClubeDelphi
Parabéns, sua inscrição no Feed RSS foi aceita. Leia em primeira mão todas as notícias do blog.
Siga @tdevrocks no Twitter agora e fique por dentro de todas as atualizações do blog.
Siga também o autor @asrsantos

Author: Adriano Santos
Adriano Santos é especialista em linguagens de desenvolvimento, Embarcadero MVP, possui +1000 artigos e vídeo-aulas publicadas em revistas e websites especializados, ex-editor chefe das revistas ClubeDelphi e WebMobile. Atualmente Diretor de Operações na startup GET IT! Technology e Consultor Senior na Embarcadero do Brasil.
muito bom cara.
so que sua explicação nao é passo a passo, poderia ser um pouco mais detalhista por que assim você ia pegar também os recem iniciantes do delphi7 também.
falo ai mais é muito bom mesmo .
Olha cara, estou em busca de um componente, mas gostei muito da idéia hehe.
Descordo do que o cara acima falou, já ta de lambuja ai… Vlw! Muito bom xD
Olá, boa tarde…
Muito boa a dica.
Testei a dica, nas telas chamadas normais tudo certo. Neste novos monitores do All in One o componente TPanel o outro similar, mesmo com alClient ele fica só até a metade da tela.
Tem algum parâmetro que mude isto?
Obrigado.
Fiz o teste aqui, Deu certo da seguinte forma, arredondou as pontas de cima, e com componente que se ajustam a tela, eles ficam do tamanho que ta no momento de desenvolvimento. o alClient para de funcionar. alguma solução para isso?