Roman, yo lo acabo de probar otra vez, y no me dibuja nada, de hecho ni siquiera me muestra los demas datos, y me vuelve a salir que la variable icono no puede inicializarse. No se que puede ser, que estoy haciendo mal.
La imagen la cargo asi
Código Delphi
[-]
procedure TLocal.Button1Click(Sender: TObject);
var
MS : TMemoryStream;
begin
MS := TMemoryStream.Create;
MS.LoadFromFile('c:\a.bmp');
SQL.SQL.Clear;
SQL.SQL.Add('INSERT INTO unidades (icono) VALUES(:PFOTO)');
SQL.Parameters.ParamByName('PFOTO').LoadFromStream(MS,ftBlob);
SQl.ExecSQL;
MS.Free;
QUnidades.Close;
Qunidades.Open;
end;
y el procedimiento para que se dibujen es este
Código Delphi
[-]
procedure TLocal.DBGrid3DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
var icono: TBitmap;
begin
if Field.FieldName = 'Icono' then
begin
try
icono:= Tbitmap.Create;
icono.Assign(TBlobField(Field));
(Sender as TDBGrid).Canvas.FillRect(Rect);
(Sender as TDBGrid).Canvas.Draw(Rect.left+3,Rect.Top+1, icono);
finally
icono.free;
end;
end
else
(Sender as TDBGrid).DefaultDrawDataCell(Rect, Field, State);
end;
Pero ni se dibuja la imagen en la celda, ni me muestra los datos de cualquier otro campo. La propiedad DefaultDrawing esta en False. Pero me sigue saliendo:
Código Delphi
[-][Warning] Unit2.pas(824): Variable 'icono' might not have been initialized
Porque??, lo que pienso es que al no coincidir el FieldName, no se crea, por lo que tampoco puede destruirse, a lo que voy, es porque? si en mi tabla tengo el campo icono como ObjetoOLE, y me figura como BLOB.
Saludos