IBX: Recuperar conteúdo Blob para TImage
Olá ... Estou usando o Delphi 5 + IBX com update 5.0.4 acessando uma Base de Dados FireBird 1.5.2 e aplicando muitas tentativas frustradas ao recuperar o conteúdo de um campo Blob (imagem bmp) e enviá-la para um TImage.
Segue o código...
Já de outra forma, funciona sem problemas, SE eu enviar a stream e gravá-la no disco, mas para exibir no TImage parece estar muito complicado, e tenho receio que seja algum BUG do IBX... e também já tentei com outras variáveis derivadas de TStream ... como: TBlobStream e TMemoryStream ... e testei também, sem sucesso, com TBlobField:
Alguém já passou por isso?
Segue o código...
procedure TForm1.Button1Click(Sender: TObject); var Blb: TStream; str: string; begin Str:=GridFoto.Columns.Items[1].Field.AsString; FBQry.SQL.Clear; FBQry.SQL.Add(´select FIGU from tabsimov where NOME=´´´+EdNome.text+´´´´); FBQry.Open; Blb:=FBQry.CreateBlobStream(FBQry.FieldByName(´FIGU´),bmRead); Blb.Position:=0; DBImg.Picture.Bitmap.LoadFromStream(Blb); end;
Já de outra forma, funciona sem problemas, SE eu enviar a stream e gravá-la no disco, mas para exibir no TImage parece estar muito complicado, e tenho receio que seja algum BUG do IBX... e também já tentei com outras variáveis derivadas de TStream ... como: TBlobStream e TMemoryStream ... e testei também, sem sucesso, com TBlobField:
var ccc: TBlobField; ccc:=TBlobField(FBQry.FieldByName(´FIGU´));
Alguém já passou por isso?
Nerdex
Curtidas 0
Respostas
Afarias
18/08/2005
Geralmente eu uso um código +/- assim:
T+
var
Stm: TStream;
begin
Stm := TMemoryStream.Create;
try
{...}
TBlobField(FBQry.FieldByName(´blob´)).SaveToStream(Stm);
stm.Position := 0;
Image1.Picture.LoadFromStream(Stm);
finally
Stm.Free;
end;
end;T+
GOSTEI 0
Nerdex
18/08/2005
Blz ... funcionou 100 ¬ - uso imagens .bmp e irei comprimí-las antes de enviar para o Bco com zLib.pas - acho que vai ficar show ...
Abraço
Abraço
GOSTEI 0
Afarias
18/08/2005
vai ficar sim. 8)
T+
T+
GOSTEI 0