unit Unit1;
interface
uses
Forms, StdCtrls, Classes, Controls, ComCtrls;
type
TForm1 =
class(TForm)
ProgressBar1: TProgressBar;
Button1: TButton;
ProgressBar2: TProgressBar;
Button2: TButton;
Edit1: TEdit;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
uses
Windows, Dialogs;
{$R *.dfm}
{ TMyThread }
// Thread 1 START Thread 1 START Thread 1 START Thread 1 START
// Thread 1 START Thread 1 START Thread 1 START Thread 1 START
// Thread 1 START Thread 1 START Thread 1 START Thread 1 START
// Thread 1 START Thread 1 START Thread 1 START Thread 1 START
type
Thread_Nr_01 =
class(TThread)
PB: TProgressBar;
procedure Hauptprogramm;
procedure Execute;
override;
end;
procedure Thread_Nr_01.Execute;
begin
while not Terminated
do begin
Synchronize(Hauptprogramm);
// Zugriff auf VCL-Elemente synchronisieren
Sleep(10);
// etwas warten VCLSync
end;
end;
procedure Thread_Nr_01.Hauptprogramm;
var zahlenwert : integer;
begin
// Fertig?
if PB.Position < PB.Max
then PB.StepIt
// Progressbar weiter
else Terminate;
// Thread beenden
end;
// Button 1 Click
procedure TForm1.Button1Click(Sender: TObject);
var Th: Thread_Nr_01;
begin
ProgressBar1.Position := 0;
// ProgressBar 1 auf Null setzen
Th := Thread_Nr_01.Create(True);
// Thread erzeugen (suspended)
Th.FreeOnTerminate := True;
// Thread gibt sich selbst frei
Th.PB := ProgressBar1;
// Progressbar 1 zuweisen
Th.Resume;
// Thread starten
ShowMessage('
Thread für PB1');
// Message anzeigen, Thread läuft weiter
end;
// Button 2 Click
procedure TForm1.Button2Click(Sender: TObject);
var Th: Thread_Nr_01;
begin
ProgressBar2.Position := 0;
// ProgressBar 2 auf Null setzen
Th := Thread_Nr_01.Create(True);
// Thread erzeugen (suspended)
Th.FreeOnTerminate := True;
// Thread gibt sich selbst frei
Th.PB := ProgressBar2;
// Progressbar 2 zuweisen
Th.Resume;
// Thread starten
ShowMessage('
Thread für PB2');
// Message anzeigen, Thread läuft weiter
end;
// Thread 2 START Thread 2 START Thread 2 START Thread 2 START
// Thread 2 START Thread 2 START Thread 2 START Thread 2 START
// Thread 2 START Thread 2 START Thread 2 START Thread 2 START
// Thread 2 START Thread 2 START Thread 2 START Thread 2 START
type
Thread_Nr_02 =
class(TThread)
procedure Hauptprogramm;
procedure Execute;
override;
end;
procedure Thread_Nr_02.Execute;
begin
while not Terminated
do begin
Synchronize(Hauptprogramm);
// Zugriff auf VCL-Elemente synchronisieren
Sleep(10);
// etwas warten VCLSync
end;
end;
procedure Thread_Nr_02.Hauptprogramm;
var zahlenwert : integer;
begin
zahlenwert := 0;
zahlenwert := StrToInt(Form1.Edit1.Text);
if zahlenwert < 10
then begin
Form1.Edit1.Text := intotostr(zahlenwert + 1);
//Form1.Edit1.Text := '1';
end;
Terminate;
// Thread beenden
end;
// Button 3 Click
procedure TForm1.Button3Click(Sender: TObject);
var Th: Thread_Nr_02;
begin
Th := Thread_Nr_02.Create(True);
// Thread erzeugen (suspended)
Th.FreeOnTerminate := True;
// Thread gibt sich selbst frei
Th.Resume;
// Thread starten
end;
end.