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 18-06-2007
Avatar de Wonni
Wonni Wonni is offline
Miembro
 
Registrado: abr 2006
Posts: 261
Poder: 19
Wonni Va por buen camino
Actualizar form al volver a el mientras se realiza proceso largo(p.e: recorrer db)

hola;

A ver si se explicarme :

Tengo un form en el cual por ejemplo mando hacer una ciera operacion a una BD. Esta tarda mucho y me voy a otra cosa. Al volver a mi aplicacion, pues no se muestra hasta terminar. Osea no se refresca la ventana.

Imaginemos que recorremos una tabla con miles de registros y con enablecontros. Vemos en el DBGrid como los recorre. Nos vamos a otra parte y entonces volvemos. Pues ya no se ve al rejilla y como se va recorriendo, bueno, esque no se ve nada, esta en blanco la zona del form.

¿Como se puede solucionar este problema?

Es mas, otra cosa. Si el DBGrid está en una pagina de un PageControl, ¿como puedo irme a otra pagina mientras se hace el recorrido por la tabla?
Responder Con Cita
  #2  
Antiguo 18-06-2007
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
Pues me parece que la cosa no es tan fácil como parece, o mucho me equivoco o no vas a tener más remedio que hacer uso del Multihilo.(Threads).

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 18-06-2007
Avatar de Wonni
Wonni Wonni is offline
Miembro
 
Registrado: abr 2006
Posts: 261
Poder: 19
Wonni Va por buen camino
Pues ya me temia yo que iria por ahi la cosa. Pero pense que tal vez la solucion seria otra.

Pues nada, habrá que tratar el tema, pues es algo que todavia no he hecho el trabajar con varios Threads.

Gracias
Responder Con Cita
  #4  
Antiguo 18-06-2007
lgarcia lgarcia is offline
Miembro
 
Registrado: jul 2004
Posts: 479
Poder: 20
lgarcia Va por buen camino
Actualizar form

Hola:

Me parece que dandole otro enfoque podrias no utilizar el DBGrid, porque al usuario no debe interesarle eso, sino que se ejecute la operacion y de esta forma puedes coger el control hacia otro formulario y cuando se termine la operacion regresas al formulario con su correspondiente mensaje de que se realizo exitosamente la operacion. Piensa en esta opcion a ver.

Saludos
Luis Garcia

Todos los caminos conducen a Roma
Responder Con Cita
  #5  
Antiguo 18-06-2007
Avatar de Wonni
Wonni Wonni is offline
Miembro
 
Registrado: abr 2006
Posts: 261
Poder: 19
Wonni Va por buen camino
Gracias lgarcia;

El caso, es que no se trata particularmente de un DBGrid. Ha sio por poner un ejemplo, eso si real, pues me ocurre. Ahora ya desactivo los controles, antes no. Ademas de que queda mas elegante, va pero bastante mas rapido

Pero el asunto es que, aunque no muestre el DBGrid, mientras se realiza esa operacion ocurre lo mismo al salir de mi aplicacion y volver. Que no se ve nada, se queda como colgado hasta terminar. En realidad no esta colgado, aunque si al usuario le da por insistir mucho pues entonces si cuelga la aplicacion.

Parece ser que la solución es lo dicho por marcoszorrilla. A no ser que exista otra, que es lo que yo me preguntaba.
Responder Con Cita
  #6  
Antiguo 18-06-2007
Avatar de ixMike
ixMike ixMike is offline
Miembro
 
Registrado: feb 2004
Posts: 1.151
Poder: 22
ixMike Va por buen camino
Hey, Wonni!

¿Has probado con Application.ProcessMessages?

Llama a ese procedimiento cada vez que se repita el bucle que recorre la tabla. Lo que hace es que realiza todos los procedimientos que están a la espara (refrescar imágenes, refrescar canvas, clicks, etc...).

Pero tienes que llevar cuidado, porque si ahora al darle a la "x" para cerrar la ventana no pasa nada (hasta que acabe el trabajo, y la ventana se cerraría), ahora, al llamar a ProcessMessages se procesaría el click que está en espera y el programa se cerraría. Y no sólo con la "x", sino con los clicks a los botones o las combinaciones de teclas de menús. Lo ideal sería que lo desabilitaras todo (todo lo necesario) para que esos problemas no sucedan, y para combinaciones de teclas, pues una variabla booleana ("trabajando", por ejemplo) para comprobar si el proceso está en marcha o no sería una buena idea.

Saludos a todos.
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Actualizar form mientras se reciben datos por sockets JMGR Internet 3 23-12-2011 21:47:27
volver a una página anterior y actualizar halizia HTML, Javascript y otros 5 25-04-2007 12:57:03
Desactivar un form mientras se ejecuta otra aplicación hvelascos Internet 2 19-01-2007 01:50:41
mensaje mientras hay proceso marcelofabiani Varios 9 13-02-2006 05:18:27
Proceso muy largo ? Coco_jac Varios 5 22-12-2005 21:54:59


La franja horaria es GMT +2. Ahora son las 21:13:45.


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