GARANTIR DESCONTO

Fórum Se for código de barra XXXXXX, então a imagem será YYY.jpg #346790

28/09/2007

0

Olá!

Como que eu poderia fazer isso? É para um PDV de um supermercado... uma tela de consulta de preços. Digito o código de barras, dou um ENTER, e aparece o PRODUTO, PREÇO e a IMAGEM... O produto e o preço, está funcionando. Agora, como que eu faço para aparecer a imagem?

Sendo que a imagem, não ficará salva no banco, mas sim, na pasta do *.EXE do sistema, na pasta IMGPRODUTOS...

Desde já agradeço.
Obrigado!


Lucas_spohr

Lucas_spohr

Responder

Posts

28/09/2007

Mayron Cachina

Olá! Como que eu poderia fazer isso? É para um PDV de um supermercado... uma tela de consulta de preços. Digito o código de barras, dou um ENTER, e aparece o PRODUTO, PREÇO e a IMAGEM... O produto e o preço, está funcionando. Agora, como que eu faço para aparecer a imagem? Sendo que a imagem, não ficará salva no banco, mas sim, na pasta do *.EXE do sistema, na pasta IMGPRODUTOS... Desde já agradeço. Obrigado!


como vc esta cadastrando essa imagem??? usando um caminho no banco???
ou com o mesmo ´numero´ do codigo de barras????

image1.picture.loadfromfile()

vc ta usando isso????


Responder

Gostei + 0

28/09/2007

Lucas_spohr

Opa!

É o seguinte... A imagem, não ficará gravada no banco, não.

O produto, o preço e o próprio código de barras, ficarão gravados no banco. A imagem, neste caso, ficará numa NovaPasta, no mesmo lugar onde está o executável do projeto. Dentro desta ´NovaPasta´, ficarão as imagens dos produtos. Cada imagem, terá como nome, os números de seu determinado código de barras.

Código de Barras: 001212121212
Produto: Pão Sanduíche
Preço: R$ 1,00
Imagem: \NovaPasta\001212121212.jpg

Espero ter sido claro...

Obrigado!


Responder

Gostei + 0

28/09/2007

Mayron Cachina

então ...
é justamente como eu te falei...

vc vai ter q ter um TImage e no evento q esta pegando informações do banco vc vai colocar esse codigo....

img := local do banco + numero do codigo de barras.jpg
Image1.Picture.LoadFromFile(img);


pelo menos foi isso q eu entendi q vc queria...


Responder

Gostei + 0

28/09/2007

Lucas_spohr

neste caso, seria criar uma variável com o nome de img?

por exempo, o executável da minha aplicação está no caminho:
C:\pasta\Pdv

e o banco:
C:\dadospdv\dados

já as imagens, ficariam ali, na pasta do executável da aplicação, com uma pasta com o nome de imagens:
C:\pasta\Pdv\imagens

Como que ficaria o código, juntando os caminhos do banco pra ficar com o número do código de barras num jpg?

Obrigado.


Responder

Gostei + 0

28/09/2007

Mayron Cachina

Blz, vamos lá....

1º esqueça o banco :D ele n servirá de nd pra a gente agora....


2º o método [b:c1a06bfc52]ExtractFilePath(Application.ExeName)[/b:c1a06bfc52] retorna uma String com o caminho do aplicativo... no seu exemplo o C:\pasta\Pdv, com isso vc pode levar seu aplicativo pra qualquer canto e ele vai reconhecer... se for em D:\ ou E:\, ele dará o caminho...

3º vamos a imagem...
O componente TImagem tem o método [b:c1a06bfc52]Picture.LoadFromFile(String)[/b:c1a06bfc52] aqui ele carrega uma imagem de um arquivo qualquer do tipo BMP... pra carregar um JPG vc tem q adicionar:
uses JPG;


pronto agora vamos a carregamento da imagem....
vc vai adicionar na procedure/funcao que vc ta fazendo a leitura no banco a seguinte linha:
var LocImg : String;
...
LocImg := ExtractFilePath(Application.ExeName)+´\imagens´; //variavel q vai guardar o caminho da sua aplicação.
Image1.Picture.LoadFromFile(LocImg + [b]COD_BARRA[/b] + ´.jpg´);
...

bem isso é um exemplo... onde tem [b:c1a06bfc52]COD_BARRA[/b:c1a06bfc52] vc vai colocar o numero/nome do arquivo que será lido pela imagem...

pronto, com isso acho que resolve... n esqueça de colocar o TImage no form :D


Responder

Gostei + 0

29/09/2007

