PDA

Ver la Versión Completa : Ventana de Espera


totote
16-05-2008, 18:15:03
Buenas gente.

He creado una aplicación que importa datos desde una base de datos a otra, hasta ahi voy bien, pero cuando son muchos regitros, se demora un poco, entonces para hacer un poco menos tediosa la espera cree un formulario con un gif animado, entonces mientras realiza la importación muestro el formulario, el problema es que al formulario me lo muestra pero al gif animado no, hice una prueba de poner un boton para q me muestre el formulario al hacerle click y si me lo muestra al formulario y al gif animado, el problema es que cuando esta guardando los datos no me lo muestra al gif que es lo que debo hacer.

Este es el código q utilizo para mostrar el formulario:


procedure TfrmPrincipal.btnImportarClick(Sender: TObject);
var
e: TfrmEspera;
begin
dm.Table1.First;
e:= TfrmEspera.Create(self);
i:= 0;
e.Show;
e.Enabled:= True;
while i < (dm.Table1.RecordCount) do
begin
.
// Código de ingreso de datos
.
dm.Table1.Next;
i:= i + 1;
end;
dm.cdsDestino.ApplyUpdates(0);
e.Enabled:= False;
e.Close;
e.Free;
end;


Alguna sugerencia? lo estoy haciendo bien? como debería hacerlo?

Saludos.

jhonny
16-05-2008, 19:29:17
Prueba haciendo un llamado al método Refresh de ese formulario, dentro del Ciclo y nos cuentas:


procedure TfrmPrincipal.btnImportarClick(Sender: TObject);
var
e: TfrmEspera;
begin
dm.Table1.First;
e:= TfrmEspera.Create(self);
i:= 0;
e.Show;
e.Enabled:= True;
while i < (dm.Table1.RecordCount) do
begin
.
// Código de ingreso de datos
.
dm.Table1.Next;
i:= i + 1;
e.Refresh;
end;
dm.cdsDestino.ApplyUpdates(0);
e.Enabled:= False;
e.Close;
e.Free;
end;

totote
16-05-2008, 19:38:25
me muestra el gif pero siempre desde el principio, hay alguna forma para darle prioridad a un formulario?

roman
16-05-2008, 20:26:33
A ver, en lugar de e.Refresh prueba poniendo Application.ProcessMessages.

// Saludos

totote
16-05-2008, 20:36:57
Roma anduvo prefectirigillo. Gracias Muchachos

Saludos.

brakaman
16-05-2008, 21:24:55
Una curiosidad sobre tu codigo amigo.....



procedure TfrmPrincipal.btnImportarClick(Sender: TObject);
var
e: TfrmEspera;
begin
dm.Table1.First;
e:= TfrmEspera.Create(self);
i:= 0;
e.Show;
e.Enabled:= True; // Porque utilizas esto si el formulario ya esta Enabled.
while i < (dm.Table1.RecordCount) do
begin
.
// Código de ingreso de datos
.
dm.Table1.Next;
i:= i + 1;
e.Refresh;
end;
dm.cdsDestino.ApplyUpdates(0);
e.Enabled:= False; // ¿Porque? Si posteriormente vas a cerrarlo.....
e.Close;
e.Free;
end;



Perdona por la intromision pero estoy intrigadisimo... Cotilla que es uno.:D

totote
20-05-2008, 14:30:47
jaja sisis eso lo puse porque ya no sabia que hacer y empece a probar cosas para ver si alguna andaba despues me olvide de sacarlo jejeje.

Saludos