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.

Gerar Codigo de Barras

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.

Código de Barras gerado
Código de Barras gerado.

Confira também