Olá galera, nesta Quick Tips, irei mostra como podemos utilizar um componente não muito popular, pelo menos não tão quanto o TSQLQuery, ou até mesmo nosso velho TButton, seu nome é TPaintBox, localizado na Unit ExtCtrls e descendente de TGraphicControl, com ele podemos desenha figura geométricas livremente assim como fazemos no famosos Microsoft Paint.
Para construção deste exemplo vamos criar uma aplicação e nela adicionar um simples TPaintBox, localizado na palheta System
1 TPaintBox
unit uFrmPrincipal;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons;
type
TFrmPrincipal = class(TForm)
Label1: TLabel;
Panel1: TPanel;
PaintBox1: TPaintBox;
procedure PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure PaintBox1Paint(Sender: TObject);
private
{ Veja a criação de um Array para podermos gravar as posições que temos no nosso TPaintBox }
FPosicoes : array of TPoint;
public
{ Public declarations }
end;
var
FrmPrincipal: TFrmPrincipal;
implementation
{$R *.dfm}
{ Este evento é responsável por captar a posição do curso e armazenar esta no nosso Array of TPoint, para ser utilizada no enveto Paint do nosso PaintBox }
procedure TFrmPrincipal.PaintBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
i : integer;
begin
i := High(FPosicoes)+1;
SetLength(FPosicoes,i+1);
FPosicoes[i].X := x;
FPosicoes[i].y := y;
PaintBox1.Invalidate;
end;
{ Neste evento Paint, podemos observar que será pintado utilizando Canvas, e as posições armazenadas no Array FPosicoes que criamos no inicio de nosso projeto}
procedure TFrmPrincipal.PaintBox1Paint(Sender: TObject);
var
K : Integer;
begin
K := High(FPosicoes);
if K < 0 then
Exit;
with PaintBox1.Canvas do
begin
with FPosicoes[0] do
Ellipse(X-2, Y-2, X+2, Y+2);
if K > 0 then
begin
with FPosicoes[K] do
Ellipse(X-2, Y-2, X+2, Y+2);
with FPosicoes[0] do
MoveTo(X, Y);
for K := 1 to K do
LineTo(FPosicoes[K].x, FPosicoes[K].y);
end;
end;
end;
end.
Vejamos o resultado final após toda esta implementação :
Fico por aqui ate à próxima Quick Tips. Neste post você pode baixar o exemplo completo deste artigo.
Um abraço
Wesley Y
wyamazack@rwsolution.com.br