Ver Mensaje Individual
  #1  
Antiguo 24-04-2014
camiz camiz is offline
Miembro
 
Registrado: ene 2012
Posts: 69
Reputación: 13
camiz Va por buen camino
Problemas para eliminar imagenes de un ImageList

nuevamente por aquí necesitando ayuda, tengo un problema con un TImageList.
lo que sucede es que el TImageList me sirve para cargar imágenes desde una base de datos para posteriormente mostrar las imágenes en un TListView, hasta aquí todo bien : guardo la imagen en la base de datos, lo cargo en el TImageList y lo muestro en un TListView correcto.
el problema surge cuando hago el procedimiento otra vez ya no me muestra la imagen correcta.

he revisado todo en busca del error y creo que lo encontré en el TImageList, sucede que cada vez que se ejecuta ejecuta el código va aumentando las imágenes en el TImageList y esto hace mostrar erróneamente la imagen incorrecta.

creo que la solución seria antes de cargar al TImageList eliminar las imágenes, pero he probado con estos código y ninguno funciona.
Código Delphi [-]
ImageList1.Clear;
ImageList1.Items.Clear;

hay otra manera de limpiar un TImageList;
aquí el código que utilizo para cargar imágenes
Código Delphi [-]
var
  i, X, Y: Integer;
  it: TListItem;
  B: TBitmap;
  P: TPNGObject;
begin
    with frmConeccion.Iconos_V do
    begin
      frmIconos.LvIconos.Clear;
      SQL.Clear;
      SQL.Text := 'select * from img order by idimg asc';
      Active := True;
      First;
      ListView1.Clear;
      for i:= 0 to RecordCount -1 do
      begin
        P:= TPNGObject.Create;
        B:= TBitmap.Create;
        try
          P.Assign(TBlobField(FieldByName('IMAGEN')));
          B.Width:= P.Width;
          B.Height:= P.Height;
          B.PixelFormat:= pf32bit;
          B.SetSize(B.Width, B.Height);
          for Y := 0 to B.Height - 1 do
          for X := 0 to B.Width - 1 do
          B.Canvas.Pixels[X, Y]:= $00FFFFFF;
          B.Canvas.Pen.Color := clRed;
          B.Canvas.Rectangle(20, 20, 60, 60);
          P.Draw(B.Canvas, Rect(0, 0, P.Width, P.Height));
          ImageList1.Add(B, B);
        finally
          P.Free;
          B.Free;
        end;
       Next;
     end;
     Active := False;
    end;

Última edición por camiz fecha: 24-04-2014 a las 22:44:30.
Responder Con Cita