Erro ao clicar no DBGrid para visualizar uma foto cadastrada no banco de dados.

12/10/2019

0

Ola Pessoal!!

Antes de tudo gostaria de agradecer a todos que participa este forum, o qual sempre encontro soluções para
meus problemas.

Bom!! Estou precisando de uma ajuda do conhecimento de vocês para solucionar um pequeno problema que venho
enfrentando a mais de um mês. O problema é o seguinte:

Estou desenvolvendo um sistema PDV Fiscal no Delphi 10.3.2, porem no cadastro de produtos, eu coloquei uma procedure chamada:
-CarregarImgPadrao

E coloquei os procedimento como abaixo.
=============================================
procedure TFrmCadProdutos.CarregarImgPadrao;
begin
CaminhoImg := ExtractFileDir(GetCurrentDir) + '\Debug\img\SemFoto.jpg';
ImgFoto.Picture.LoadFromFile(CaminhoImg);
end;


Abaixo coloquei um procedimento padrão para recuperar imagem no banco de dados, acontece que ao clicar no
DBGrid, e seleciono uma linha no DBGrid do produto já cadastrado, aparece uma mensagem de erro informando o seguinte:

- Unsupported stream format.

No meu formulário coloquei um OpenPictureDialog mas só está aceitando imagem com extensão .png

Este procedimento eu copiei do curso que estou fazendo para recuperar imagem do banco de dados.



//PROCEDIMENTO PADRÃO PARA RECUPERAR FOTO DO BANCO///

procedure ExibeFoto(DataSet : TDataSet; BlobFieldName : String; ImageExibicao :TImage);
var MemoryStream:TMemoryStream; jpg : TPicture;
const
OffsetMemoryStream : Int64 = 0;
begin
if not(DataSet.IsEmpty) and
not((DataSet.FieldByName(BlobFieldName) as TBlobField).IsNull) then
try
MemoryStream := TMemoryStream.Create;
Jpg := TPicture.Create;
(DataSet.FieldByName(BlobFieldName) as
TBlobField).SaveToStream(MemoryStream);
MemoryStream.Position := OffsetMemoryStream;
Jpg.LoadFromStream(MemoryStream);
ImageExibicao.Picture.Assign(Jpg);
finally
//Jpg.Free;
MemoryStream.Free;
end
else
ImageExibicao.Picture := Nil;
end;

no DBGrid eu coloquei as seguintes linhas de comando:

procedure TFrmCadProdutos.DgDetalhesCellClick(Column: TColumn);
begin
HabilitarCampos;

DM.TabProdutos.Edit;

EdtNome.Text := DM.QryTabProdutos.FieldByName('nome').Value;
EdtDescricao.Text := DM.QryTabProdutos.FieldByName('descricao').Value;
EdtValor.Text := DM.QryTabProdutos.FieldByName('valor').Value;
EdtCodigo.Text := DM.QryTabProdutos.FieldByName('codigo').Value;
GerarCodigo(EdtCodigo.Text, ImgCodigo.Canvas);
id := DM.QryTabProdutos.FieldByName('id').Value;
CodigoProduto := DM.QryTabProdutos.FieldByName('codigo').Value;

if DM.QryTabProdutos.FieldByName('imagem').Value <> null then
ExibeFoto(DM.QryTabProdutos, 'imagem', ImgFoto);

//AÇÕES DOS BOTÕES
BtnNovo.Enabled := false;
BtnSalvar.Enabled := false;
BtnEditar.Enabled := true;
BtnExcluir.Enabled := true;
BtnCancelar.Enabled := true;
BtnInserirFoto.Enabled := true;
BtnGerarCodigo.Enabled := true;
BtnImprimir.Enabled := true;
end;



Já refiz inúmeras vezes o formulário de cadastro de produtos porem não conseguir descobrir onde estou errando
gostaria muito dos conhecimentos de vocês para me da uma diga ou como resolver este impasse que estou tendo a mas de um mês
o qual não consigo prossegui no curso que estou fazendo para desenvolver este sistema.

Desde já agradeço a ajuda de todos vocês.
José Soares

José Soares

Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar