Upload
flaviano-costa-silva
View
22
Download
3
Embed Size (px)
DESCRIPTION
Código de Barras
Citation preview
22/05/2015 Cdigo de Barras EAN 13 e EAN 8 > Delphi > CdigoFonte.net
https://www.codigofonte.net/dicas/delphi/195_codigo-de-barras-ean-13-e-ean-8 1/10
Sobre
Anuncie
Buscar cdigos
Privacidade
Fale conosco
Ol! Friday, 22 de May de 2015.
CdigosASP.NET
ASP
Cold FusionCGI
C#JavaScript
DelphiPHP
VB.NETVBScript
XML
AssistentesFavoritosBoto DireitoConfirm BoxDatas
Caixa de AlertaTransiesCores em HexaLinks
OutrosArtigos/Dicas
ASP
Banco de DadosBlogsCGI/PerlC# (CSharp)
CSSDelphi.NET
FlashFront-PageHTMLJavaScript
R7 TV Notcias Entretenimento Esportes Vdeos Rede Record E-mail
22/05/2015 Cdigo de Barras EAN 13 e EAN 8 > Delphi > CdigoFonte.net
https://www.codigofonte.net/dicas/delphi/195_codigo-de-barras-ean-13-e-ean-8 2/10
PHP
PythonWebWeb 2.0Windows
WidgetsMural de RecadosContadores
Conta CliquesServios
NotciasWeb Objects
Jogos OnlineFeed RSS
ExpedienteAnuncie
FrumOrkutTwitter
Divulgue-nosPrivacidade
Contato
ParceirosFontes Gratis
KiloByte
HTML Staff
ContedoDelphi
Adicionar a Meu favoritoSunday, 23 de July de 2006
Cdigo de Barras EAN 13 eEAN 8
Nesse artigo mostrarei como desenhar dois tipos de cdigo de barras
EAN 13 e EAN 8, em um PictureBox, no enfocarei nesse artigo aexplicao 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 asfunes 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 aBackColor para Window, um Button altere o Text para Desenhar, seu
formulrio deve ficar parecido com a Figura 1.
22/05/2015 Cdigo de Barras EAN 13 e EAN 8 > Delphi > CdigoFonte.net
https://www.codigofonte.net/dicas/delphi/195_codigo-de-barras-ean-13-e-ean-8 3/10
Figura 1. Como deve ficar os componentes no Formulrio
Declare a Funo EANCodeBin, ela transforma o Cdigo EAN emBinrio essa funo usada pela funo PrintEanBarcode, acompanhe a
Listagem 1.
Listagem 1. Funo EANCodeBIN
1. function EANCodeBIN(strEANCode: string):string;
2. var3. I : Integer;4. str, strAux, StrBinCode, StrCodigo :
String;5. begin6. strEANCode := Trim(strEANCode);7. strAux := strEANCode;8. If (strAux.Length 13) And
(strAux.Length 8) Then9. Exception.Create('Cdigo EAN
Invlido');10. 11. for I := 0 to strEANCode.Length - 1
do12. if (strAux.Chars[I].ToString < '0')
or (strAux.Chars[I].ToString > '9') then13. Exception.Create('Caracter
Invlidos no EAN');14. 15. If (strAux.Length = 13) Then16. begin17. strAux :=
Copy(strAux,2,Length(StrAux));18. 19. Case
Convert.ToInt32(Copy(strEANCode,1,1)) of20. 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. end32. else33. StrCodigo := '0000';34. 35. StrBinCode := '000101';
22/05/2015 Cdigo de Barras EAN 13 e EAN 8 > Delphi > CdigoFonte.net
https://www.codigofonte.net/dicas/delphi/195_codigo-de-barras-ean-13-e-ean-8 4/10
36. For I := 1 To (Length(strAux) div 2)do
37. Case Convert.ToInt32(Copy(strAux, I,1)) of
38. 0:39. begin40. if Copy(StrCodigo, I, 1) = '0'
then41. StrBinCode := StrBinCode +
'0001101'42. else43. StrBinCode := StrBinCode +
'0100111';44. end;45. 1:46. begin47. if Copy(StrCodigo, I, 1) = '0'
then48. StrBinCode := StrBinCode +
'0011001'49. else50. StrBinCode := StrBinCode +
'0110011';51. end;52. 2:53. begin54. if Copy(StrCodigo, I, 1) = '0'
then55. StrBinCode := StrBinCode +
'0010011'56. else57. StrBinCode := StrBinCode +
'0011011';58. end;59. 3:60. begin61. if Copy(StrCodigo, I, 1) = '0'
then62. StrBinCode := StrBinCode +
'0111101'63. else64. StrBinCode := StrBinCode +
'0100001';65. end;66. 4:67. begin68. if Copy(StrCodigo, I, 1) = '0'
then69. StrBinCode := StrBinCode +
'0100011'70. else71. StrBinCode := StrBinCode +
'0011101';72. end;73. 5:74. begin75. if Copy(StrCodigo, I, 1) = '0'
then76. StrBinCode := StrBinCode +
'0110001'77. else78. StrBinCode := StrBinCode +
'0111001';79. end;80. 6:81. begin82. if Copy(StrCodigo, I, 1) = '0'
then
22/05/2015 Cdigo de Barras EAN 13 e EAN 8 > Delphi > CdigoFonte.net
https://www.codigofonte.net/dicas/delphi/195_codigo-de-barras-ean-13-e-ean-8 5/10
83. StrBinCode := StrBinCode +'0101111'
84. else85. StrBinCode := StrBinCode +
'0000101';86. end;87. 7:88. begin89. if Copy(StrCodigo, I, 1) = '0'
then90. StrBinCode := StrBinCode +
'0111011'91. else92. StrBinCode := StrBinCode +
'0010001';93. end;94. 8:95. begin96. if Copy(StrCodigo, I, 1) = '0'
then97. StrBinCode := StrBinCode +
'0110111'98. else99. StrBinCode := StrBinCode +
'0001001';100. end;101. 9:102. begin103. if Copy(StrCodigo, I, 1) = '0'
then104. StrBinCode := StrBinCode +
'0001011'105. else106. StrBinCode := StrBinCode +
'0010111';107. end;108. end;109. StrBinCode := StrBinCode + '01010';110. 111. for I := (Length(strAux) div 2 + 1)
To Length(strAux) do112. case Convert.ToInt32(Copy(strAux,
I, 1)) of113. 0 : StrBinCode := StrBinCode +
'1110010';114. 1 : StrBinCode := StrBinCode +
'1100110';115. 2 : StrBinCode := StrBinCode +
'1101100';116. 3 : StrBinCode := StrBinCode +
'1000010';117. 4 : StrBinCode := StrBinCode +
'1011100';118. 5 : StrBinCode := StrBinCode +
'1001110';119. 6 : StrBinCode := StrBinCode +
'1010000';120. 7 : StrBinCode := StrBinCode +
'1000100';121. 8 : StrBinCode := StrBinCode +
'1001000';122. 9 : StrBinCode := StrBinCode +
'1110100';123. end;124. StrBinCode := StrBinCode +
'101000';125. EANCodeBIN := StrBinCode;126. end;
22/05/2015 Cdigo de Barras EAN 13 e EAN 8 > Delphi > CdigoFonte.net
https://www.codigofonte.net/dicas/delphi/195_codigo-de-barras-ean-13-e-ean-8 6/10
Agora vamos a declarar a funo PrintEANBarCode, necessriopassar os seguintes parmetros, o Cdigo de Barra e o ObjetoPictureBox aonde ser desenhado as Brras do Cdigo de Barra, os
outros parmetros so opcionais, os quatro parmetros seguintes so asposies e tamanho do desenho e o ultimo a fonte da linha queimprimir 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. var6. 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. begin16. StrFormat := StringFormat.Create;17. strEANBin := EANCodeBIN(strEANCode);18. 19. If (FontForText = nil) Then20. FontText := Font.Create('Courier
New', 10)21. else22. FontText := FontForText;23. 24. If sngX1 = (-1) Then25. sngXX1 := 026. else27. sngXX1 := sngX1;28. 29. If sngY1 = (-1) Then30. sngYY1 := 031. else32. sngYY1 := sngY1;33. 34. If sngX2 = (-1) Then35. sngXX2 := objPicBox.Width36. else37. sngXX2 := sngX2;38. 39. If sngY2 = (-1) Then40. sngYY2 := objPicBox.Height41. else42. 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,
22/05/2015 Cdigo de Barras EAN 13 e EAN 8 > Delphi > CdigoFonte.net
https://www.codigofonte.net/dicas/delphi/195_codigo-de-barras-ean-13-e-ean-8 7/10
sngXX1, sngYY1, sngXX2 - sngXX1, sngYY2- sngYY1);
49. 50. sngScaleX := (sngXX2 - sngXX1) /
strEANBin.Length;51. 52. for I := 1 To Length(strEANBin) do53. begin54. If Copy(strEANBin, I, 1) = '1' Then55. begin56. BrushX :=
SolidBrush.Create(objPicBox.ForeColor);57.
objPicBox.CreateGraphics.FillRectangle(BrushX,sngPosX, sngYY1, sngScaleX, sngPosY);
58. end;59. sngPosX := sngXX1 + (I * sngScaleX);60. end;61. strFormat.Alignment :=
StringAlignment.Center;62. strFormat.FormatFlags :=
StringFormatFlags.NoWrap;63. BrushX :=
SolidBrush.Create(objPicBox.ForeColor);64. 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 aFuno 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 umCdigo de Barra e clicar em desenhar que ele desenhar as barras noPictureBox veja a Figura 2 e Figura 3.
Figura 2. Cdigo de Barra EAN 13
22/05/2015 Cdigo de Barras EAN 13 e EAN 8 > Delphi > CdigoFonte.net
https://www.codigofonte.net/dicas/delphi/195_codigo-de-barras-ean-13-e-ean-8 8/10
Figura 3. Cdigo de Barra EAN 8
Abraos a Todos.
Conhea nosso parceiro:
Enviar um ArtigoEnviado por: Emmanuel Alves
Outros artigos
Assine o Feed desta categoria
Classe Helpers - 13/07/2006Procurando Letras, Palavras em um TMemo. - 26/04/2006Programao Orientada a Objetos - 19/03/2005Lendo e gravando arquivos de texto em Delphi - 10/03/2005Ver mais...
Comentrios do artigo [Novo comentrio]
carlos escudeiro - 11 de October de 2008 - 17:46
S faltou o codigo do boto desenharEdilson Alves de Oliveira - 18 de November de 2008 - 17:23onde encontro esse tal de pictueBox no delphi?ELIAS PAULINO - 26 de October de 2009 - 12:59tambem gostaria de saber onde eu encontro esse componente pictureboxno delphi 7 , utilizo o quickreport 4.5
Everton Eberhardt - 24 de April de 2011 - 12:54No funciona?o cdigo do boto desenhar gera um erro!Vicente Miras - 27 de May de 2011 - 11:06Bom 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
0Curtir
22/05/2015 Cdigo de Barras EAN 13 e EAN 8 > Delphi > CdigoFonte.net
https://www.codigofonte.net/dicas/delphi/195_codigo-de-barras-ean-13-e-ean-8 9/10
CdigoFonte.net
26.003 pessoas curtiram CdigoFonte.net.
Plug-in social do Facebook
Curtir
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
22/05/2015 Cdigo de Barras EAN 13 e EAN 8 > Delphi > CdigoFonte.net
https://www.codigofonte.net/dicas/delphi/195_codigo-de-barras-ean-13-e-ean-8 10/10
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