Você está na página 1de 10

Mp4 | Celular | Notebook

Anuncie

Buscar códigos

Fale conosco

Olá! Sexta Feira, 26 de Setembro de 2008.

Códigos
ASP.NET
ASP
Cold Fusion
CGI
C#
JavaScript
Delphi
PHP
VB.NET
VBScript
XML
Assistentes
Favoritos
Botão Direito
Confirm Box
Datas
Caixa de Alerta
Transições
Cores em Hexa
Links
Outros
Artigos/Dicas
ASP
Banco de Dados
Blogs
CGI/Perl
C# (CSharp)
CSS
Delphi
.NET
Flash
Front-Page
HTML
JavaScript
PHP
Python
Web
Web 2.0
Windows
Gadgets
Mural de Recados
Contadores
Conta Cliques
Serviços
Notícias
Web Objects
GamesDaNet
Chama MSN
Jogos Online
Feed RSS
Expediente
Anuncie
Fórum
Bate-papo
Orkut
Divulgue-nos
Privacidade
Contato
Parceiros
Fontes Gratis
Br-Designer.com
Notebooks
Iscambo.com
Garu Downloads
Oficina da Net
Sonhos
.NET User Group
Piadas online
GMasters
HTML Staff
CriarWeb.com

Gps Garmin Etrex Mp4 Mp3 Pen Drive


Legend ** P.R... Fm 2gb Garan...
R$319.00 R$71.99
Compre Compre
Anúncios Google Delphi 7 EAN 128 Códigos EAN Software EAN Etiquetas

Conteúdo
Delphi
Adicionar a Meu favorito
Domingo, 23 de Julho de 2006
Código de Barras EAN 13 e EAN 8
Nesse artigo mostrarei como desenhar dois tipos de código de barras EAN 13 e EAN 8, em um
PictureBox, não enfocarei nesse artigo a explicação de como construir o algaritimo de desenho do
Código de Barra, é necessário um estudo especifico no Padrão EAN para entender como é construído
um Código de Barra, estaria disponibilizando as funções necessárias e explicando o processo para a
confecção de um aplicativo simples.

Em outro artigo estarei demonstrando como imprimir esse Código de barra usando o componente
PrintDocument.

Vamos iniciar uma novo Projeto Windows Forms, coloque um Label altere o Text para Código de
Barra, um TextBox, um PictureBox altere a BackColor para Window, um Button altere o Text para
Desenhar, seu formulário deve ficar parecido com a Figura 1.

Figura 1. Como deve ficar os componentes no Formulário

Declare a Função EANCodeBin, ela transforma o Código EAN em Binário essa função é usada pela
função PrintEanBarcode, acompanhe a Listagem 1.

Listagem 1. Função EANCodeBIN

function EANCodeBIN(strEANCode: string): string;


var
I : Integer;
str, strAux, StrBinCode, StrCodigo : String;
begin
strEANCode := Trim(strEANCode);
strAux := strEANCode;
If (strAux.Length <> 13) And (strAux.Length <> 8) Then
Exception.Create('Código EAN Inválido');

for I := 0 to strEANCode.Length - 1 do
if (strAux.Chars[I].ToString < '0') or (strAux.Chars[I].ToString > '9') then
Exception.Create('Caracter Inválidos no EAN');

If (strAux.Length = 13) Then


begin
strAux := Copy(strAux,2,Length(StrAux));
Case Convert.ToInt32(Copy(strEANCode,1,1)) of
0: StrCodigo := '000000';
1: StrCodigo := '001011';
2: StrCodigo := '001101';
3: StrCodigo := '001110';
4: StrCodigo := '010011';
5: StrCodigo := '011001';
6: StrCodigo := '011100';
7: StrCodigo := '010101';
8: StrCodigo := '010110';
9: StrCodigo := '011010';
end;
end
else
StrCodigo := '0000';

StrBinCode := '000101';
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
StrBinCode := StrBinCode + '0101111'
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;

Agora vamos a declarar a função PrintEANBarCode, é necessário passar os seguintes parâmetros, o


Código de Barra e o Objeto PictureBox aonde será desenhado as Brras do Código de Barra, os outros
parâmetros são opcionais, os quatro parâmetros seguintes são as posições e tamanho do desenho e o
ultimo é a fonte da linha que imprimirá o código de barra, acompanhe a Listagem 2.

