Ver Mensaje Individual
  #2  
Antiguo 08-12-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola anubis.

En este enlace: Velocidad de un timer, tenes un ejemplo de como implementar un timer con thread. Escribí el código para Delphi pero lo acabo de probar en Lazarus y funciona perfectamente con solo hacer unos pequeños cambios.

En la unidad uTimeThread:
Código Delphi [-]
procedure TTimeThread.Execute;
begin
  while not Terminated do
    Synchronize(@WaitInterval);  // <--- "@" agregado
end;

Y en el ejemplo de uso:
Código Delphi [-]
procedure TForm1.btnComenzarClick(Sender: TObject);
begin
  if not Assigned(TimeThread) then
  begin
    FCont := 1;
    TimeThread:= TTimeThread.Create;
    // Intervalo expresado: 1/1000000 seg. (µs)
    TimeThread.Interval := 100000; {1/10 seg }
    TimeThread.OnTime   := @TimeThreadOnTime; // <--- "@" agregado
    TimeThread.Execute;
  end;
end;
La adaptación a un TProgressBar es tan simple como:
Código Delphi [-]
procedure TForm1.TimeThreadOnTime;
begin
  if (ProgressBar1.Position = 100) and Assigned(TimeThread) then
    TimeThread.Terminate;
  ProgressBar1.Position:= FCont;
  Inc(FCont);
  Application.ProcessMessages;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita