Você está na página 1de 10

22/05/2015

Cdigo de Barras EAN 13 e EAN 8 > Delphi > CdigoFonte.net

R7 TV

Notcias

Entretenimento

Esportes

Vdeos

Rede Record

E-mail

Sobre
Anuncie
Buscar cdigos
Privacidade
Fale conosco
Ol! Friday, 22 de May de 2015.

Cdigos
ASP.NET
ASP
Cold Fusion
CGI
C#
JavaScript
Delphi
PHP
VB.NET
VBScript
XML
Assistentes
Favoritos
Boto Direito
Confirm Box
Datas
Caixa de Alerta
Transies
Cores em Hexa
Links
Outros
Artigos/Dicas
ASP
Banco de Dados
Blogs
CGI/Perl
C# (CSharp)
CSS
Delphi
.NET
Flash
Front-Page
HTML
JavaScript
https://www.codigofonte.net/dicas/delphi/195_codigo-de-barras-ean-13-e-ean-8

1/10

22/05/2015

Cdigo de Barras EAN 13 e EAN 8 > Delphi > CdigoFonte.net

PHP
Python
Web
Web 2.0
Windows
Widgets
Mural de Recados
Contadores
Conta Cliques
Servios
Notcias
Web Objects
Jogos Online
Feed RSS
Expediente
Anuncie
Frum
Orkut
Twitter
Divulgue-nos
Privacidade
Contato
Parceiros
Fontes Gratis
KiloByte
HTML Staff

Contedo
Delphi
Adicionar a Meu favorito
Sunday, 23 de July de 2006

Cdigo de Barras EAN 13 e


EAN 8
Nesse artigo mostrarei como desenhar dois tipos de cdigo de barras
EAN 13 e EAN 8, em um PictureBox, no enfocarei nesse artigo a
explicao de como construir o algaritimo de desenho do Cdigo de
Barra, necessrio um estudo especifico no Padro EAN para entender
como construdo um Cdigo de Barra, estaria disponibilizando as
funes necessrias e explicando o processo para a confeco de um
aplicativo simples.
Em outro artigo estarei demonstrando como imprimir esse Cdigo de
barra usando o componente PrintDocument.
Vamos iniciar uma novo Projeto Windows Forms, coloque um Label
altere o Text para Cdigo de Barra, um TextBox, um PictureBox altere a
BackColor para Window, um Button altere o Text para Desenhar, seu
formulrio deve ficar parecido com a Figura 1.

https://www.codigofonte.net/dicas/delphi/195_codigo-de-barras-ean-13-e-ean-8

2/10

22/05/2015

Cdigo de Barras EAN 13 e EAN 8 > Delphi > CdigoFonte.net

Figura 1. Como deve ficar os componentes no Formulrio


