Ver Mensaje Individual
  #8  
Antiguo 31-05-2007
Avatar de MaMu
MaMu MaMu is offline
Miembro
 
Registrado: abr 2006
Ubicación: Argentina
Posts: 863
Reputación: 19
MaMu Va por buen camino
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);
    // o bien (pruebo ambas, creo que no hay diferencia pero por si acaso)
    //  SQL.ParamByName('PFOTO').LoadFromStream(MS,ftBlob);
    SQl.ExecSQL;
    MS.Free;
    QUnidades.Close;
    Qunidades.Open;
end; // del procedure

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
__________________
Código Delphi [-]
 
try 
ProgramarMicro(80C52,'Intel',MnHex,True);
except
On Exception do
MicroChip.IsPresent(True);
end;
Responder Con Cita