Bueno, algo se va viendo ya. He modificado el código porque puedo tener almacenadas imágenes .BMP y .JPG y se ha quedado de la siguiente forma:
Código Delphi
[-]
procedure TNTFormInmuebles.InsertaDatos(Tipo: String);
var
N: SmallInt;
Stream: TStream;
ImagenBMP: TBitmap;
ImagenJPG: TjpegImage;
begin
DataModule1.EDBQuery1.SQL.Clear;
DataModule1.edbquery1.SQL.Add('SELECT * FROM DOCUMENTOS WHERE FINCA='+QuotedStr(NtEditCodigo.Damevalor)+' AND TIPO='+QuotedStr(Tipo));
DataModule1.EDBQuery1.ExecSQL;
DataModule1.EDBQuery1.First;
ListView1.Clear;
ImageList1.Clear;
N:=0;
while not DataModule1.EDBQuery1.Eof do begin
ImagenBMP:= Tbitmap.create;
ImagenJPG:= TjpegImage.create;
if DataModule1.EDBQuery1.FieldByName('TIPOI').AsString='J' then begin
Stream := DataModule1.EDBQuery1.CreateBlobStream(DataModule1.EDBQuery1.FieldByName('IMAGEN') as TBlobField, bmRead);
ImagenJPG.LoadFromStream(stream);
ImagenBMP.Height:= ImagenJPG.Height;
ImagenBMP.Width:= ImagenJPG.Width;
ImagenBMP.Assign(ImagenJPG);
end;
if DataModule1.EDBQuery1.FieldByName('TIPOI').AsString='B' then begin
Stream := DataModule1.EDBQuery1.CreateBlobStream(DataModule1.EDBQuery1.FieldByName('IMAGEN') as TBlobField, bmRead);
ImagenBMP.LoadFromStream(stream);
end;
ImageList1.Add(ImagenBMP,nil);
ListView1.Items.Add;
ListView1.Items[ListView1.Items.Count-1].Caption := 'Imagen';
ListView1.Items[ListView1.Items.Count-1].ImageIndex := N;
ImagenBMP.Free;
ImagenJPG.Free;
DataModule1.EDBQuery1.Next;
Inc(N);
end;
El problema es que hay dos registros, uno con un .JPG y otro con un .BMP y en los dos iconos se ve una parte distinta del .BMP, del .JPG ni rastro.