PDA

Ver la Versión Completa : Uso del ShellListView


esocrates
06-08-2003, 04:23:18
Hola a todos:
Tengo en un form [Delphi 6] Un Componente ShellTreeView un ShellListView y un Memo.
Cuando hago clic en una carpeta del ShellTreeView se muestran en el ShelListView las subcarpetas y los archivos que contienen.
Les pido me ayuden con el código necesario para que al hacer doble clic sobre el nombre de un archivo txt que se muestra en el ShellListView se muestre en el Memo.
Muchas gracias

andres1569
06-08-2003, 10:16:16
Hola:

No conozco estos componentes, pero suponiendo que el ShellListView tiene una propiedad FileName donde se apunta al fichero seleccionado, y omitiendo comprobaciones de si es un fichero de texto, harías así:

Memo1.Lines.LoadFromFile (SellListView1.FileName);

esocrates
07-08-2003, 01:04:57
Estos controles se encuentran en Delphi 6 en la paleta Samples.
Mi dificultad radica en que la propiedad FileName no se encuentra en el ShelListView.
No sé de qué modo puedo cargar en un Memo el contenido de un txt al hacer doble clic.
Un saludo

delphi.com.ar
07-08-2003, 01:14:03
¿Qué te parece algo así?

procedure TForm1.Button1Click(Sender: TObject);
begin
if (ShellListView1.SelectedFolder <> nil) and
(not ShellListView1.SelectedFolder.IsFolder) Then
begin
Memo1.Lines.LoadFromFile(ShellListView1.SelectedFolder.PathName);
end;
end;


Saludos!

esocrates
07-08-2003, 18:28:55
Me parece muy bueno delphi.com.ar. Es la solución que buscaba.
Un saludo y muchas gracias.

lucasarts_18
01-07-2005, 20:00:19
Hola:

Con PathName traes el nombre de la ruta..:mad:
Como se pueden cargar los nombres de archivos que se encuentran en las carpetas de un ShellTreeView :confused: .

Saludos.

roman
01-07-2005, 20:11:30
:mad:

¿Por qué te enojas? :confused:

PathName es la ruta y el nombre del archivo. Para quedarte sólo con el nombre usa la función ExtractFileName:



ExtractFileName(ShellListView1.SelectedFolder.PathName)


// Saludos

lucasarts_18
01-07-2005, 21:08:31
Hola Roman:

En ningún caso me he enojado, solo puse esa carita por frustración al ver que el ejemplo no hacía como proponía Delphi.com.ar.

Tengo algunas dudas:

En éste mensaje porqué se hace referencia a ShellListView sí sé está preguntando por ShellTreeView? :confused: .
Lo otro sería algo así (ShellTreeView.ShellListView) como podrás ver en el código de más abajo.


if (ShellTreeView.ShellListView.SelectedFolder <> nil) and
(not ShellTreeView.ShellListView.SelectedFolder.IsFolder) then
//FrmArchivos.LstBoxFile.Items.Add (ShellTreeView.ShellListView.SelectedFolder.PathName);
Memo1.Lines.LoadFromFile(ShellTreeView.ShellListView.SelectedFolder.PathName);



Cómo puedes ver, hay una línea que se encuentra comentada porque esa es mi idea, pasar todos los nombres de archivos a un ListBox.
Pero como no me resulta con el listbox, hicé el intento de ejecutarlo como lo proponen en éste hilo.

Al momento de ejecutarlo como dice Delphi.Com.Ar me lanza una excepción de violación de acceso a dirección......

Bueno...Ese es mi drama...No estoy enojado :o A ésta hora me baja el sueño..

Saludos.

delphi.com.ar
01-07-2005, 21:34:57
En éste mensaje porqué se hace referencia a ShellListView sí sé está preguntando por ShellTreeView.


Les pido me ayuden con el código necesario para que al hacer doble clic sobre el nombre de un archivo txt que se muestra en el ShellListView se muestre en el Memo.

Por otro lado, tu código no tendría que producir un error si es que tienes asignada la propiedad ShellListView de tu ShellTreeView. ¿Porqué accedes a través de esta propiedad pudiendo acceder directamente al ShellListView como en mi ejemplo?


if Assigned(ShellTreeView.ShellListView) and
(ShellTreeView.ShellListView.SelectedFolder <> nil) and
(not ShellTreeView.ShellListView.SelectedFolder.IsFolder) then
...:D

Saludos!

roman
01-07-2005, 21:39:43
al ver que el ejemplo no hacía como proponía Delphi.com.ar.


