Fórum Gravar o path em um campo da tabela e depois mostrar em um TImage. #405100

16/07/2011

0

Bom dia para os amigos que sempre nos ajudam,   Eu estou com problemas na manipulação de imagens, estou utilizando o delpui 7, banco db paradox, eu preciso criar um diretório para cada grupo de fotos de imóveis (para a imobiliária) e depois quando necessário eu seleciono o caminho em um campo de um dbgrid e o sistema deveria abrir aquele diretório e me mostrar uma foto de cada vez.   Conforme abaixo eu já gravo a imagem e o path na tabela atual mas o path vem sempre no primeiro registro da tabela e não no registro (codgo) que estou editando.       procedure T_imovel.BitBtn3Click(Sender: TObject);
var
  Origem, Destino, caminho: string;
begin
  caminho := 'C:\Fotos\' + qim.FieldByName('CODIGO').AsString;
  if  not DirectoryExists(caminho) then
    CreateDir(caminho);
  if OpenPictureDialog1.Execute then
  begin
    origem := OpenPictureDialog1.FileName;
    Tabimovel.Open;
    Tabimovel.Edit;
    Tabimovelcaminho.AsString:= Caminho;
    Tabimovel.Post;
  Image1.Picture.LoadFromFile(Tabimovelcaminho.value); end;
end;
  Já pesquisei na internet e já tentei de várias formas mas não consegui, se alguém puder me ajudar desde já eu agradeço.     Atenciosamente.     Limas
Valdir Lima

Valdir Lima

Responder

Posts

17/07/2011

Marco Salles

caminho é um diretório é um arquivo o que é caminho ???

Vc testa como direttio e depois vc atribui como Arquivo ??


if  not DirectoryExists(caminho) then // Aqui testa como diretório  ????


Tabimovelcaminho.AsString:= Caminho; // Aqui atribui como File Nme Arquivo  ??????
 
Responder

Gostei + 0

17/07/2011

Valdir Lima

  Olá Marco António, tudo bem?   É mais ou menos aquilo que você perguntou, o código abaixo já está gravando o path, está arquivando as imagens no devido diretório conforme o código do imóvel, só que o path (caminho) está sendo gravado sempre na primeira linha da tabela, e não sei como mostrar as imagens (buscar no diretório), eu estou utilizando um dbgrid com o oncellclick e mostra uma imagem só e eu preciso mostrar todas as imagens, uma de cada vez.       procedure T_imovel.BitBtn3Click(Sender: TObject);
var
  Origem, Destino, caminho: string;
begin
  caminho := 'C:\Fotos\' + qim.FieldByName('CODIGO').AsString; //Este é o caminho para o diretório C:\Fotos
  if  not DirectoryExists(caminho) then  //Se ele não existir vai ser criado com o 'Código' da Query, então estou 
    CreateDir(caminho);                            testando como diretório e arquivo que é o path   if OpenPictureDialog1.Execute then
  begin
    origem := OpenPictureDialog1.FileName;
    Tabimovel.Open;
    Tabimovel.Edit;
    Tabimovelcaminho.AsString:= Caminho; //Aqui eu estou atribuindo o nome do arquivo (Path) ao campo 
    Tabimovel.Post;                                         caminho da tabela     Delete(Origem, 1, Length(ExtractFilePath(OpenPictureDialog1.FileName))); //Aqui eu pego só o nome do 
    Destino := caminho + '\' + origem;                                                                   arquivo para guardar a foto
    CopyFile(PChar(Origem), PChar(Destino), False);  
  Image1.Picture.LoadFromFile(Tabimovelcaminho.value); end;
end;
  Se você puder me ajudar eu te agradeço.     Atenciosamente.     Limas
Responder

Gostei + 0

18/07/2011

Marco Salles

[QUOTE]
eu estou utilizando um dbgrid com o oncellclick e mostra uma imagem só e eu preciso mostrar todas as imagens, uma de cada vez.[/QUOTE]

Então voce deve utilizar o evento do DataSet ( no caso parece que vc esta utilizando TTable > BDE ) que disparam
quando vc movimenta o Curosr de Dados ..  E neste evento fazer a leitura do field que contem o caminho e
passa-lo ao propriedade loadformfile do TImage..
Responder

