Ver Mensaje Individual
  #1  
Antiguo 22-10-2011
Avatar de bulc
bulc bulc is offline
Miembro
 
Registrado: jun 2010
Posts: 416
Reputación: 17
bulc Va por buen camino
TADOBlobStream de Gráfico en TImage

Del libro de Fedorov y Elmanova sobre ADO, he sacado un código para obtener datos gráficos Blob(ADO) de y pasarlos a un TImage. Según los autores el header de dichos gráficos, tiene exactamente 78 bbytes. Bastaría colocarse en el bite 78 para eludir la cabecera del gráfico y pasar al inicio del dato gráfico "real", desprovisto de datos OLE que se colocan en la cabecera del gráfico.
Se genera un error "Bitmap Image is not valid". igual al que se obtiene al intentar colocar un campo gráfico en un DBImage.
El código se puede llamar con un botón o con un evento AfterScroll, que automatizaría el visionado de gráficos.
Mi conocimiento de las funciones de buffer es muy limitado. ¿Alguien puede decir algo sobre el tema?

Código Delphi [-]
Procedure TForm1.ADOTable1AfterScroll1(DataSet: TDataSet);
var
 Bitmap : TBitmap;
 BS : TADOBlobStream;
begin
 Try
     BS:=TADOBlobStream.Create(ADOTable1Grafic1, bmRead);
     // Llevamos el cursor al inicio del gráfico.
     BS.Skeep(78, soFromBeginning);
     Bitmap:=TBitMap.Create;  //Inicializamos el Bitmap.
    // Cargamos el BitMap con el contenido del Blob.
    Bitmap:=LoadFromStream(BS);
    //Pasamos el bitmap al TImage.
    Image1.Picture.Graphic:= Bitmap;
  Finally
       Bitmap.Free;
       BS.Free;
end;

Última edición por Casimiro Noteví fecha: 22-10-2011 a las 16:16:54.
Responder Con Cita