⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 demounit.pas

📁 Tread Component for Delphi
💻 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 + -