Este es el código que uso después de visionar diferentes paginas de creación de threads, pero la barra de progreso no avanza, yo lo que quiero es que avance mientras no termina de abrirse la fuente de datos, para que el usuario no crea que la aplicación ha quedado colgada. También pensé en realizar el hilo con la fuente de datos, pero al terminar el hilo pierdo toda la referencia a los datos, por lo que no me sirve. Estoy trabajando con Delphi xe6 y para android. Si en lugar de una barra de progreso se tiene que hacer con una animación, me da igual, el caso es que la aplicación realice algo mientras abre los datos, tampoco son muchos registros, una vez abierta la fuente de datos se mueven perfectamente, incluso si hago un update de un registro es instantáneo.
Código Delphi
[-]
THilo = class(TThread)
Progreso: TProgressBar;
procedure Execute; override;
procedure ActualizarProgreso;
end;
Hilo1: THilo; Avance : Integer;
Implementation
procedure THilo.ActualizarProgreso;
begin
Avance:=Avance+1;
Progreso.Value:=Avance;
if Avance>100 then
Begin
Avance:=0;
End;
end;
procedure THilo.Execute;
begin
inherited;
FreeOnTerminate := True;
while not Terminated do
begin
Synchronize(ActualizarProgreso);
end;
end;
Procedure TForm1.AbrirDatos.
Begin
ProgressBar1.Value:=0; ProgressBar1.Visible:=True;
Avance:=0;
Hilo1 := THilo.Create(True); Hilo1.Progreso := ProgressBar1;
Hilo1.Resume;
Query1.Close;
Query1.SQL.Clear;
Query1.Connection:=FdConnection1;
Query1.SQL.Add('Select * From Registros Where Actual=0');
Query1.SQL.Add('Order By Direccion');
if not Query1.Prepared then Query1.Prepare;
Query1.Open;
Hilo1.Terminate;
FreeAndNil( Hilo1 );