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 03-06-2004
Diegoval Diegoval is offline
Miembro
 
Registrado: mar 2004
Ubicación: Buenos Aires, Argetina
Posts: 16
Poder: 0
Diegoval Va por buen camino
Programa comando

Hola foro!

Les comento mi problema:

Tengo un programita comando que recibe dos parametros...bueno... eso es lo de menos porque eso funciona todo bien, el problema los tengo al hacer lo siguiente:

en el evento OnShow del formulario principal tengo código que procesa los parametros ingresados (todo esto mostrando una barra que muestra como va el progreso...), el problema es que se ejecuta primero el código y luego muestra el formulario, es decir una vez que sale del método OnShow recién ahí muestra en la pantalla el form.

Una solución seria poner algo como un TTimer con un intervalo de 2 segundos y habilitarlo en el OnShow, pero me parece medio feo, seguramente debe haber algo mejor...

Bueno, muchas gracias...
Diego.
Responder Con Cita
  #2  
Antiguo 03-06-2004
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
No entiendo muy bien el planteo, pero no puedes cargar las cosas antes de hacer un Form.Show??


¿Qué es un programa comando?
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #3  
Antiguo 03-06-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por Diegoval
en el evento OnShow del formulario principal tengo código que procesa los parametros ingresados (todo esto mostrando una barra que muestra como va el progreso...), el problema es que se ejecuta primero el código y luego muestra el formulario, es decir una vez que sale del método OnShow recién ahí muestra en la pantalla el form.
Esto lo hemos tratado anteriormente. Lo que yo hago es definir un mensaje personalizado, digamos CM_AFTERSHOW. En el evento OnShow hago un 'post' de dicho mensaje:

PostMessage(Handle, CM_AFTERSHOW, 0, 0);

y en el manejador de dicho mensaje hago los cálculos.

Al usar PostMessage en lugar de SendMessage te aseguras de que el mensaje no comienza a procesarse sino hasta que se terminen de procesar los mensajes que ya haya en la cola de mensajes, lo cual incluye todos los necesarios para que el formulario termine de cargarse.

// Saludos
Responder Con Cita
  #4  
Antiguo 03-06-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
To lo haria en el dpr, algo asi

Código Delphi [-]
Application.Initialize;
Application.ProcessMessages;
//Carga la pantalla de progreso
Progreso := TProgreso.Create;
try
   Progreso.Show;
   if not ObRutinas.EjecutarParametros then 
      ObRutinas.msgError( msErrorParametros );
finally
   FreeandNil(Progreso);
end;
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
Responder Con Cita
  #5  
Antiguo 03-06-2004
Amilius Amilius is offline
No confirmado
 
Registrado: ene 2004
Posts: 138
Poder: 0
Amilius Va por buen camino
¿Que tal con una ventana auxiliar (un form simple que no es creado al inicio) que muestre el estado de avance del cálculo?

Yo hice esto y funcionó muy bien, en el onCreate del form principal:

- Creas la ventana auxiliar (Ojo, es un form que NO se crea al inicio, eso te fijas en el "proyect source").
- actualizas la barra de progreso en la ventana las veces necesarias.
- Eliminas la ventana auxiliar.

Además, eventualmente te servirá como "splashscreen" de esas que muestran el avance de la carga del programa, gráficos, sonidos, etc.
Responder Con Cita
  #6  
Antiguo 04-06-2004
vecino vecino is offline
Miembro
 
Registrado: may 2003
Ubicación: Málaga (España)
Posts: 36
Poder: 0
vecino Va por buen camino
Hola:

Hay muchas formas de conseguir lo que quieres, además de lo que ya te han explicado los compañeros, también te puede servir algo muy sencillo, poner el código en el OnActivate en lugar de en el OnShow. Sólo debes de controlar que no vuelva a pasar por ese evento más de una vez (por si acaso pulsa en otra ventana y luego vuelve de nuevo a ella).

Saludos.
__________________
:)
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 21:03:22.


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