Lucas_spohr

blz cara! quaaase deu certo!

só que... salvei uma imagem de um produto, com o nome 1212.jpg. Porém, na minha aplicação, ao fazer a busca da imagem, ela vai buscar pelo código de barra 0000000001212.jp´g

Pergunto:

Como que eu poderia fazer, para não buscar esses ´zeros´ no início do nome do *.jpg, buscando somente o 1212, forma com que eu salvei a imagem?

E o meu, muito obrigado!!!


Responder

Gostei + 0

29/09/2007

Mayron Cachina

0000000001212.jpg


o Padrão é esse mesmo???

vc pode usar o comando COPY()...
ele funciona assim....
Copy( String , INICIO , FIM )

com ele vc pode pegar so o 1212.jpg... para saber mais sobre ele olhe aqui http://www.delphibasics.co.uk/RTL.asp?Name=Copy

seguinte...n tenho como testar aqui mais usa esse codigo, se esse numero for padrão com os 00000 vai da certo...
Copy(COD_BARRA, 10,18)

bem acho que ai ta pegando so o 1212.jpg, se n tiver certo vc vai testando a sequencia de numeros... n deixe de ler essa página q eu passei ele explica o Copy,
Blz!?


Responder

Gostei + 0

29/09/2007

Adriano Santos

var LocImg : String;
...
LocImg := ExtractFilePath(Application.ExeName)+´\imagens´; //variavel q vai guardar o caminho da sua aplicação.
Image1.Picture.LoadFromFile(LocImg + [b]COD_BARRA[/b] + ´.jpg´);
...
bem isso é um exemplo... onde tem [b:8cf1b1f6e1]COD_BARRA[/b:8cf1b1f6e1] vc vai colocar o numero/nome do arquivo que será lido pela imagem... pronto, com isso acho que resolve... n esqueça de colocar o TImage no form :D

Só um detalhe aqui, se me permitem, o ExtractFilePath(Application.ExeName) já retorna o diretório do executável com barra no final, ou seja, não é necessário concatenar com ´\imagens´. Talvez dê errinho ai, mas é moleza de resolver. :wink:

blz cara! quaaase deu certo! só que... salvei uma imagem de um produto, com o nome 1212.jpg. Porém, na minha aplicação, ao fazer a busca da imagem, ela vai buscar pelo código de barra 0000000001212.jp´g Pergunto: Como que eu poderia fazer, para não buscar esses ´zeros´ no início do nome do *.jpg, buscando somente o 1212, forma com que eu salvei a imagem? E o meu, muito obrigado!!!

Se for só números o nome da sua imagem dê uma formatada com a função StrToFloat(). Veja:

procedure TForm1.Button1Click(Sender: TObject);
var
  CodBarra : Integer;
  NomeFoto: string;
begin
  CodBarra := 0000123123;
  NomeFoto := FloatToStr(CodBarra);
  Edit1.Text := NomeFoto;
end;


Ou ainda criando uma função pra retirar os zeros e retornar já certinho o nome da imagem:

procedure TForm1.Button2Click(Sender: TObject);
var
  CodBarra : string;
  NomeFoto: string;
  function RetornaNomeFoto(ACodBarra: string): string;
  var
    I : Integer;
    S : string;
  begin
    for I := 1 to Length(ACodBarra) do
      if not (ACodBarra[I] = ´0´) then
        S := S + ACodBarra[I];
    Result := S;
  end;
begin
  CodBarra := ´0000123123´;
  NomeFoto := RetornaNomeFoto(CodBarra);
  Edit1.Text := NomeFoto;
end;



Responder

Gostei + 0

29/09/2007

Lucas_spohr

blz, Adriano!?

fiz um teste com a função que vc passou... Até que funcionou!

Mas como que eu poderia implementar este, em meu projeto? Desculpe, mas sou novato ainda na programação! ehehe complica mais, quando se é um projeto pronto, tendo que neste, fazer as alterações! hehe

LocImg := ExtractFilePath(Application.ExeName)+´\produtos\´;
Image2.Picture.LoadFromFile(LocImg + PDO.Produto.FIELDBYNAME(´BARRA´).AsString + ´.jpg´);

Desde já agradeço.
Obrigado!


Responder

Gostei + 0

29/09/2007

Lucas_spohr

digo.. implementar no projeto, no sentido de:

Após feita a função, daí no código acima, colocar a função junto do LocImg... etc, etc...

obrigado!


Responder

Gostei + 0

29/09/2007

Mayron Cachina

