Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ventana de Espera (https://www.clubdelphi.com/foros/showthread.php?t=56425)

totote 16-05-2008 18:15:03

Ventana de Espera
 
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:

Código Delphi [-]
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:

Código Delphi [-]
 
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.....


Código Delphi [-]
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


La franja horaria es GMT +2. Ahora son las 17:42:12.

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