Buscar

Formulários com formatos personalizados

nome

Jakson Wendt

Colunista ainda sem descrição. Caro colunista, por favor envie-nos sua descrição.

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.

Publicidade

Vote no artigo




Quantidade de votos: 1 voto
Aceitação: 20%


Detalhes do artigo

Categoria: Outros
Adicionado dia: 30/09/09
Por: Jakson Wendt
Visualizado: 14487 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009