main.pas

来自「SourceCode for Delphi. potoki v delphi」· PAS 代码 · 共 99 行

PAS
99
字号
unit Main;

interface

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

type
  TForm1 = class(TForm)
    CheckBox1: TCheckBox;
    CheckBox2: TCheckBox;
    CheckBox3: TCheckBox;
    TrackBar1: TTrackBar;
    TrackBar2: TTrackBar;
    TrackBar3: TTrackBar;
    ProgressBar1: TProgressBar;
    ProgressBar2: TProgressBar;
    ProgressBar3: TProgressBar;
    BitBtn1: TBitBtn;
    procedure BitBtn1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure TrackBar1Change(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private declarations }
  public
    PT: array [1..3] of TPaintThread;
  end;

var
  Form1: TForm1;
  CriticalProcess:TCriticalSection;
  CriticalPaint:TCriticalSection;


implementation

{$R *.dfm}

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Application.Terminate;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
Form1.Canvas.Lock;
if (Sender as TCheckbox).Checked then
PT[(Sender as TCheckbox).Tag].Resume
else PT[(Sender as TCheckbox).Tag].Suspend;
  Form1.Canvas.UnLock;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
PT[(Sender as TTrackBar).Tag].Priority :=
TThreadPriority ((Sender as TTrackBar).Position);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  CriticalProcess:=TCriticalSection.Create;
  CriticalPaint:=TCriticalSection.Create;
  PT [1] := TPaintThread.Create(true);
  PT [2] := TPaintThread.Create(true);
  PT [3] := TPaintThread.Create(true);
  PT[1].InitColor(clRed);
  PT[2].InitColor(clBlue);
  PT[3].InitColor(clGreen);
  ProgressBar1.Max:=Form1.ClientHeight;
  ProgressBar2.Max:=Form1.ClientHeight;
  ProgressBar3.Max:=Form1.ClientHeight;
  ProgressBar1.Step:=Form1.ClientHeight div 10;
  ProgressBar2.Step:=Form1.ClientHeight div 10;
  ProgressBar3.Step:=Form1.ClientHeight div 10;
  PT[1].ProgressBar:=ProgressBar1;
  PT[2].ProgressBar:=ProgressBar2;
  PT[3].ProgressBar:=ProgressBar3;

end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 Canvas.Lock;
  try
    Canvas.Pen.Color := Color;
    Canvas.Brush.Color := Color;
    Canvas.Ellipse (x - 30, y - 30, x + 30, y + 30);
  finally
    Canvas.Unlock;
  end;
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?