Ir al contenido


Foto

Como mostrar vistas miniatura en un listview?


  • Por favor identifícate para responder
6 respuestas en este tema

#1 JoAnCa

JoAnCa

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 775 mensajes
  • LocationPinar del Río, Cuba

Escrito 30 octubre 2014 - 10:41

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
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 30 octubre 2014 - 03:27

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
  • 775 mensajes
  • LocationPinar del Río, Cuba

Escrito 06 noviembre 2014 - 10:11

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
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 06 noviembre 2014 - 06:11

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
  • 775 mensajes
  • LocationPinar del Río, Cuba

Escrito 12 noviembre 2014 - 08:30

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
  • 4.107 mensajes
  • LocationMadrid - España

Escrito 12 noviembre 2014 - 04:12

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
  • 775 mensajes
  • LocationPinar del Río, Cuba

Escrito 14 noviembre 2014 - 08:38

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.