Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   "sincronizar" mostrar Form en Pantalla (https://www.clubdelphi.com/foros/showthread.php?t=61015)

NEG1414 22-10-2008 12:04:36

"sincronizar" mostrar Form en Pantalla
 
Buenas:

Tengo un programa que al iniciarse muestra en pantalla un menu (Form Principal),El caso es que en el evento Form Activate el programa lee una gran cantidad de datos de un archivo, lo que le lleva un monton de tiempo.....Esto produce que del formulario menu se muestre en principio una parte (los bordes) y al rato (una vez leidos los datos del archivo) el resto del form (las opciones menu).

Es posible hacer que lea primero todos los datos y despues muestro el form completo .

Espero que me haya explicado Bien.

Gracias.

duilioisola 22-10-2008 13:09:11

Supongo que podrás solucionarlo utilizando Application.ProcessMesages.

Código Delphi [-]
procedure FormPrincipal.OnActivate...
begin
   {Aqui calcula cosas}
   Application.ProcessMesages;
   Calculo1;
   Application.ProcessMesages;
   Calculo2;
   Application.ProcessMesages;
   Calculo3;
   Application.ProcessMesages;
   Calculo4;
   Application.ProcessMesages;
end;

Lepe 22-10-2008 13:13:03

Creo el proceso correcto sería al contrario, es decir:
- Primero muestras el form y que se pinte en pantalla
- después empieza el proceso gordo. Quizás una barra de progreso, un gif animado, etc ayuden un poco.

Si te interesa este método, busca en el foro por "aftershow".


El FormActivate ¿seguro que es el más adecuado?, ese evento se procesa siempre que pierda el foco una ventana y después lo vuelva a adquirir. Creo que te deberías referir al OnShow, ya que se procesa una sola vez. Pero no sé si es lo que quieres.

Saludos

roman 22-10-2008 16:24:49

Otra posibilidad sería dejar la lectura de datos en un splash screen que se muestre antes del formulario principal, y mostrar éste sólo hasta que se haya concluido la lectura.

// Saludos


La franja horaria es GMT +2. Ahora son las 03:02:59.

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