Gostei + 0

18/07/2011

Alan Souza

suponha que seu código seja 1234
procedure T_imovel.BitBtn3Click(Sender: TObject);
var
  Origem, Destino, caminho: string;
begin
  caminho := 'C:\Fotos\' + qim.FieldByName('CODIGO').AsString + '\'; //caminho = 'C:\Fotos\1234\', OK?
  if  not DirectoryExists(caminho) then  //aqui vc está testando se existe uma pasta "C:\Fotos\1234\, se não existir será criado
    CreateDir(caminho);                              if OpenPictureDialog1.Execute then
  begin
    origem := OpenPictureDialog1.FileName;  //pega o caminho + nome do arquivo, 'D:\Imagens\Imagem1.bmp', por exemplo    Destino := caminho + ExtractFileName(origem); //caminho + nome de arquivo. 'C:\Fotos\1234\Imagem1.bmp'    Tabimovel.Open;
    Tabimovel.Edit;
    Tabimovelcaminho.AsString:= Destino;     Tabimovel.Post;                                        CopyFile(PChar(Origem), PChar(Destino), False);  
    Image1.Picture.LoadFromFile(Destino);end;
end;

 
Responder

Gostei + 0

18/07/2011

Valdir Lima

[QUOTE]
eu estou utilizando um dbgrid com o oncellclick e mostra uma imagem só e eu preciso mostrar todas as imagens, uma de cada vez.[/QUOTE]

Então voce deve utilizar o evento do DataSet ( no caso parece que vc esta utilizando TTable > BDE ) que disparam
quando vc movimenta o Curosr de Dados ..  E neste evento fazer a leitura do field que contem o caminho e
passa-lo ao propriedade loadformfile do TImage..
    É isto mesmo só que dai para frente eu não estou conseguindo montar, se você pudr me dar umas dicas sobre o evento do DataSet, o que eu utilizo para visualizar uma imagem de cada vez já que são várias imagens para cada pasta (diretorio).
Responder

Gostei + 0

18/07/2011

Valdir Lima

Bom dia Alan,   É exatamente o que você descreveu, só que o Origem eu não utilizo mais porque ele já me deu o dados que tinha no D:\, eu vou usar exatamente o que você citou e se não existir será criado. Dai para frente o caminho já está sendo gravado no campo caminho da minha tabela, eu preciso agora é mostrar as fotos que estão neste caminho (diretório), lembrando que cada pasta, no caso a 1234 pode existir várias fotos.       procedure T_imovel.BitBtn3Click(Sender: TObject);
var
  Origem, Destino, caminho: string;
begin
  caminho := 'C:\Fotos\' + qim.FieldByName('CODIGO').AsString + '\'; //caminho = 'C:\Fotos\1234\', OK?
  if  not DirectoryExists(caminho) then  //aqui vc está testando se existe uma pasta "C:\Fotos\1234\, se não existir será criado
    CreateDir(caminho);                               if OpenPictureDialog1.Execute then
  begin
    origem := OpenPictureDialog1.FileName;  //pega o caminho + nome do arquivo, 'D:\Imagens\Imagem1.bmp', por exemplo     Destino := caminho + ExtractFileName(origem); //caminho + nome de arquivo. 'C:\Fotos\1234\Imagem1.bmp'     Tabimovel.Open;
    Tabimovel.Edit;
    Tabimovelcaminho.AsString:= Caminho;      Tabimovel.Post;                                         CopyFile(PChar(Origem), PChar(Destino), False);  
    Image1.Picture.LoadFromFile(Destino); end;
end;
Responder

Gostei + 0

18/07/2011

Alan Souza

do jeito que eu fiz o caminho do arquivo é guardado, não somente da pasta. Então se for necessário "navegar" entre as imagens vc pode usar o evento AfterScroll do seu dataset pra sempre carregar a imagem cujo caminho está salvo no banco:
procedure TabImovelAfterScroll(DataSet: TDataSet);begin  Image1.Picture.LoadFormFile(TabImovelCaminho.AsString);end; 
Responder

Gostei + 0

09/05/2013

José

Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
Responder

Gostei + 0

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

Aceitar