Fórum Blob to QuickReport #380221
28/06/2010
0
Caros colegas, estou precisando imprimir no quickreport o conteúdo de um campo blob do Firebird contendo texto formatado e/ou imagens.
Se eu conseguisse copiar para o Clipboard o conteúdo deste campo blob, recuperado através de um Stream, já ajudaria.
Alguém já fez isto??
Agradeço.
Weliton Oliveira
Curtir tópico
+ 0Posts
28/06/2010
Marcos Silva
Mas se quer copiar para um stream, basta usar:
SeuDatasetSeuCampoBlob.SaveToStream( VariavelStream );
ou
TBlobField( Dataset.FieldByName('SeuCampoBlob') ).SaveToStream( VariavelStream );
Gostei + 0
28/06/2010
Weliton Oliveira
Meu campo blob pode conter tanto texto como imagem ou os dois.
Mas valeu pela dica do componente, vou instalá-lo e fazer uns testes.
Quanto ao stream, eu consigo criar.
O problema é jogar o seu conteúdo para área de transferência.
Mas valeu!!
Gostei + 0
28/06/2010
Marcos Silva
Gostei + 0
30/06/2010
Carlos Mazzi
Gostei + 0
05/07/2010
Weliton Oliveira
1)
Não deu, usei a dica do link acima, veja:
Vou copiar para o Clipboard o conteúdo do campo Blob "LAUDO", que pode conter texto formatado e/ou figuras, tabelas....
procedure StreamToClipboard;
var
hbuf : THandle;
bufptr : Pointer;
mstream : TMemoryStream;
strObj : TStream;
begin
mstream := TMemoryStream.Create;
try
{-- Write your data to the stream. --}
strObj := DModule.QueAnato.CreateBlobStream(DModule.QueAnatoLAUDO, bmReadWrite);
hbuf := GlobalAlloc(GMEM_MOVEABLE, mstream.size);
try
bufptr := GlobalLock(hbuf);
try
Move(mstream.Memory^, bufptr^, mstream.size);
Clipboard.SetAsHandle(CF_MYFORMAT, hbuf);
finally
GlobalUnlock(hbuf);
end;
except
GlobalFree(hbuf);
raise;
end;
finally
mstream.Free;
strObj.Free;
end;
end;
Quando mando compilar, parece que há algo errado com o formato do Clipboard, veja o erro:
[DCC Error] Global.pas(72): E2003 Undeclared identifier: 'CF_MYFORMAT'
2)
E depois, tenho que pegar o conteúdo do Clipboard e usar para imprimir um relatório do QuickReport (resultado do exame), alinhado justificado.
Vai ser complicado.
Se alguém quiser me prestar acessoria....
Até mais.
Gostei + 0
05/07/2010
Marcos Silva
Bom, quanto a dica, você adicionou a unit Clipbrd a lista de uses??
Outra coisa, dá pra tentar carregar o conteudo do Stream em um TImage usando um bloco TRy... except... end.Se der erro, não era uma imagem, sendo assim, trate como texto e mostre num QRichEdit, e se não der erro, use um TQRImage (eu particularmente usaria um TQREDBImage).
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)