Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-04-2005
Avatar de sierraja
sierraja sierraja is offline
Miembro
 
Registrado: sep 2004
Posts: 281
Poder: 20
sierraja Va por buen camino
Cambiar la forma del apuntador del mouse

Hola a todos, necesi cambiar el apuntador del mouse de una flecha para un reloj de arena, es decir, quiero hacer una busqueda en ur archivo y mientras hace la busqueda quiero cambiar el apuntador del mouse al reloj de arena. He intentado con screen.cursor y me parece que lo cambia pero muy rapido, es decir,


screen.cursor:=-11;
proceso_de_busqueda;
screen.cursor:=-2;

Aparentemente esto hace:

cambia el apuntador al reloj
va a hacer el proceso
imediatamente cambia de nuevo

Explico: se cambia el apuntador llama al proceso de busqueda e inmediatamente cambia el apuntador a la flecha, es decir deja haciendo el proceso de busqueda o cualquier trabajo con las bases de datos y vuelve. De antemano gracias.
Responder Con Cita
  #2  
Antiguo 20-04-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Si lo hace muy rápido es porque el proceso de búsqueda también es muy rápido.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 20-04-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
En primer lugar te recomiendo el uso de las constantes definidas en la unidad Controls:

crHourGlass -> Reloj de arena
crArrow -> Flecha (normal)
crDefault -> Vuelve al que sea default para la clase de ventana, normalmente crArrow

Para mas constantes, buscá en la ayuda "TCursor type".

Otro punto es que debes preocuparte porque aunque algo falle, el cursor vuelva a la normalidad. Yo lo hago encerrando la llamada al proceso en un try/finally:

Código Delphi [-]
Screen.Cursor := crHourGlass;
try
  Proceso;
finally
  Screen.Cursor := crDefault;
end;

Por último, en tu caso parece que el proceso_de_busqueda retorna sin haber realizado todo el proceso... quizas lo deja corriendo en otro hilo. Si queres que funcione, este procedimiento no debe retornar el control hasta que haya terminado de realizarse la busqueda.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #4  
Antiguo 20-04-2005
Avatar de sierraja
sierraja sierraja is offline
Miembro
 
Registrado: sep 2004
Posts: 281
Poder: 20
sierraja Va por buen camino
Cambiar la forma del apuntador del mouse

Juan Antonio, gracias por tu atención.

En tu primera observación, también he utilizado las constantes que mencionas, pero me llama la atención tu última observación: evidentemente el programa sigue ejecutando el proceso_de_busqueda y retorna, pero tu sugerencia me indica que tome el control hasta que termine el proceso de busqueda y luego vuelva a donde fue inicialmente llamado, es decir, hasta que no se ejecute el hilo de busqueda no retorne (creo). Entonces teniendo esto en mente ¿cómo mantengo el control en el proceso de busqueda? o ¿de qué manera lo hago?. Gracias
Responder Con Cita
  #5  
Antiguo 20-04-2005
Ing_Fajardo Ing_Fajardo is offline
Miembro
 
Registrado: abr 2005
Ubicación: Mexico
Posts: 46
Poder: 0
Ing_Fajardo Va por buen camino
Creo que lo que quiere decir es que debes asegurar que el cursor regrese a su estado normal aun si el proceso de busquea falla

Creo que se soluciona con tu un try..except.... no ?
Responder Con Cita
  #6  
Antiguo 20-04-2005
Avatar de sierraja
sierraja sierraja is offline
Miembro
 
Registrado: sep 2004
Posts: 281
Poder: 20
sierraja Va por buen camino
Cambiar la forma del apuntador del mouse

La búsqueda no falla, pero el cursor se devuelve al default aún cuando el proceso de búsqueda no ha terminado.
Responder Con Cita
  #7  
Antiguo 20-04-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cool

