unit Main;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ExtCtrls,
  UWatek;

type
  TMainForm = class(TForm)
    Memo1: TMemo;
    Panel1: TPanel;
    btnSTART: TBitBtn;
    procedure FormShow(Sender: TObject);
    procedure btnSTARTClick(Sender: TObject);

  private
    ilosc_watkow : Integer;

  public
	 procedure MyOnTerminate(Sender : TObject);
  end;

var
  MainForm: TMainForm;

implementation
{$R *.dfm}
{------------------------------------------------------------------------------}
procedure TMainForm.FormShow(Sender: TObject);
begin
   Memo1.Clear();
   Memo1.Align := alLeft;
end;

procedure TMainForm.btnSTARTClick(Sender: TObject);
var
	my_thread : MWatek;

begin
   Memo1.Clear();

   if btnSTART.Caption = '&Start' then
   begin
   	btnSTART.Caption := '&Koniec';

      my_thread := MWatek.Create(true, Memo1);
      my_thread.OnTerminate := MyOnTerminate;

      // wątek start
      ilosc_watkow := 1;
      my_thread.Resume();
   end
   else begin
      Application.Terminate();
   end;
end;

procedure TMainForm.MyOnTerminate(Sender: TObject);
begin
	(*
   ten fragment wykona się gdy wątek się zakończy
   w sposób 'naturany', lub wywołana zostanie jawnie
   instrukcja
   MWatek.Terminate()
   *)

   Dec(ilosc_watkow);

   Memo1.Lines.Add('Ilość działających wątków: ' + IntToStr(ilosc_watkow));
end;

end.