El ejemplo hace correctamente lo que Federico indica. Lo sé porque a mi me pasó lo mismo que a ti :D.

Originalmente se pedía:



que al hacer doble clic sobre el nombre de un archivo txt que se muestra en el ShellListView se muestre en el Memo


lo cual tiene dos interpretaciones:

- que se muestre el nombre del archivo en el memo
- que se muestre el contenido del archivo en el memo

pero más adelante aclaró que era lo segundo:



No sé de qué modo puedo cargar en un Memo el contenido de un txt al hacer doble clic


y a esto es a lo que contestó Federico.

Según entiendo tú quieres la otra opción.



En éste mensaje porqué se hace referencia a ShellListView sí sé está preguntando por ShellTreeView

No, pues ni idea de algo que aconteció hace dos años :p

Lo que tú necesitas creo que es



Memo1.Lines.Add(ExtractFileName(ShellListView.SelectedFolder.PathName));


Quité la referencia a ShellTreeView pues me gusta más acceder directamente que através de otra componente.

// Saludos

roman
01-07-2005, 21:42:51
Se me adelantó Federico unos segundos :) pero veo que básicamente pensamos igual en este aspecto.

// Saludos

lucasarts_18
01-07-2005, 22:18:10
Quité la referencia a ShellTreeView pues me gusta más acceder directamente que a través de otra componente.

Hice esto:



var
ShellListView : TShellListView;
begin
if (ShellListView.SelectedFolder <> nil) and
(not ShellListView.SelectedFolder.IsFolder) then
Memo1.Lines.Add(ExtractFileName(ShellListView.SelectedFolder.PathName));
end;

Al momento de sacar el ShellTreeView me dice que el identificador no está declarado,por eso me ví obligado a declararlo, pero sigo con el problema de violación en la dirección de memoria.... Estoy totalmente confundido:confused:

roman
01-07-2005, 22:22:19
¿Y por qué piensas que una variable local que no ha sido construida te va a funcionar?

Debes tener una componente TShellListView en tu formulario o sino no sé de qué estamos hablando. Si la componente se llama de otra manera entonces ese nombre es el que tienes que usar.

// Saludos

lucasarts_18
01-07-2005, 22:29:16
Parece que no me expliqué muy bien, no tengo ningún ShellListView, solo estoy trabajando con un ShellTreeView y mí idea es que al momento de selecionar una carpeta pueda traerme los nombres de archivos a un TListBox :) .

Y otra gran duda, acaso Borland no puso la ayuda de éste componente en su Help de Delphi.
No encuentro ninguna referencia de éste componente en la ayuda.

:(

delphi.com.ar
01-07-2005, 22:36:54
Parece que no me expliqué muy bien, no tengo ningún ShellListView, solo estoy trabajando con un ShellTreeView y mí idea es que al momento de selecionar una carpeta pueda traerme los nombres de archivos a un TListBox
La propiedad ShellListView del ShellTreeView es para enlazar un ShellListView y que estos componentes interactúen.


Y otra gran duda, acaso Borland no puso la ayuda de éste componente en su Help de Delphi.
No encuentro ninguna referencia de éste componente en la ayuda.
Borland no puso ayuda, porque estos componentes son una Demo

Saludos!

lucasarts_18
01-07-2005, 23:44:20
Hola:

He colocado el componente ShellListView y al momento de ir navegando por el ShellTreeView se visualizan los archivos en el ShellListView, todo bien hasta aquí.

Ahora quiero traerme todos los nombres de los archivos que estoy visualizando en el ShellListView un ListBox, Se entiende ??.

Saludos.

:)

ctrl_attack
13-03-2011, 06:42:11
Hola, alguien sabe donde esta ShellListView en delphi 2010 ? o cual es el equivalente, ya le estoy agarrando mas la onda a este delphi pero nomas no encuentro a ShellListView jejeje, alguien sabe por donde anda?

ctrl_attack
13-03-2011, 06:57:38
Vale, ya le encontre la forma, sucede que estos componentes no vienen instalados por defecto y uno los tiene que instalar manualmente, en mi caso que tengo windows seven los encontre en:

C:\Users\Public\Documents\RAD Studio\7.0\Demos\DelphiWin32\VCLWin32\ShellControls

lo que hice primero fue abrir vclshlctrls.dproj y compilar

despues abri y compile dclshlctrls.dproj

despues sin cerrar este ultimo, en el project manager instale dclshlctrls140.bpl

despues me salio mi ventanita que ya estaba instalado, corrobore y todo bien.

dejo el comentario por si las dudas a alguien le sucede igual, saludos.