Listagem 2. Função PrintEANCode

procedure PrintEANBarCode(strEANCode : String; objPicBox : PictureBox;


const sngX1 : Single = -1; const sngY1 : Single = -1;
const sngX2 : Single = -1; const sngY2 : Single = -1;
const FontForText: Font = nil);
var
I : Integer;
sngPosX : Single;
sngPosY : Single;
sngScaleX : Single;
strEANBin : String;
strFormat : StringFormat;
FontText : Font;
sngXX1, sngYY1, sngXX2, sngYY2 : Single;
BrushX : Brush;
begin
StrFormat := StringFormat.Create;
strEANBin := EANCodeBIN(strEANCode);

If (FontForText = nil) Then


FontText := Font.Create('Courier New', 10)
else
FontText := FontForText;

If sngX1 = (-1) Then


sngXX1 := 0
else
sngXX1 := sngX1;

If sngY1 = (-1) Then


sngYY1 := 0
else
sngYY1 := sngY1;

If sngX2 = (-1) Then


sngXX2 := objPicBox.Width
else
sngXX2 := sngX2;

If sngY2 = (-1) Then


sngYY2 := objPicBox.Height
else
sngYY2 := sngY2;

sngPosX := sngXX1;
sngPosY := sngYY2 - (1.5 * FontText.Height);

BrushX := SolidBrush.Create(objPicBox.BackColor);
objPicBox.CreateGraphics.FillRectangle(BrushX, sngXX1, sngYY1, sngXX2 - sngXX1, sngYY2

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

end;

No evento Click do Button1 coloque o seguinte código para executar a Função de desenhar as barras
do código de barra, Listagem 3.
Listagem 3. Executando a Função para Desenhar Barra

PrintEANBarCode(TextBox1.Text, PictureBox1, 10, 10, PictureBox1.Width - 20, PictureBox1.Hei

Não esqueça de colocar no uses SysUtils, agora basta você digitar um Código de Barra e clicar em
desenhar que ele desenhará as barras no PictureBox veja a Figura 2 e Figura 3.

Figura 2. Código de Barra EAN 13

Figura 3. Código de Barra EAN 8

Abraços a Todos.

Conheça nosso parceiro:


Enviar um Artigo
Enviado por: Emmanuel Alves

Etiqueta com codigo Barra


Etiqueta com codigo barra, plaqueta p/
patrimonio em aluminio aço vinil
www.3tecinfor.com.br

Tudo em Cód de Barras


Os melhores preços e serviços Zebra,
Argox, Intermec, Metrologic
www.4next.com.br

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

Comentários do artigo [Novo comentário]


Nenhum comentário, seja o primeiro a comentar.
Para adicionar um comentário você deve efetuar o login

Gostou do CódigoFonte.net? Quer indicar a um amigo?


Preencha os campos a seguir.
Seu Nome:
Seu E-mail:
E-mail de seu Amigo:
www.speedcase.com.br Comentários - Anúncios Google

» Busca avançada

Login:
Senha:

» Esqueci Senha
» Cadastre-se

Buscas:
- Mp4
- Celular
- Notebook
- Camera Digital
- Iphone
- Ipod
- Pen Drive

Categorias:
- Eletrônicos, Áudio e
Vídeo
- Informática
- Câmeras e Foto
- Celulares e Telefonia
- Acessórios para
Veículos
- Móveis e Decoração
» Procurando iPhones?
... e que tal iPods?

! "

Procurando Notebooks, Câmeras Digitais, iPhones?

CompreDeTudo.com

Ingresso no Celular
Utilize o celular para
entrar em e- ventos,
cinemas, etc. Fácil !
www.e-deploy.com.br

Plaquetas de
Patrimônio
Etiquetas adesivas,
plaquetas de identificação
com código de barras.
www.csp-conpat.com.br

Leitores Código de
Barras
Leitores industriais
leves/robustos com
tecnologia Bluetooth e RF
www.gengscann.com.br

Argox OS214 -
Libermac
Impressora de Código de
Barras Promoção por
tempo limitado
www.libermac.com

Automasite -
0800.7733880
Argox OS214TT R$
609,00 nota fiscal 3x sem
juros, frete grátis
www.automasite.com.br

Você também pode gostar