blz, Adriano!? fiz um teste com a função que vc passou... Até que funcionou! Mas como que eu poderia implementar este, em meu projeto? Desculpe, mas sou novato ainda na programação! ehehe complica mais, quando se é um projeto pronto, tendo que neste, fazer as alterações! hehe LocImg := ExtractFilePath(Application.ExeName)+´\produtos\´; Image2.Picture.LoadFromFile(LocImg + PDO.Produto.FIELDBYNAME(´BARRA´).AsString + ´.jpg´); Desde já agradeço. Obrigado!

Usa a função que o Adriano disse...
RetornaNomeFoto() e tira a barra do produtos como Adriano disse, deixando ele assim:
LocImg := ExtractFilePath(Application.ExeName)+´produtos\´;

vc pode usar a funcao assim:
LocImg := ExtractFilePath(Application.ExeName)+´produtos\´;
Image2.Picture.LoadFromFile(LocImg + RetornaNomeFoto(PDO.Produto.FIELDBYNAME(´BARRA´).AsString) + ´.jpg´);


para deixar o codigo menos confuso hehehehe:
LocImg := ExtractFilePath(Application.ExeName)+´produtos\´;
nomeFoto := RetornaNomeFoto(PDO.Produto.FIELDBYNAME(´BARRA´).AsString);
Image2.Picture.LoadFromFile(LocImg + nomeFoto + ´.jpg´);


eh isso Adriano? me corrija se tiver errado....
Tenta isso ae ...


Responder

Gostei + 0

29/09/2007

Lucas_spohr

Estou fazendo assim:

function RetornaNomeFoto(ACodBarra: string): string;
var
I : Integer;
S : string;
CodBarra : string;
NomeFoto: string;
begin
for I := 1 to Length(ACodBarra) do
if not (ACodBarra[I] = ´0´) then
S := S + ACodBarra[I];
Result := S;
CodBarra := PDO.Produto.fieldbyname(´BARRA´).AsString;
NomeFoto := RetornaNomeFoto(CodBarra);
end;

............

procedure...........
var .....
begin.....
RetornaNomeFoto(ACodBarra:string); // pra usar a Function
LocImg := ExtractFilePath(Application.ExeName)+´produtos\´;
nomeFoto := RetornaNomeFoto(PDO.Produto.FIELDBYNAME(´BARRA´).AsString);
Image2.Picture.LoadFromFile(LocImg + nomeFoto + ´.jpg´);
end;


Mas não compila!!

Eu digito o nome da função RetornaNomeFoto, daí depois do RetornaNomeFoto, dentro dos parenteses, aparece uma ´observação´ para escrever o ACodBarra:String, daí digito isso, e dá erro!!

O que estou fazendo de errado?

Obrigado!


Responder

Gostei + 0

29/09/2007

Mayron Cachina

function RetornaNomeFoto(ACodBarra: string): string;


n seria function TFORM1.RetornaNomeFoto......
TForm1 seria o nome de seu formulario...
vc ta declarando ele la na classe do form....

type
  Tform1 = class(TForm)
    ....
    function RetornaNomeFoto(ACodBarra: string): string; 
    ...



Responder

Gostei + 0

01/10/2007

Lucas_spohr

e agora, como que eu faço pra usar a function e passar os parâmetros??

parece tão simples isso! tenho que dar uma estudada nisso... (if, while, etc, etc). Aproveitando o tópico, gostaria de já ir perguntando algum material bom, que fale sobre isso...

Obrigado!


Responder

Gostei + 0

01/10/2007

Lucas_spohr

aee!!

Fiz da seguinte forma, com ajuda de um colega meu:

function RetornaNomeFoto(ACodBarra: string): string;
var
I : Integer;
S : string;
begin
for I := 1 to Length(ACodBarra) do
if not (ACodBarra[I] = ´0´) then
S := S + ACodBarra[I];
Result := S;
end;

// Para usar a function, etc, et...
RetornaNomeFoto(PDO.Produto.FieldByName(´BARRA´).AsString);
LocImg := ExtractFilePath(Application.ExeName)+´produtos\´;
Image2.Picture.LoadFromFile(LocImg + RetornaNomeFoto(PDO.Produto.FieldByName(´BARRA´).AsString) + ´.jpg´);


Só que agora, o que eu precisaria fazer, é o seguinte:

Exemplo:
Procuro pelo código de barras 109. Daí na imagem, a função está removendo o 0, ficando como 19.jpg. Como que eu poderia incrementar a minha function, fazendo com que elimine apenas os ´zeros´ iniciais, sem remover os ´zeros´ do ´meio´?

grato...


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar