Implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Thread1:=TSimpleThread.Create(false);
Thread1.Priority:=tpLowest;
Thread2:=TSimpleThread.Create(false);
Thread2.Priority:=tpLowest;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Edit1.Text:=IntToStr(Thread1.Count);
Edit2.Text:=IntToStr(Thread2.Count);
Thread1.Count:=0;
Thread2.Count:=0;
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
var
i:integer;
Priority:TThreadPriority;
begin
Priority:=tpLowest;
for i:=0 to (Sender as tTrackBar).Position-1 do
inc(Priority);
if Sender=TrackBar1
then
Thread1.Priority:=Priority
else
Thread2.Priority:=Priority;
end;
end.
Результаты выполнения программы:
Пример 3. Текст модуля:
unit Main;
Interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, ExtCtrls, Menus, MoveThread;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
Help1: TMenuItem;
TrackBar1: TTrackBar;
TrackBar2: TTrackBar;
TrackBar3: TTrackBar;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
PaintBox1: TPaintBox;
PaintBox2: TPaintBox;
PaintBox3: TPaintBox;
procedure Button2Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure FormShow(Sender: TObject);
public
Thread1, Thread2, Thread3: TMoveThread;
end;
var
Form1: TForm1;
pic1,pic2:TBitMap;
Implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
begin
if not Thread1.Suspended
then
Thread1.Suspend;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
if not Thread2.Suspended
then
Thread2.Suspend;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
if not Thread3.Suspended
then
Thread3.Suspend;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if Thread1.Suspended
then
Thread1.Resume;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if Thread2.Suspended
then
Thread2.Resume;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
if Thread3.Suspended
then
Thread3.Resume;
end;
procedure TForm1.TrackBar1Change(Sender: TObject);
var
i:integer;
Priority:TThreadPriority;
begin
Priority:=tpIdle;
for i:=0 to (Sender as TTrackBar).Position-1 do
inc(Priority);
if Sender=TrackBar1
then
Thread1.Priority:=Priority
else
if Sender=TrackBar2
then
Thread2.Priority:=Priority
else
Thread3.Priority:=Priority;
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
pic1:=TBitMap.Create;
pic1.LoadFromFile('pic.bmp');
pic2:=TBitMap.Create;
pic2.LoadFromFile('pic.bmp');
Thread1:=TMoveThread.Create(pic1,pic2,PaintBox1);
Thread1.Priority:=tpLowest;
Thread2:=TMoveThread.Create(pic1,pic2,PaintBox2);
Thread2.Priority:=tpLowest;
Thread3:=TMoveThread.Create(pic1,pic2,PaintBox3);
Thread3.Priority:=tpLowest;
end;
end.
Результаты работы
программы:
Задание 2.2. Текст модуля:
unit LAB2_1;
