16,747
社区成员




unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
ProgressBar1: TProgressBar;
Label1: TLabel;
procedure Button1Click(Sender: TObject);
procedure threadtest(strtest:string);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.threadtest(strtest:string);
begin
showmessage(strtest);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
threadtest('str');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
I: Integer;
begin
for I := 0 to ProgressBar1.Max do
begin
Label1.Caption := '主线程运行中';
ProgressBar1.Position := i;
Application.ProcessMessages;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
progressbar1.Max := 1000000;
end;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls;
type
TThread1 = class(Tthread)
protected
procedure Execute;override;
end;
type
TForm1 = class(TForm)
Button1: TButton;
ProgressBar1: TProgressBar;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
ThreadEnd:boolean;
implementation
{$R *.dfm}
procedure TThread1.Execute; // 线程执行
var
I: Integer;
begin
i:=0;
ThreadEnd:=False;
FreeOnTerminate:=true;
Repeat
i:=i+1;
Form1.ProgressBar1.Position := i;
Application.ProcessMessages;
until (I>=Form1.ProgressBar1.Max) or ThreadEnd;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
progressbar1.Max := 100000;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
MyThread:TThread1;
begin
MyThread:=TThread1.Create(False); // 创建线程并执行线程
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
ThreadEnd:=True; // 中止线程
end;
end.