Cita:
Empezado por sierraja
evidentemente el programa sigue ejecutando el proceso_de_busqueda y retorna, pero tu sugerencia me indica que tome el control hasta que termine el proceso de busqueda y luego vuelva a donde fue inicialmente llamado, es decir, hasta que no se ejecute el hilo de busqueda no retorne (creo). Entonces teniendo esto en mente ¿cómo mantengo el control en el proceso de busqueda? o ¿de qué manera lo hago?. Gracias
Viendolo ya desde esta perspectiva... ¿que sentido tiene ejecutar el proceso de busqueda en otro hilo si te vas a quedar esperando a que termine de ejecutarse? En ese caso me parece lo mas lógico ejecutar el proceso de búsqueda en el hilo principal de la ejecución... quizas añadiendo llamadas a Application.ProcessMessages si lo único que se pretende es que la aplicación no aparezca como inactiva.

Solo estoy suponiendo escenarios, claro... por tanto creo que es buena idea que nos aclares un poco las ideas si realmente te interesa la ayuda que pueda venir.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #8  
Antiguo 20-04-2005
Avatar de sierraja
sierraja sierraja is offline
Miembro
 
Registrado: sep 2004
Posts: 281
Poder: 20
sierraja Va por buen camino
Cambiar la forma del apuntador del mouse

Bueno, la idea es la siguiente: tengo un procedimiento de busqueda de información que es invocada en cualquier parte de la aplicación, dicho procedimiento de busqueda tiene un tiempo de ejecución (tiempo que sea). La necesidad parte de que mientras el procedimiento de busqueda se ejecute, quiero cambiar la apariencia del apuntador del mouse a reloj de arena, luego de que el procedimiento de busqueda termine, vuelva la apariencia del apuntador del mouse a la normalidad. Pido disculpas por la falta de explicación. Gracias
Responder Con Cita
  #9  
Antiguo 20-04-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 28
jachguate Va por buen camino
Cita:
Empezado por sierraja
Bueno, la idea es la siguiente: tengo un procedimiento de busqueda de información que es invocada en cualquier parte de la aplicación, dicho procedimiento de busqueda tiene un tiempo de ejecución (tiempo que sea). La necesidad parte de que mientras el procedimiento de busqueda se ejecute, quiero cambiar la apariencia del apuntador del mouse a reloj de arena, luego de que el procedimiento de busqueda termine, vuelva la apariencia del apuntador del mouse a la normalidad. Pido disculpas por la falta de explicación. Gracias


Bueno, esta parte ya me la sabia... o la suponia al menos.

El punto es determinar si este otro proceso de está ejecutando en un hilo distinto, y si es asi porque, y que tan facil seria trasladarlo al hilo principal, o alguna idea de que hace...

¿lanza un query contra una bd? ¿con que componentes?

¿busca en el sistema de archivos mediante un bucle?

¿lanza una consulta a un servidor de aplicaciones? ¿MIDAS acaso? ¿INDY?

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #10  
Antiguo 17-10-2006
jesusferan jesusferan is offline
Registrado
 
Registrado: sep 2006
Posts: 1
Poder: 0
jesusferan Va por buen camino
Cita:
Empezado por jachguate
En primer lugar te recomiendo el uso de las constantes definidas en la unidad Controls:

crHourGlass -> Reloj de arena
crArrow -> Flecha (normal)
crDefault -> Vuelve al que sea default para la clase de ventana, normalmente crArrow

Para mas constantes, buscá en la ayuda "TCursor type".

Otro punto es que debes preocuparte porque aunque algo falle, el cursor vuelva a la normalidad. Yo lo hago encerrando la llamada al proceso en un try/finally:

Código Delphi [-]Screen.Cursor := crHourGlass; try Proceso; finally Screen.Cursor := crDefault; end;


Por último, en tu caso parece que el proceso_de_busqueda retorna sin haber realizado todo el proceso... quizas lo deja corriendo en otro hilo. Si queres que funcione, este procedimiento no debe retornar el control hasta que haya terminado de realizarse la busqueda.

Hasta luego.

Gracias, tu respuesta funciona a la perfeccion
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 08:30:49.


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
Copyright 1996-2007 Club Delphi