Ir para conteúdo
  • Cadastre-se

dev botao

Logo não imprime ao usar a propriedade ACBrSATExtratoFortes1.PictureLogo.Graphic


Ver Solução Respondido por Daniel Simoes,
  • Este tópico foi criado há 2050 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Administradores
Postado

Após atualizar meu Acbr ontem a impressão do logo do cupom Sat parou de funcionar, anteriormente usava a propriedade ACBrSATExtratoFortes1.PictureLogo.Graphic para passar uma imagem salva no banco de dados para imprimir o logo no extrado do sat, porém após atualizar parou de funcionar.

A imagem do banco de dados é convertida para Stream antes de passar ao componente.

ImgStream := pDataSet.CreateBlobStream(pCampo,bmRead);

Percebi que usando a propriedade ACBrSATExtratoFortes1.Logo e passando o caminho físico onde está o logo voltou a funcionar, porém gostaria de usar o logo que já está no banco, pois já tenho muitos clientes com essa estrutura, onde a mudança irá impactar em grande esforço na atualização da versão do sistema nos clientes

Att.

 

  • Curtir 2
Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Fundadores
Postado

segue minha rotina atual...
ACBrSATExtratoFortes1.PictureLogo.Graphic:= LerImagem(DM_Principal.CDSParametroSistema,DM_Principal.CDSParametroSistemaPALOGOCFE);

o CDSParametroSistemaPALOGOCFE é do tipo Blob, segue a função LerImagem qual pega a imagem do banco e converte ela devolta para um JPG
 

function LerImagem(pDataSet:TDataSet;pCampo:TField):TJPEGImage;
var ImgStream:TStream;
    ImgJpg: TJPEGImage;
begin
  //..resultado nulo;
  Result:=nil;
  //criando as variáveis;
  ImgStream := TStream.Create;
  ImgJpg := TJPEGImage.Create;
  //..abre o campo do dataset e armazena em ImgStream o conteúdo.
  ImgStream := pDataSet.CreateBlobStream(pCampo,bmRead);
  if ImgStream.Size > 0 then
  begin
    ImgJpg.LoadFromStream(ImgStream);
    Result:=ImgJpg;
  end;
end;




só lembrando, quando passo o caminho físico do JPG na propriedade LOGO, volta a funcionar normal, porém ao fazer essa mudança isso implicará na atualização de todos clientes pois teremos que indicar manualmente cliente por cliente o caminho da logo da empresa... por essa razão gostariamos de continuar usando a propriedade PictureLogo.Graphic para que não houvesse impactos na atualização

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Fundadores
Postado

Notei que na sua rotina, há vários Memory Leaks... ou seja, vários objetos são criados e nunca destruídos... isso poderia a longo prazo, comprometer a memória do sistema...

Segue abaixo, um exemplo de leitura usando LoadFromStream, que pode ser adaptado a sua necessida

procedure TForm1.Button1Click(Sender: TObject);
var
  AStream: TMemoryStream;

  procedure LerImagem(AStream: TStream; pCampo:TField);
  begin
    //..abre o campo do dataset e armazena em ImgStream o conteúdo.
    TBlobField(pCampo).SaveToStream(AStream);
  end;

begin
  AStream := TMemoryStream.Create;
  try
    LerImagem(AStream, SQLTable1.FieldByName('IMAGEM_BLOB'));
    ACBrSATExtratoFortes1.PictureLogo.LoadFromStream(AStream);
  finally
     AStream.Free;
  end;
end;

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Fundadores
Postado

Parece que as versões mais antigas do Delphi, não tem o LoadFromStream no TPicture... ou seja... o código abaixo, não compilaria...

    ACBrSATExtratoFortes1.PictureLogo.LoadFromStream(AStream);

Então estou postando uma nova  versão, que cria um TJPGImage e atribui ele a propriedade, usando o TPicture.Assign

procedure TForm1.Button1Click(Sender: TObject);
var
  AStream: TMemoryStream;
  AJPG: TJPEGImage;

  procedure LerImagem(AStream: TStream; pCampo:TField);
  begin
    //..abre o campo do dataset e armazena em ImgStream o conteúdo.
    TBlobField(pCampo).SaveToStream(AStream);
  end;

begin
  AStream := TMemoryStream.Create;
  AJPG := TJPEGImage.Create;
  try
    // Le a imagem do BD para um Stream
    LerImagem(AStream, SQLTable1.FieldByName('IMAGEM_BLOB'));
    // Carrega a Imagem em TJPEGImage
    AStream.Position := 0;
    AJPG.LoadFromStream(AStream);
    // Copia a imagem em PictureLogo
    ACBrSATExtratoFortes1.PictureLogo.Assign(AJPG);
  finally
    // Libera objetos criados
    AStream.Free;
    AJPG.Free;
  end;
end

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Administradores
Postado

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

  • Curtir 1
Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Este tópico foi criado há 2050 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.