Ver Mensaje Individual
  #1  
Antiguo 27-06-2024
jmbarrio jmbarrio is offline
Miembro
 
Registrado: may 2003
Posts: 102
Reputación: 22
jmbarrio Va por buen camino
Cargar Imagenes a un TlistView

Buenas tardes, tengo un listview en el que cargo las imágenes de la carpeta Pictures. El codigo es

Código Delphi [-]
procedure TF_EliminarFotos.FormShow(Sender: TObject);
var
  FileList: TStringDynArray;
  FileName, FolderPath, cad: string;
  Item: TListViewItem;

begin
  ListFotos.AllowSelection := True;
  ListFotos.Items.Clear;
  FolderPath := TPath.Combine(TPath.GetSharedPicturesPath, '');
  // Lista todos los archivos en la carpeta
  FileList := TDirectory.GetFiles(FolderPath, 'foto_tomada_*.jpg', TSearchOption.soTopDirectoryOnly);
  // Sube cada archivo
  for FileName in FileList do
    begin
      try
        cad := FileName;
        cad := copy(cad,length('/storage/emulated/0/Pictures/') + 1,length(cad) - length('/storage/emulated/0/Pictures/'));
        Item := ListFotos.Items.Add;
        Item.Text := cad;
      except
        on e:exception do
          showmessage(e.message);
      end;
    end;

end;

Ahora lo que querría es cargar la imagen correspondiente en el Listview a través de un ImageList.
He visto el código para el componente VCL y lo he intentado adaptar, pero no soy capaz por más que busco

Código Delphi [-]
procedure TForm1.LoadPicturesToListView;
var
  PicturesPath: string;
  Files: TArray<string>;
  FileName: string;
  Bitmap: TBitmap;
  Item: TListViewItem;
  ImageIndex: Integer;
begin
  // Obtiene la ruta de la carpeta "Pictures"
  PicturesPath := TPath.Combine(TPath.GetSharedDocumentsPath, 'Pictures');

  // Obtiene la lista de archivos de imágenes (puedes filtrar por tipos de archivos si lo deseas)
  Files := TDirectory.GetFiles(PicturesPath, '*.*', TSearchOption.soTopDirectoryOnly);

  // Limpiar la lista de imágenes e ítems de la vista
  ImageList1.Clear;
  ListView1.Items.Clear;

  // Itera sobre los archivos y los carga en el TImageList y TListView
  for FileName in Files do
  begin
    if TPath.GetExtension(FileName).ToLower.Equals('.jpg') or
       TPath.GetExtension(FileName).ToLower.Equals('.png') then
    begin
      Bitmap := TBitmap.Create;
      try
        // Carga la imagen en un TBitmap
        Bitmap.LoadFromFile(FileName);

        // Añade la imagen al TImageList
        ImageIndex := ImageList1.Add(Bitmap);

        // Añade un ítem al TListView y asigna la imagen
        Item := ListView1.Items.Add;
        Item.Text := TPath.GetFileName(FileName);
        Item.Bitmap := Bitmap; // Opcional: Si quieres mostrar la imagen en una columna específica
        Item.ImageIndex := ImageIndex;
      finally
        Bitmap.Free;
      end;
    end;
  end;
end;

Código Delphi [-]
// Añade la imagen al TImageList
ImageIndex := ImageList1.Add(Bitmap);

esto no compila.

Un saludo, y muchas gracias por vuestra ayuda.
Responder Con Cita