Gravar o path em um campo da tabela e depois mostrar em um TImage.
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
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
Curtidas 0
Respostas
Marco Salles
16/07/2011
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 ??????
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 ??????
GOSTEI 0
Valdir Lima
16/07/2011
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
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
GOSTEI 0
Marco Salles
16/07/2011
[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..
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..
GOSTEI 0
Alan Souza
16/07/2011
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;GOSTEI 0
Valdir Lima
16/07/2011
[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).
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..
GOSTEI 0
Valdir Lima
16/07/2011
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;
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;
GOSTEI 0
Alan Souza
16/07/2011
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;
GOSTEI 0
José
16/07/2011
Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
GOSTEI 0