10
Sobre Anuncie Buscar códigos Privacidade Fale conosco Olá! Friday, 22 de May de 2015. 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 R7 TV Notícias Entretenimento Esportes Vídeos Rede Record E-mail

Código de Barras EAN 13 e EAN 8 _ Delphi _ CódigoFonte

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