Está en la página 1de 2

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;

type
TForm1 = class(TForm)
ProgressBar1: TProgressBar;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure UpdateProgressBar(AMax, APosition: Integer);
end;

type
TMyThread = class(TThread)
protected
procedure Execute; override;
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

{ TMyThread }

procedure TMyThread.Execute;
var
I: Integer;
begin
for I := 1 to 100 do
begin
Synchronize(
procedure
begin
Form1.UpdateProgressBar(100, I);
end
);
Sleep(50); // Simulate some work
end;
end;

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);


var
MyThread: TMyThread;
begin
MyThread := TMyThread.Create(True);
MyThread.FreeOnTerminate := True;
MyThread.Start;
end;

procedure TForm1.UpdateProgressBar(AMax, APosition: Integer);


begin
ProgressBar1.Max := AMax;
ProgressBar1.Position := APosition;
end;

end.

//En este ejemplo, el botón Button1 inicia un hilo (TMyThread) que actualiza el
valor de la barra de progreso (ProgressBar1) cada 50 ms durante 100 iteraciones. El
método UpdateProgressBar es un método público del formulario que actualiza el valor
máximo y la posición de la barra de progreso. El método Execute del hilo utiliza el
método Synchronize para llamar a UpdateProgressBar desde el hilo principal. La
propiedad FreeOnTerminate está establecida en True para que el objeto de hilo sea
liberado automáticamente cuando termine de ejecutarse.//

También podría gustarte