Declare a Funo EANCodeBin, ela transforma o Cdigo EAN em
Binrio essa funo usada pela funo PrintEanBarcode, acompanhe a
Listagem 1.
Listagem 1. Funo EANCodeBIN
1. function EANCodeBIN(strEANCode: string):
string;
2. var
3.
I : Integer;
4.
str, strAux, StrBinCode, StrCodigo :
String;
5. begin
6.
strEANCode := Trim(strEANCode);
7.
strAux := strEANCode;
8.
If (strAux.Length <> 13) And
(strAux.Length <> 8) Then
9.
Exception.Create('Cdigo EAN
Invlido');
10.
11.
for I := 0 to strEANCode.Length - 1
do
12.
if (strAux.Chars[I].ToString < '0')
or (strAux.Chars[I].ToString > '9') then
13.
Exception.Create('Caracter
Invlidos no EAN');
14.
15.
If (strAux.Length = 13) Then
16.
begin
17.
strAux :=
Copy(strAux,2,Length(StrAux));
18.
19.
Case
Convert.ToInt32(Copy(strEANCode,1,1)) of
20.
0: StrCodigo := '000000';
21.
1: StrCodigo := '001011';
22.
2: StrCodigo := '001101';
23.
3: StrCodigo := '001110';
24.
4: StrCodigo := '010011';
25.
5: StrCodigo := '011001';
26.
6: StrCodigo := '011100';
27.
7: StrCodigo := '010101';
28.
8: StrCodigo := '010110';
29.
9: StrCodigo := '011010';
30.
end;
31.
end
32.
else
33.
StrCodigo := '0000';
34.
35.
StrBinCode := '000101';
https://www.codigofonte.net/dicas/delphi/195_codigo-de-barras-ean-13-e-ean-8

3/10

22/05/2015

36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.

Cdigo de Barras EAN 13 e EAN 8 > Delphi > CdigoFonte.net

For I := 1 To (Length(strAux) div 2)


do
Case Convert.ToInt32(Copy(strAux, I,
1)) of
0:
begin
if Copy(StrCodigo, I, 1) = '0'
then
StrBinCode := StrBinCode +
'0001101'
else
StrBinCode := StrBinCode +
'0100111';
end;
1:
begin
if Copy(StrCodigo, I, 1) = '0'
then
StrBinCode := StrBinCode +
'0011001'
else
StrBinCode := StrBinCode +
'0110011';
end;
2:
begin
if Copy(StrCodigo, I, 1) = '0'
then
StrBinCode := StrBinCode +
'0010011'
else
StrBinCode := StrBinCode +
'0011011';
end;
3:
begin
if Copy(StrCodigo, I, 1) = '0'
then
StrBinCode := StrBinCode +
'0111101'
else
StrBinCode := StrBinCode +
'0100001';
end;
4:
begin
if Copy(StrCodigo, I, 1) = '0'
then
StrBinCode := StrBinCode +
'0100011'
else
StrBinCode := StrBinCode +
'0011101';
end;
5:
begin
if Copy(StrCodigo, I, 1) = '0'
then
StrBinCode := StrBinCode +
'0110001'
else
StrBinCode := StrBinCode +
'0111001';
end;
6:
begin
if Copy(StrCodigo, I, 1) = '0'
then

https://www.codigofonte.net/dicas/delphi/195_codigo-de-barras-ean-13-e-ean-8

4/10

22/05/2015

83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.

'0101111'

Cdigo de Barras EAN 13 e EAN 8 > Delphi > CdigoFonte.net

StrBinCode := StrBinCode +

else
StrBinCode := StrBinCode +
'0000101';
end;
7:
begin
if Copy(StrCodigo, I, 1) = '0'
then
StrBinCode := StrBinCode +
'0111011'
else
StrBinCode := StrBinCode +
'0010001';
end;
8:
begin
if Copy(StrCodigo, I, 1) = '0'
then
StrBinCode := StrBinCode +
'0110111'
else
StrBinCode := StrBinCode +
'0001001';
end;
9:
begin
if Copy(StrCodigo, I, 1) = '0'
then
StrBinCode := StrBinCode +
'0001011'
else
StrBinCode := StrBinCode +
'0010111';
end;
end;
StrBinCode := StrBinCode + '01010';
for I := (Length(strAux) div 2 + 1)
To Length(strAux) do
case Convert.ToInt32(Copy(strAux,
I, 1)) of
0 : StrBinCode := StrBinCode +
'1110010';
1 : StrBinCode := StrBinCode +
'1100110';
2 : StrBinCode := StrBinCode +
'1101100';
3 : StrBinCode := StrBinCode +
'1000010';
4 : StrBinCode := StrBinCode +
'1011100';
5 : StrBinCode := StrBinCode +
'1001110';
6 : StrBinCode := StrBinCode +
'1010000';
7 : StrBinCode := StrBinCode +
'1000100';
8 : StrBinCode := StrBinCode +
'1001000';
9 : StrBinCode := StrBinCode +
'1110100';
end;
StrBinCode := StrBinCode +
'101000';
EANCodeBIN := StrBinCode;
end;

https://www.codigofonte.net/dicas/delphi/195_codigo-de-barras-ean-13-e-ean-8

5/10

22/05/2015

Cdigo de Barras EAN 13 e EAN 8 > Delphi > CdigoFonte.net

Agora vamos a declarar a funo PrintEANBarCode, necessrio


passar os seguintes parmetros, o Cdigo de Barra e o Objeto
PictureBox aonde ser desenhado as Brras do Cdigo de Barra, os
outros parmetros so opcionais, os quatro parmetros seguintes so as
posies e tamanho do desenho e o ultimo a fonte da linha que
imprimir o cdigo de barra, acompanhe a Listagem 2.
Listagem 2. Funo PrintEANCode
1. procedure PrintEANBarCode(strEANCode :
String; objPicBox : PictureBox;
2.
const sngX1 : Single = -1; const sngY1
: Single = -1;
3.
const sngX2 : Single = -1; const sngY2
: Single = -1;
4.
const FontForText: Font = nil);
5. var
6.
I : Integer;
7.
sngPosX : Single;
8.
sngPosY : Single;
9.
sngScaleX : Single;
10.
strEANBin : String;
11.
strFormat : StringFormat;
12.
FontText : Font;
13.
sngXX1, sngYY1, sngXX2, sngYY2 :
Single;
14.
BrushX : Brush;
15. begin
16.
StrFormat := StringFormat.Create;
17.
strEANBin := EANCodeBIN(strEANCode);
18.
19.
If (FontForText = nil) Then
20.
FontText := Font.Create('Courier
New', 10)
21.
else
22.
FontText := FontForText;
23.
24.
If sngX1 = (-1) Then
25.
sngXX1 := 0
26.
else
27.
sngXX1 := sngX1;
28.
29.
If sngY1 = (-1) Then
30.
sngYY1 := 0
31.
else
32.
sngYY1 := sngY1;
33.
34.
If sngX2 = (-1) Then
35.
sngXX2 := objPicBox.Width
36.
else
37.
sngXX2 := sngX2;
38.
39.
If sngY2 = (-1) Then
40.
sngYY2 := objPicBox.Height
41.
else
42.
sngYY2 := sngY2;
43.
44.
sngPosX := sngXX1;
45.
sngPosY := sngYY2 - (1.5 *
FontText.Height);
46.
47.
BrushX :=
SolidBrush.Create(objPicBox.BackColor);
48.
objPicBox.CreateGraphics.FillRectangle(BrushX,
https://www.codigofonte.net/dicas/delphi/195_codigo-de-barras-ean-13-e-ean-8

6/10

22/05/2015

49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.

Cdigo de Barras EAN 13 e EAN 8 > Delphi > CdigoFonte.net

sngXX1, sngYY1, sngXX2 - sngXX1, sngYY2


- sngYY1);
sngScaleX := (sngXX2 - sngXX1) /
strEANBin.Length;
for I := 1 To Length(strEANBin) do
begin
If Copy(strEANBin, I, 1) = '1' Then
begin
BrushX :=
SolidBrush.Create(objPicBox.ForeColor);
objPicBox.CreateGraphics.FillRectangle(BrushX,
sngPosX, sngYY1, sngScaleX, sngPosY);
end;
sngPosX := sngXX1 + (I * sngScaleX);
end;
strFormat.Alignment :=
StringAlignment.Center;
strFormat.FormatFlags :=
StringFormatFlags.NoWrap;
BrushX :=
SolidBrush.Create(objPicBox.ForeColor);
objPicBox.CreateGraphics.DrawString(strEANCode,
FontText, BrushX,
Convert.ToSingle((sngXX2 - sngXX1) / 2),
Convert.ToSingle(sngYY2 FontText.Height), strFormat);

65.
66. end;

No evento Click do Button1 coloque o seguinte cdigo para executar a


Funo de desenhar as barras do cdigo de barra, Listagem 3.
Listagem 3. Executando a Funo para Desenhar Barra
1. PrintEANBarCode(TextBox1.Text,
PictureBox1, 10, 10, PictureBox1.Width 20, PictureBox1.Height - 20);

No esquea de colocar no uses SysUtils, agora basta voc digitar um


Cdigo de Barra e clicar em desenhar que ele desenhar as barras no
PictureBox veja a Figura 2 e Figura 3.

Figura 2. Cdigo de Barra EAN 13

https://www.codigofonte.net/dicas/delphi/195_codigo-de-barras-ean-13-e-ean-8

7/10

22/05/2015

Cdigo de Barras EAN 13 e EAN 8 > Delphi > CdigoFonte.net

Figura 3. Cdigo de Barra EAN 8


Abraos a Todos.

Conhea nosso parceiro:

Curtir

Enviar um Artigo
Enviado por: Emmanuel Alves

Outros artigos
Assine o Feed desta categoria
Classe Helpers - 13/07/2006
Procurando Letras, Palavras em um TMemo. - 26/04/2006
Programao Orientada a Objetos - 19/03/2005
Lendo e gravando arquivos de texto em Delphi - 10/03/2005
Ver mais...

Comentrios do artigo [Novo comentrio]


carlos escudeiro - 11 de October de 2008 - 17:46
S faltou o codigo do boto desenhar
Edilson Alves de Oliveira - 18 de November de 2008 - 17:23
onde encontro esse tal de pictueBox no delphi?
ELIAS PAULINO - 26 de October de 2009 - 12:59
tambem gostaria de saber onde eu encontro esse componente picturebox
no delphi 7 , utilizo o quickreport 4.5
Everton Eberhardt - 24 de April de 2011 - 12:54
No funciona?
o cdigo do boto desenhar gera um erro!
Vicente Miras - 27 de May de 2011 - 11:06
Bom Dia,
Sei que j foi perguntado abaixo, mas no encontrei a resposta, gostaria
de saber onde encontro o componente PictureBox, no Delphi 7 no tem.
Para adicionar um comentrio voc deve efetuar o login

https://www.codigofonte.net/dicas/delphi/195_codigo-de-barras-ean-13-e-ean-8

8/10

22/05/2015

Cdigo de Barras EAN 13 e EAN 8 > Delphi > CdigoFonte.net

CdigoFonte.net
Curtir

26.003 pessoas curtiram CdigoFonte.net.

Plug-in social do Facebook

Gostou do CdigoFonte.net? Quer indicar a um amigo?


Preencha os campos a seguir.
Seu Nome:
Seu E-mail:
E-mail de seu Amigo:
Indicar

popup enquetes formulrio mural de recado tv texto boto mural bloquear rdio iframe letreiro calculadora codigo fonte rolagem
comentrio ajax usu nfe sistema de noticias votao grid

c coment banne xml contador gratis alerta forum barra de pesquisa

Pesquisar

Busca avanada

Login:
Senha:
Logar-se

Esqueci Senha
Cadastre-se

https://www.codigofonte.net/dicas/delphi/195_codigo-de-barras-ean-13-e-ean-8

9/10

22/05/2015

Cdigo de Barras EAN 13 e EAN 8 > Delphi > CdigoFonte.net

CodigoFonte.net CodigoFonte.eti.br Meu Mural Competiva - Criao de Sites Todos os Direitos Reservados 2002/2010

Anuncie no R7

Acessibilidade

Comunicar erro

Fale com o R7

Mapa do Site

Termos e Condies de Uso

Privacidade

Faa do R7 a sua pgina

Todos os direitos reservados - 2009-2015 Rdio e Televiso Record S/A

https://www.codigofonte.net/dicas/delphi/195_codigo-de-barras-ean-13-e-ean-8

10/10