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