Formulários com formatos personalizados
Nesse artigo irei ensinar como construir um Form com outros formatos além do padrão retangular. Geralmente os Form’s com formatos personalizados são usados em Splash’s (Telas de abertura) dos programas.
Primeiramente vamos iniciar uma nova aplicação.
Nesse primeiro exemplo estaremos criando um formulário em forma de triângulo.
Antes de começarmos a programação vamos analisar como é o triângulo. Ele é formado por três pontos. Então primeiramente devemos definir onde vão ser esses três pontos em que o Form será desenhado.
Como você pode ver na imagem acima foram definidas as coordenadas dentro do Form.
Para construirmos ele com esse formato, vamos realizar a programação no evento OnCreate do Form.
procedure TForm1.FormCreate(Sender: TObject);
var
Regiao : hRgn; //Cria variável para armazenar a região a ser desenhada.
Points : array [0..2] of TPoint; //Cria um vetor para armazenar as coordenadas da imagem.
begin
Points[0] := Point(280,30); //Definição da primeira coordenada.
Points[1] := Point(65,400); //Definição da segunda coordenada.
Points[2] := Point(560,400); //Definição da terceira coordenada.
Regiao := CreatePolygonRgn(Points, 3, WINDING); //Cria o poligono.
SetWindowRgn(Form1.Handle, Regiao, True); //Aplica o format do poligono ao Formulário.
end;
Agora que vimos como funciona vamos criar um formulário com cinco pontos como o da imagem abaixo:
Para construirmos ele com esse formato, vamos realizar a programação no evento OnCreate do Form.
procedure TForm1.FormCreate(Sender: TObject);
var
Regiao : hRgn;
Points : array [0..4] of TPoint;
begin
Points[0] := Point(320,25);
Points[1] := Point(90,180);
Points[2] := Point(200,370);
Points[3] := Point(450,370);
Points[4] := Point(580,180);
Regiao := CreatePolygonRgn(Points, 5, WINDING);
SetWindowRgn(Form1.Handle, Regiao, True);
end;
Como você pode observar o código e muito parecido com o exemplo 1, a única diferença é que foram usados mais pontos.
Em grande parte das vezes à atividade de ficar definindo pontos se tornará muito chata e demorada. Então podemos usar um software para fazer isso para nós, o software chama-se GabesOddForm e pode ser baixado nos site
http://www.informatics.no/progvareOF.htm
Utilizando o GabesOddForm
Ao abri-lo, é exibida uma imagem. Essa imagem será o formato do seu form.
Para definirmos o formato do nosso Form, devemos fazer um desenho em formato BMP. Usando o MSPaint faça um desenho similar ao abaixo e salve-o como o nome de Molde.
Voltando ao GabesOddForm, use o menu File / Open Picture e abra seu arquivo molde.
Em seguida ele será carregado. Agora vamos gerar todas as coordenadas para esse desenho. Para isso utilize o botão Scan de Current Bitmap.
Pronto! Acabamos de gerar uma unit com todas as coordenadas, clique sobre o botão Preview para visualizar a unit.
A unit será aberta no Bloco de notas, salve-a com o nome de UGabesOddForm.pas.
Inicie uma nova aplicação de Delphi.
Importe a Unit UGabesOddForm.pas usando o menu Project Add to Project.
No evento OnCreate do form faça o seguinte código:
procedure TForm1.FormCreate(Sender: TObject);
begin
CreateOddWindow(Form1.Handle, false);
end;
Onde:
CreateOddWindow: função que desenha o Form;
Form1.Handle: form que sera desenhado;
False: parâmetro para que barra de título não seja exibida;
Não esqueça de adicionar aos Uses a
unit UGabesOddForm.