Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Desarrollo en Delphi para Android (https://www.clubdelphi.com/foros/forumdisplay.php?f=57)
-   -   Cargar Imagenes a un TlistView (https://www.clubdelphi.com/foros/showthread.php?t=96763)

jmbarrio 27-06-2024 17:28:21

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.

delphi.com.ar 27-06-2024 17:36:11

Cita:

Empezado por jmbarrio (Mensaje 556394)
esto no compila.

Para poder ayudarte, sería interesantísimo poder saber que error de compilación te está dando.

jmbarrio 27-06-2024 20:00:17

Buenas tardes y disculpas pensé que que estaba claro la instrucción que no compila
Es la ultima parte de código que he puesto.

ImageIndex := ImageList1.Add(Bitmap);

No admite el procedimiento add del TImageList ya que es del componente VCL y no se como codificarlo para android.

en cualquier caso me valdría otro código para cargar las imágenes en el ListView

Gracias, un saludo

jmbarrio 28-06-2024 13:58:21

Buenas tardes, finalmente no necesito el componente TImageList.

He cambiado la propiedad ItemAppearance del ListView a una que permite las imágenes en el item del ListView

he añadido
Código Delphi [-]
Item.Bitmap := Bitmap.loadfrofile(FileName)
y ya me muestra la imagen en el item, pero lo hace como un icono, muy pequeña.

¿Como puedo hacer que se vea mas grande?

Muchas gracias, un saludo.


La franja horaria es GMT +2. Ahora son las 13:23:08.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi