Jump to content


Photo

Como mostrar vistas miniatura en un listview?


  • Please log in to reply
6 replies to this topic

#1 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 776 posts
  • LocationPinar del Río, Cuba

Posted 30 October 2014 - 10:41 AM

Hola a todos
Pues estoy haciendo un sencillo explorador para que mi pequeña de 3 años ponga sus videos y canciones infantiles y los cambie cada vez que quiera (sin llamarme para que se lo haga yo  *-)  )
Es algo simple un boton que selecciona la carpeta de canciones y otro la de filmes, y en dependencia de la seleccion muestra el contenido de la carpeta en el listview, pero el shellListview no muestra las vistas en miniatura que las necesito para que la nena se guie en selecionar lo que quiere
De que forma podria hacerlo o que componente me serviría

Hasta ahora lo hace con el explorador de windows, pero como no tiene tanta habilidad, muchas veces en lugar de hacer clic, arrastra la carpeta o archivo, y ya saben ...    :s  a buscar donde estan

Si no se puede con algun componente, entonces algun metodo para hacerlo, no solo es mostrar el archivo en vista miniatura, tambien es que al hacerle clic se ejecute el video


  • 0

#2 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4111 posts
  • LocationMadrid - España

Posted 30 October 2014 - 03:27 PM

Hola, JoAnCa. Te respondo lo que te respondí en CD. Usa le truco de HcackAll: Obtener cualquier thumbnail de la Shell y crea un TImageList con las imágenes para usarlo en un TListView que usas como explorador...


Saludos.

  • 0

#3 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 776 posts
  • LocationPinar del Río, Cuba

Posted 06 November 2014 - 10:11 AM

Pues usando la funcion Obtener cualquier thumbnail de la Shell de cHackAll en http://clubdelphi.co...ad.php?t=80862  combinada con el ejemplo de Neftali Crear componentes en un TScrollBox (runtime) en http://neftali.clubdelphi.com/?p=1087 me funciona bien si pongo directamente la ruta del archivo y el archivo:



delphi
  1. im.Picture.Assign(GetThumbnail('D:\Animados', 'Mickey Mouse.mpg', 96, 96));




Pero si le paso el parámetro en una variable no me funciona

Poniendo:



delphi
  1. Ruta:='D:\Animados';
  2. Arch:='Mickey Mouse.mpg';
  3.  
  4. im.Picture.Assign(GetThumbnail(PWideChar(ruta), PWideChar(arch), 96, 96));



No me da error, pero los TImagen salen en blanco

A que se debera esto?

Si pongo PChar me da error de incomptibilidad de tipos



  • 0

#4 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4111 posts
  • LocationMadrid - España

Posted 06 November 2014 - 06:11 PM

Seguro que declaraste Ruta y Arch como String, deben ser WideString

Prueba así:


delphi
  1. var
  2. Ruta, Arch: WideString;




Saludos.
  • 0

#5 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 776 posts
  • LocationPinar del Río, Cuba

Posted 12 November 2014 - 08:30 AM

Un poco demorado para contestar, pero es que estaba ocupado con otras cosas

El problema es que hay que hacer algo con la conversion de tipos como se explica en este post http://www.clubdelph...ead.php?t=14801



delphi
  1. var
  2.   Buffer      :Array [0..1000]of WideChar;
  3.   Direccion :PWideChar;
  4.   Addr        :String;
  5.  
  6. begin
  7.   Addr:=edtCamino.Text + '\' + Tapiz;
  8.   Direccion:= StringToWideChar(Addr,Buffer,Length(Addr)+1);
  9.   StatusBar1.Panels[0].Text := WideCharToString(Direccion);
  10. end;


  • 0

#6 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4111 posts
  • LocationMadrid - España

Posted 12 November 2014 - 04:12 PM

Un poco demorado para contestar, pero es que estaba ocupado con otras cosas

El problema es que hay que hacer algo con la conversion de tipos como se explica en este post http://www.clubdelph...ead.php?t=14801



delphi
  1. var
  2.   Buffer      :Array [0..1000]of WideChar;
  3.   Direccion :PWideChar;
  4.   Addr        :String;
  5.  
  6. begin
  7.   Addr:=edtCamino.Text + '\' + Tapiz;
  8.   Direccion:= StringToWideChar(Addr,Buffer,Length(Addr)+1);
  9.   StatusBar1.Panels[0].Text := WideCharToString(Direccion);
  10. end;



¿Y no es más fácil convertirlo así?:


delphi
  1. var
  2.   Ruta, Arch: String;
  3. begin
  4.   Ruta:='D:\Peliculas';
  5.   Arch:='Ocho.apellidos.vascos.2014.DVDRip.ilar.avi';
  6.  
  7.   im.Picture.Assign(GetThumbnail(PWideChar(WideString(ruta)), PWideChar(WideString(arch)), 96, 96));
  8. end;



Saludos.
  • 0

#7 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 776 posts
  • LocationPinar del Río, Cuba

Posted 14 November 2014 - 08:38 AM

Tienes razon, es mucho mas facil así

Cuando probe el ejemplo que encontre, como funciono bien, asi lo deje y no pense en optimizarlo

Muchas gracias
  • 0




IP.Board spam blocked by CleanTalk.