Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como hacer esto ? (https://www.clubdelphi.com/foros/showthread.php?t=71272)

radge 10-12-2010 17:12:31

Como hacer esto ?
 
Buenas tengo una duda , tengo un proyecto que es un actualizador de ficheros , lo tengo estructurado con funciones y procedimientos , pero el programa tiene que ser totalmente transparente para el usuario , así que nada más mostrar el formulario (form1.onshow() ) allí hago las llamadas a funciones y procedimientos que esto lo que hace es conectar-se a un ftp , descargar archivos , ponerlos en su sitio etc ...

Esto lo tengo con una progressbar para ver un poco el estado del mismo , el problema es que no veo el formulario (form1.onshow) hasta que se han ejecutado todas las operaciones , he probado a poner form1.refresh entre medio de las operaciones para ver si refrescava el formulario pero no lo hace.

Se os ocurre que puedo hacer ?

gracias , radge

Casimiro Notevi 10-12-2010 17:56:21

No lo he entendido muy bien, pero creo que si lo pones en el onactivate, se verá.

Y por cierto, amigo radge, ya llevas un montón de mensajes para que pongas ese título a tu pregunta, te recuerdo que debes poner títulos descriptivos que sirvan luego para hacer búsquedas según el tema.
¿Ya olvidaste la guía de estilo? ;)

Chris 10-12-2010 18:02:35

Usa Form.Update

ecfisa 10-12-2010 18:33:00

Cita:

el problema es que no veo el formulario (form1.onshow) hasta que se han ejecutado todas las operaciones
Hola.

Si los procesos transcurren antes o durante el evento FormShow, no veo solución en forma directa.
Pero creo que lo que te va a funcionar, es crear y capturar un mensaje AfterShow.

Ejemplo:
Código Delphi [-]
...
const
  TAREAS_AFTER_SHOW = WM_USER + 300;
type
  TForm1 = class(TForm)
    procedure FormShow(Sender: TObject);
  private
    procedure TareasAfterShow(var Msg: TMessage); message TAREAS_AFTER_SHOW;
  public
  end;
...
interface
...
procedure TForm1.FormShow(Sender: TObject);
begin
  // Lo que quieras mostrar... 
  Caption:= 'Evento OnShow';
  PostMessage(Handle, TAREAS_AFTER_SHOW, 0, 0);
end;

procedure TForm1.TareasAfterShow(var Msg: TMessage);
begin
  // Aca los procesos que quieras
  Sleep(2000); // simula  demora de procesos
  ShowMessage('Tareas finalizadas');
end;
...

Saludos.

Neftali [Germán.Estévez] 13-12-2010 11:35:09

Pues iba a proponer lo mismo que ya ha dicho ecfisa. Creo que es la solución más simple. Por otro lado, dependiendo del tipo de operaciones y de las cosas que quieras mostrar en el form1, deberás ir refrescándolo o utilizar threads (pero ese ya es otro tema).

Prueba con lo que te ha comentado y ya dirás...

[ecfisa] + 1 :D

radge 21-12-2010 19:25:24

Muchas gracias por vuestras respuestas.

Al final lo hize así como me dijisteis.

saludos radge


La franja horaria es GMT +2. Ahora son las 17:24:34.

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