Aqui está uma dica muito interessante para gerar código de barras em Delphi.
O código de barras é gerado em um TImage a partir de uma sequencia de números informados.
Criei um Form com um TButton, um TImage e um TEdit.
A procedure é a seguinte:
'10100', '01100', '00011', '10010', '01010');
var
Numero : String;
Cod1 : Array[1..1000] Of Char;
Cod2 : Array[1..1000] Of Char;
Codigo : Array[1..1000] Of Char;
Digito : String;
c1,c2 : Integer;
x,y,z,h : LongInt;
a,b,c,d : TPoint;
I : Boolean;
begin
Numero := Cod;
for x := 1 to 1000 Do
begin
Cod1 [x] := #0;
Cod2 [x] := #0;
Codigo[x] := #0;
end;
c1 := 1;
c2 := 1;
x := 1;
for y := 1 to Length(Numero) div 2 do
begin
Digito := Digitos[Numero[x ]];
for z := 1 to 5 do
begin
Cod1[c1] := Digito[z];
Inc(c1);
end;
Digito := Digitos[Numero[x+1]];
for z := 1 to 5 do
begin
Cod2[c2] := Digito[z];
Inc(c2);
end;
Inc(x,2);
end;
y := 5;
Codigo[1] := '0';
Codigo[2] := '0';
Codigo[3] := '0';
Codigo[4] := '0';
for x := 1 to c1-1 do
begin
Codigo[y] := Cod1[x]; Inc(y);
Codigo[y] := Cod2[x]; Inc(y);
end;
Codigo[y] := '1'; Inc(y);
Codigo[y] := '0'; Inc(y);
Codigo[y] := '0';
Imagem.Pen .Width := 1;
Imagem.Brush.Color := ClWhite;
Imagem.Pen .Color := ClWhite;
a.x := 1; a.y := 0;
b.x := 1; b.y := 79;
c.x := 2000; c.y := 79;
d.x := 2000; d.y := 0;
Imagem.Polygon([a,b,c,d]);
Imagem.Brush.Color := ClBlack;
Imagem.Pen .Color := ClBlack;
x := 0;
i := True;
for y:=1 to 1000 do
begin
if Codigo[y] <> #0 then
begin
if Codigo[y] = '0' then
h := 1
else
h := 3;
a.x := x; a.y := 0;
b.x := x; b.y := 79;
c.x := x+h-1; c.y := 79;
d.x := x+h-1; d.y := 0;
if i then
Imagem.Polygon([a,b,c,d]);
i := not(i);
x := x + h;
end;
end;
end;
Agora basta chamar a procedure a partir do TButton;
GerarCodigo(Edit1.text,Image1.Canvas);
Resultado:
É isso aí galera, abraço e até a próxima.
O código de barras é gerado em um TImage a partir de uma sequencia de números informados.
Criei um Form com um TButton, um TImage e um TEdit.
A procedure é a seguinte:
procedure GerarCodigo(Cod : String; Imagem : TCanvas);
CONST digitos : array['0'..'9'] of string[5]= ('00110', '10001', '01001', '11000', '00101','10100', '01100', '00011', '10010', '01010');
var
Numero : String;
Cod1 : Array[1..1000] Of Char;
Cod2 : Array[1..1000] Of Char;
Codigo : Array[1..1000] Of Char;
Digito : String;
c1,c2 : Integer;
x,y,z,h : LongInt;
a,b,c,d : TPoint;
I : Boolean;
begin
Numero := Cod;
for x := 1 to 1000 Do
begin
Cod1 [x] := #0;
Cod2 [x] := #0;
Codigo[x] := #0;
end;
c1 := 1;
c2 := 1;
x := 1;
for y := 1 to Length(Numero) div 2 do
begin
Digito := Digitos[Numero[x ]];
for z := 1 to 5 do
begin
Cod1[c1] := Digito[z];
Inc(c1);
end;
Digito := Digitos[Numero[x+1]];
for z := 1 to 5 do
begin
Cod2[c2] := Digito[z];
Inc(c2);
end;
Inc(x,2);
end;
y := 5;
Codigo[1] := '0';
Codigo[2] := '0';
Codigo[3] := '0';
Codigo[4] := '0';
for x := 1 to c1-1 do
begin
Codigo[y] := Cod1[x]; Inc(y);
Codigo[y] := Cod2[x]; Inc(y);
end;
Codigo[y] := '1'; Inc(y);
Codigo[y] := '0'; Inc(y);
Codigo[y] := '0';
Imagem.Pen .Width := 1;
Imagem.Brush.Color := ClWhite;
Imagem.Pen .Color := ClWhite;
a.x := 1; a.y := 0;
b.x := 1; b.y := 79;
c.x := 2000; c.y := 79;
d.x := 2000; d.y := 0;
Imagem.Polygon([a,b,c,d]);
Imagem.Brush.Color := ClBlack;
Imagem.Pen .Color := ClBlack;
x := 0;
i := True;
for y:=1 to 1000 do
begin
if Codigo[y] <> #0 then
begin
if Codigo[y] = '0' then
h := 1
else
h := 3;
a.x := x; a.y := 0;
b.x := x; b.y := 79;
c.x := x+h-1; c.y := 79;
d.x := x+h-1; d.y := 0;
if i then
Imagem.Polygon([a,b,c,d]);
i := not(i);
x := x + h;
end;
end;
end;
Agora basta chamar a procedure a partir do TButton;
GerarCodigo(Edit1.text,Image1.Canvas);
Resultado:
É isso aí galera, abraço e até a próxima.
Blz, mas a pergunta e a seguinte: pode ser usado pra processamento bancário como bradesco ou banco do brasil?
ResponderExcluirOlá, infelizmente eu não sei responder sua pergunta, pois ainda não tive tempo de testar. Qualquer coisa eu te aviso.
ResponderExcluirAbraço
Este comentário foi removido pelo autor.
Excluirnao
ResponderExcluirComo salvar uma imagem em *.png ou outro formato?
ResponderExcluirUm pouco atrasado mas ae vai...
ResponderExcluirNÃO... cada banco tem suas proprias regras para gerar o codigo de barras. Tem que entrar em contato com o banco e solicitar as regras do mesmo para poder gerar o algoritimo necessário conforme as regras.
opa como faria para colocar o modulo 11 e 2de5 intercalado mais DV
ResponderExcluir