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 21-07-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
Como Evitar que la Pantalla se "blanquee" durante un proceso

Buenos dias

no sé si a alguno de ustedes le ha pasado que mientras estan haciendo un proceso de actualizacion o la ejecucion de un query complicado el cual demora si minimizamos o pasamos a otra ventana (fuera del sistema) y regresamos al sistema, la pantalla se encuentra en blanco y no aparecen las imagenes (llamese form, botones, grids, etc) hasta que el proceso culmine

he colocado un ProgressBar que me indica el progreso.. pero solo se ve ese componente cuando realizo la accion anterior

algun comentario?

he colocado Application.ProcessMessages pero tampoco me da resultados
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #2  
Antiguo 21-07-2011
x_aguilarf x_aguilarf is offline
Miembro
 
Registrado: abr 2006
Posts: 22
Poder: 0
x_aguilarf Va por buen camino
Prueba a poner el proceso dentro de un Thread.

Saludos
Responder Con Cita
  #3  
Antiguo 21-07-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Además, luego que actualices el estado del ProgressBar, utiliza el procedimiento Update del formulario que "queda en blanco".

Saludos,
Chris
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #4  
Antiguo 21-07-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
estuve revisando informacion sobre Hilos de Ejecucion y esta muy interesante

el tema es que no comprendo bien como implementarlo, les comento lo que estoy haciendo

tengo un form donde hay edits y en cada edit se almacena la ubicacion de un archivo plano para su procesamiento

hay un boton (procesar) que al darle Click, pues hace lo que iene que hacer con los archivos

como hago para aplicar los hilos?

tengo esto

Código Delphi [-]
type
TMiHilo = class(TThread)
  private
    procedure Transferir;
  protected
    procedure Execute; override;
  end;

Código Delphi [-]
 
procedure TMiHilo.Execute;
begin
  Transferir;
end;

la cosa es... como le digo al hilo que funcione cuando doy click en Procesar...


CRIS... no encontre el procedimiento Update en el form Uso Delphi 7
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #5  
Antiguo 21-07-2011
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Estas cosas con linux no pasa porque la multitarea funciona mucho mejor y reparte el tiempo de procesador para no dejar "tirado" a ninguno. Que ese es el problema de la pantalla en blanco, que el procesador no tiene tiempo para repintar la pantalla al estar ocupado con otra cosa.
Si no lo digo... reviento

De todas formas este problema que tienes te ocurrirá solamente si usas el mismo equipo como cliente y servidor, ya que si usas un sistema cliente/servidor "normal", o sea, con un equipo haciendo de servidor, no tendrás ese problema porque el ocupado será el servidor, pero no tu ordenador, el cliente.
Responder Con Cita
  #6  
Antiguo 21-07-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Cita:
Empezado por oscarac Ver Mensaje
CRIS... no encontre el procedimiento Update en el form Uso Delphi 7
Utiliza un código similar a este:
Código Delphi [-]
ProgressBar1.Step := ...
Formulario.Update; // <-- este es el procedimiento del que te he hablado

Saludos,
Chris
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #7  
Antiguo 21-07-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
De todas formas este problema que tienes te ocurrirá solamente si usas el mismo equipo como cliente y servidor, ya que si usas un sistema cliente/servidor "normal", o sea, con un equipo haciendo de servidor, no tendrás ese problema porque el ocupado será el servidor, pero no tu ordenador, el cliente.
De hecho también ocurrirá aunque tengas distribuido el cliente y el servidor en distintos equipos. El cliente también se "pegará" al esperar la respuesta del servidor.

Saludos,
Chris
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #8  
Antiguo 21-07-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
lo hice funcionar con hilos
en el evento onClick del button pongo esto y se ejecuta

Código Delphi [-]
 
  TMiHilo.Create(False);

el problema que tuve fue que en la ehjecucion de los comandos del hilo, no me reconocia las tablas ni querys que estaban en el formulario

tuve que invocar al mismo formulario para que lo reconozca

Sin hilo
Código Delphi [-]
 
tblingreso.open
Con hilo
Código Delphi [-]
 
frmrecepcion.tblingreso.open;
es normal eso? o me falto declarar algo
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #9  
Antiguo 21-07-2011
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Cita:
Empezado por oscarac Ver Mensaje
lo hice funcionar con hilos
en el evento onClick del button pongo esto y se ejecuta

Código Delphi [-]
 
  TMiHilo.Create(False);
....
Código Delphi [-]
 
frmrecepcion.tblingreso.open;
es normal eso? o me falto declarar algo
Oscarac, ten en cuenta que la implementación de código o aplicaciones multihilos no es tan sencilla a cómo lo has hecho. El código frmrecepcion.tblingreso.open; te compilará perfectamente sin ningún problema. Sin embargo, este código te generará errores al momento de ejecución ya que por ley dos hilos no pueden escribir sobre una misma variable al mismo tiempo. Es lo que tú estás haciendo con esa línea de código. Estás violentando la ley y esto se verá reflejado en al momento de ejecución.

La clase TThread define un procedimiento especial llamado Synchronize. Este procedimiento es la abstracción más alta de lo que se conoce cómo semáforos. Todas las lecturas/escrituras que hagas a frmrecepcion deben ser por medio del procedimiento Synchronize. Para hacer las lecturas/escrituras por medio de Syncronize, todas éstas deben estar encapsuladas en procedimientos separados.

Saludos,
Chris
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #10  
Antiguo 21-07-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
entonces tengo que leer mas
__________________
Dulce Regalo que Satanas manda para mi.....
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
Como puedo evitar que los botones se "Focusen"? Gattaca Varios 2 22-03-2009 04:24:25
ayuda ejecutando un proceso como "SYSTEM" y haciendo que no se pueda terminar lostprophets Varios 2 05-02-2008 02:28:50
ADO-Access. Configurar "ConnectionString" en pc del cliente durante la insalación. Wonni Conexión con bases de datos 9 17-05-2007 18:50:51
Ventana MDI, "Siempre visible" y "Pantalla completa" ixMike API de Windows 7 11-04-2007 18:36:55
"Unable to complete..." La conexion se pierde durante la ejecución ESA Firebird e Interbase 2 24-03-2004 14:09:49


La franja horaria es GMT +2. Ahora son las 23:06:09.


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