Bauhaus1975
29-12-2010, 17:55:48
Hola de nuevo foreros
Seguramente será una pregunta tonta, pero no doy 'con la tecla'. Resulta que necesito mostrar un progressbar dentro de un formulario que abro mientras se realiza un proceso que tarda varios segundos (a modo de animación de espera). Y no sé cómo hacerlo porque al mostrar el formulario que contiene el progressbar, al hacer el '.show' se queda parada ahí la ejecución.
Pormenorizadamente:
Tengo un formulario (form1) donde se ejecuta un proceso. Y desde aquí llamo a otro form 'formEspera', que muestra el título de proceso que se está realizando y el progress bar:
formEspera := TformEspera.Create(Application);
try
formEspera.Inicio('ProcesoX', self);
// Lanzamiento del proceso
procesoX(...);
formEspera.Close();
showmessage('Proceso concluido');
finally
formEspera.Release;
Y formEspera, el formulario que se muestra a modo 'pop up' conteniendo el progressbar:
type
TformEspera = class(TForm)
ProgressBar1: TProgressBar;
lbTitulo: TLabel;
Timer1: TTimer;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Timer1Timer(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
accion : String;
padre : TForm;
public
{ Public declarations }
procedure inicio(pAccion:String; padre:TForm);
end;
var
formEspera: TformEspera;
implementation
procedure TformEspera.FormShow(Sender: TObject);
begin
self.padre.SetFocus;
end;
procedure TformEspera.inicio(pAccion:String; padre:TForm);
begin
self.accion := pAccion;
// Ponemos título
if (self.accion = 'ProcesoX') then
self.lbTitulo.Caption := 'Realizando proceso X';
// Arrancamos timer para que controle el progress bar
self.Timer1.Enabled := true;
// Mostramos formulario
self.showmodal;
end;
procedure TformEspera.Timer1Timer(Sender: TObject);
begin
self.ProgressBar1.StepIt;
self.update;
end;
procedure TformEspera.FormClose(Sender: TObject; var Action: TCloseAction);
begin
self.Release();
end;
// END UNIT
end.
¿Alguien puede decirme como hacer para que una vez mostrado el formEspera, quede en primer plano este formulario con el progrssbar andando, y siga la ejecución por form1?
Gracias y un saludo.
Seguramente será una pregunta tonta, pero no doy 'con la tecla'. Resulta que necesito mostrar un progressbar dentro de un formulario que abro mientras se realiza un proceso que tarda varios segundos (a modo de animación de espera). Y no sé cómo hacerlo porque al mostrar el formulario que contiene el progressbar, al hacer el '.show' se queda parada ahí la ejecución.
Pormenorizadamente:
Tengo un formulario (form1) donde se ejecuta un proceso. Y desde aquí llamo a otro form 'formEspera', que muestra el título de proceso que se está realizando y el progress bar:
formEspera := TformEspera.Create(Application);
try
formEspera.Inicio('ProcesoX', self);
// Lanzamiento del proceso
procesoX(...);
formEspera.Close();
showmessage('Proceso concluido');
finally
formEspera.Release;
Y formEspera, el formulario que se muestra a modo 'pop up' conteniendo el progressbar:
type
TformEspera = class(TForm)
ProgressBar1: TProgressBar;
lbTitulo: TLabel;
Timer1: TTimer;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Timer1Timer(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
accion : String;
padre : TForm;
public
{ Public declarations }
procedure inicio(pAccion:String; padre:TForm);
end;
var
formEspera: TformEspera;
implementation
procedure TformEspera.FormShow(Sender: TObject);
begin
self.padre.SetFocus;
end;
procedure TformEspera.inicio(pAccion:String; padre:TForm);
begin
self.accion := pAccion;
// Ponemos título
if (self.accion = 'ProcesoX') then
self.lbTitulo.Caption := 'Realizando proceso X';
// Arrancamos timer para que controle el progress bar
self.Timer1.Enabled := true;
// Mostramos formulario
self.showmodal;
end;
procedure TformEspera.Timer1Timer(Sender: TObject);
begin
self.ProgressBar1.StepIt;
self.update;
end;
procedure TformEspera.FormClose(Sender: TObject; var Action: TCloseAction);
begin
self.Release();
end;
// END UNIT
end.
¿Alguien puede decirme como hacer para que una vez mostrado el formEspera, quede en primer plano este formulario con el progrssbar andando, y siga la ejecución por form1?
Gracias y un saludo.