Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   acerca del componente TShellTreeView (https://www.clubdelphi.com/foros/showthread.php?t=29613)

fer21unmsm 26-01-2006 22:36:03

acerca del componente TShellTreeView
 
Hola a todos los miembros de este foro, mi duda es la siguiente, bueno primero que todo utilizo el componente TShellTreeView para poder accesar a recursos de red, ahora aqui la duda, cuando quiero accesar a un recurso de red hay veces que se demora demasiado como si se hubiera colgado, como puedo hacer para que el usuario pueda seguir trabajando sin que se congele la aplicación, he utilizado application.processmessages.

¿Que puedo hacer?.

Saludos, y gracias de antemano

fer21unmsm 27-01-2006 15:37:24

Cita:

Empezado por fer21unmsm
Hola a todos los miembros de este foro, mi duda es la siguiente, bueno primero que todo utilizo el componente TShellTreeView para poder accesar a recursos de red, ahora aqui la duda, cuando quiero accesar a un recurso de red hay veces que se demora demasiado como si se hubiera colgado, como puedo hacer para que el usuario pueda seguir trabajando sin que se congele la aplicación, he utilizado application.processmessages.

¿Que puedo hacer?.

Saludos, y gracias de antemano

Alguna sugerencia?

Jonnathan 27-01-2006 18:21:26

Ese es un tema delicado y te tengo malas noticias :( . Estuve echando un vistazo al código de la VCL de ese control, especificamente la función "PopulateNode" que busca dentro de las carpetas su contenido. Adentro de esa función se hace una llamada a una función de una librería del sistema operativo para obtener los elementos dentro de una carpeta (en este caso recursos de red). No veo manera de darle prioridad a otros eventos de la aplicación mientras se está esperando que lleguen los datos de esa función, es un problema que pasa tambien a veces con el Explorador de Windows que se "congela" al acceder a alguna carpeta de red (En Windows XP creo que estás más optimizado).

En conclusión, creo que lo único que podrías hacer sería listar los recursos de red con alguna función hecha por tí y optimizada con Application.ProcessMessages(), y no usar el componente TShellTreeView :( si quieres resolver ese asunto.
Puedes buscar una función que te liste recursos de red en este foro o preguntar a ver quien sabe alguna. Otra opción que se me ocurrio a última hora es hacer alguna aplicación multihilos (Threads), donde un hilo se encargue de actualizar los nodos del TShellTreeView y otro hilo se encarga de responder a otros eventos de la aplicación pero hasta ahi no llegan mis conocimientos "delphi compotica", a ver si alguno de los expertos de este foro tiene alguna idea.

lucasarts_18 27-01-2006 18:53:38

Hola:

¿ Qué tal si pruebas con los componentes TurboPower ShellShock?, son realmente buenos y mejor implementados que los que trae el propio delphi, de hecho esos componentes siempres lo dejaron para el final, es decir no están optimizados y recuerdo haber encontrados algunos errores (delphi 6), por esta razón llegué a probar los componentes mencionados mas arriba y efectivamente están bastante buenos.

Este es el enlace

Hasta Luego -

fer21unmsm 27-01-2006 21:59:28

Cita:

Empezado por lucasarts_18
Hola:

¿ Qué tal si pruebas con los componentes TurboPower ShellShock?, son realmente buenos y mejor implementados que los que trae el propio delphi, de hecho esos componentes siempres lo dejaron para el final, es decir no están optimizados y recuerdo haber encontrados algunos errores (delphi 6), por esta razón llegué a probar los componentes mencionados mas arriba y efectivamente están bastante buenos.

Este es el enlace

Hasta Luego -

Hola lucasarts, ya baje el componente turbopower shellshock he probado el StShellTreeView, pero al momento de accesar a un pc de la red se queda congelado, quisiera poder hacer que el usuario en ese caso pueda cerrar o cancelar la ventana, pero no me lo permite.

Vi una opción expandinterval y supuse que ese podría poner un tiempo limite pero no es así.

O tal vez este manejando mal el componente. No he puesto codigo sólo he puesto el componente ejecute una aplicacion de ejemplo, pero se congela cuando se quiere accesar a un grupo de trabajo, y como comente antes quisiera poder cancelar o cerrar la ventana cuando el usuario lo desee.

¡Alguna recomendación que podría hacer?

Saludos y gracias de antemano.

lucasarts_18 28-01-2006 18:07:11

Hola:

Si mal no recuerdo, esos componentes tienen una buena documentación, quizás allí podrías encontrar algo que te sirva, debo decir que esos componentes no lo usé con el mismo proposito que llevas tú.
Me gustaría ayudarte, pero en casa no dispongo de una red (por lo menos de dos PC :( ), ahora si haces lo mismo pero de windows ¿también se congela?, quizás sea otro el problema.
Veamos si alguien tiene mas conocimiento sobre esto y así podemos aprender todos :D

Hasta Luego y suerte (aunque luego de leer un debate en este mismo foro sobre el significado de esta palabra en programación, no sé si usarla en este contexto, jejee:rolleyes: )

fer21unmsm 28-01-2006 18:30:34

Cita:

Empezado por lucasarts_18
Hola:

Si mal no recuerdo, esos componentes tienen una buena documentación, quizás allí podrías encontrar algo que te sirva, debo decir que esos componentes no lo usé con el mismo proposito que llevas tú.
Me gustaría ayudarte, pero en casa no dispongo de una red (por lo menos de dos PC :( ), ahora si haces lo mismo pero de windows ¿también se congela?, quizás sea otro el problema.
Veamos si alguien tiene mas conocimiento sobre esto y así podemos aprender todos :D

Hasta Luego y suerte (aunque luego de leer un debate en este mismo foro sobre el significado de esta palabra en programación, no sé si usarla en este contexto, jejee:rolleyes: )

Hola lucasarts_18, primero que todo gracias a los dos por los aportes que me han brindado realmente a sido de mucha ayuda para encontrar la siguiente solución.

Lo que hice fue utilizar el componente TShellTreeView, pero metiendo en un hilo el metodo expand, para llamarlo desde ahí y poder controlarlo, luego lo probé y todo chevere salio bien.


La franja horaria es GMT +2. Ahora son las 06:37:58.

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