Olá galera, estou hoje trazendo um artigo muito interessante e bem simples, ele trata da geração de códigos de barra com Delphi através de uma sequencia de número vamos ver como proceder.
Primeiramente vamos criar um novo projeto, salve o mesmo como prjCodigoBarras.dpr.
Segundo vamos salvar a unit criada como uFrmGerarCodigoBarra.pas. Vamos mudar o Name do Form para FrmGerarCodigoBarra.
Logo em seguida vamos colocar um Componente TImage, e mudar o nome para ImgCodigoBarras, nele que será impresso o código de barra.
Vamos agora adicionar um BitBtn, e mudar seu nome par BtnGerarCodigoBarras e seu Caption para Gerar.
Por ultimo vamos adicionar um LabeledEdit, e mudar seu nome para LblEdtCodigo.
A imagem abaixo mostra como deveria ficar sua tela, igual ou parecida.
Vamos agora criar a procedure para fazer a geração do Código, para isso vamos fazer o seguinte, na seção private declare como mostro abaixo:
type
TFrmGerarCodigoBarra = class(TForm)
ImgCodigoBarras: TImage;
BtnGerarCodigo: TBitBtn;
LblEdtCodigo: TLabeledEdit;
private
procedure GerarCodigo(Codigo: String; Canvas: TCanvas);
{ Private declarations }
public
{ Public declarations }
end;
Logo em seguida precisamos implementar a procedure, posicione o cursos em cima da procedure e usando o CTRL + SHIFT + C você irá ver a implementação
Caso você tenha seguido todos os passos sua unit agora estará com esta cara:
unit uFrmGerarCodigoBarra;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls;
type
TFrmGerarCodigoBarra = class(TForm)
ImgCodigoBarras: TImage;
BtnGerarCodigo: TBitBtn;
LblEdtCodigo: TLabeledEdit;
private
procedure GerarCodigo(Codigo: String; Canvas: TCanvas);
{ Private declarations }
public
{ Public declarations }
end;
var
FrmGerarCodigoBarra: TFrmGerarCodigoBarra;
implementation
{$R *.dfm}
Procedure TFrmGerarCodigoBarra.GerarCodigo(Codigo: String; Canvas : TCanvas);
begin
end;
end.
Agora vamos codificar a procedure GerarCodigo, veja o código a ser informado para geração do Canvas.
Procedure TFrmGerarCodigoBarra.GerarCodigo(Codigo: String; Canvas : TCanvas);
const
digitos : array["0".."9"] of string[5]= ("00110", "10001", "01001", "11000",
"00101", "10100", "01100", "00011", "10010", "01010");
var s : string;
i, j, x, t : Integer;
begin
// Gerar o valor para desenhar o código de barras
// Caracter de início
s := "0000";
for i := 1 to length(codigo) div 2 do
for j := 1 to 5 do
s := s + Copy(Digitos[codigo[i * 2 - 1]], j, 1) + Copy(Digitos[codigo[i * 2]], j, 1);
// Caracter de fim
s := s + "100";
// Desenhar em um objeto canvas
// Configurar os parâmetros iniciais
x := 0;
// Pintar o fundo do código de branco
Canvas.Brush.Color := clWhite;
Canvas.Pen.Color := clWhite;
Canvas.Rectangle(0,0, 2000, 79);
// Definir as cores da caneta
Canvas.Brush.Color := clBlack;
Canvas.Pen.Color := clBlack;
// Escrever o código de barras no canvas
for i := 1 to length(s) do
begin
// Definir a espessura da barra
t := strToInt(s[i]) * 2 + 1;
// Imprimir apenas barra sim barra não (preto/branco - intercalado);
if i mod 2 = 1 then
Canvas.Rectangle(x, 0, x + t, 79);
// Passar para a próxima barra
x := x + t;
end;
end;
om este código implementado vamos ver agora como usar a procedure, para isso no evento onClick do BtnGerarCodigoBarras vamos implementar o seguinte:
procedure TFrmGerarCodigoBarra.BtnGerarCodigoClick(Sender: TObject);
begin
GerarCodigo(LblEdtCodigo.Text, ImgCodigoBarras.Canvas);
end;
Com isso finalizamos nosso artigo, veja o resultado do código na imagem a seguir, e neste post baixe o exemplo completo.