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;