📄 demounit.pas
字号:
unit DemoUnit;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, ExtCtrls, BusThread;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Bevel1: TBevel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
btStart: TButton;
btStop: TButton;
Button3: TButton;
Button4: TButton;
ProgressBar1: TProgressBar;
ButtonStopAll: TButton;
btSuspend: TButton;
btResume: TButton;
BThread1: TBThread;
BThread2: TBThread;
BThreadGroup1: TBThreadGroup;
Label6: TLabel;
ComboBox1: TComboBox;
btStartAll: TButton;
procedure BThread1Execute(Sender: TObject; Thread: TBExecuteThread;
var Data: Pointer);
procedure BThread1Start(Sender: TObject; Thread: TBExecuteThread;
var Data: Pointer);
procedure BThread1Terminate(Sender: TObject;
Thread: TBExecuteThread; var Data: Pointer);
procedure btStartClick(Sender: TObject);
procedure btStopClick(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure ButtonStopAllClick(Sender: TObject);
procedure BThreadGroup1Start(Sender: TObject;
Thread: TBExecuteThread; var Data: Pointer);
procedure BThreadGroup1Terminate(Sender: TObject;
Thread: TBExecuteThread; var Data: Pointer);
procedure BThreadGroup1Update(Sender: TObject;
Thread: TBExecuteThread; var Data: Pointer; Percent: Integer);
procedure BThread2Execute(Sender: TObject; Thread: TBExecuteThread;
var Data: Pointer);
procedure BThread2Start(Sender: TObject; Thread: TBExecuteThread;
var Data: Pointer);
procedure BThread2Terminate(Sender: TObject;
Thread: TBExecuteThread; var Data: Pointer);
procedure SynchroEvent2 (Sender: TBThread; Thread: TBExecuteThread; var Data: Pointer);
procedure SynchroEvent1 ( Sender: TObject );
procedure btSuspendClick(Sender: TObject);
procedure btResumeClick(Sender: TObject);
procedure BThread1Resume(Sender: TObject);
procedure BThread1Suspend(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BThread1Finish(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure btStartAllClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
Value1 : Integer;
Value2 : Integer;
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.BThread1Execute(Sender: TObject;
Thread: TBExecuteThread; var Data: Pointer);
var i : Integer;
begin
Value1 := 0;
for i := 0 to 100 - 1 do
begin
Thread.PercentProgress := i div 10;
SleepEx ( 20, false ); //青溴疰赅 磬 20 惕腚柩尻
if ( Thread.Terminated ) then Break;
Inc ( Value1 );
Thread.Synchronize ( SynchroEvent1 );
end;
end;
procedure TForm1.SynchroEvent1 ( Sender: TObject );
begin
Label2.Caption := IntToStr ( Value1 );
end;
//---------------------------------------------------------------------------
procedure TForm1.BThread2Execute(Sender: TObject;
Thread: TBExecuteThread; var Data: Pointer);
var
i : Integer;
begin
Value2 := 0;
for i := 0 to 1000 - 1 do
begin
Thread.PercentProgress := i div 10;
SleepEx ( 20, false );
if ( Thread.Terminated ) then Break;
Inc ( Value2 );
Thread.Synchronize ( SynchroEvent2, Data );
end;
end;
procedure TForm1.SynchroEvent2 (Sender: TBThread; Thread: TBExecuteThread; var Data: Pointer);
begin
TLabel( Data ).Caption := IntToStr ( Value2 );
end;
//---------------------------------------------------------------------------
procedure TForm1.BThread1Start(Sender: TObject;
Thread: TBExecuteThread; var Data: Pointer);
begin
Label6.Caption := '0';
Label1.Caption := 'Start';
btStart.Enabled:=False;
btStop.Enabled:=True;
btSuspend.Enabled:=True;
btResume.Enabled:=False;
Data := Label2;
end;
procedure TForm1.BThread1Terminate(Sender: TObject;
Thread: TBExecuteThread; var Data: Pointer);
begin
Label1.Caption := 'Stop';
btStart.Enabled:=True;
btStop.Enabled:=False; //碾
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -