Показать сообщение отдельно
  #5  
Старый 06.06.2011, 14:32
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
unit Unit1;

interface

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

type
  TMyThread = class(TThread)
  private
    i: Integer;
    procedure Updt;
  protected
    procedure Execute; override;
  end;

  TForm1 = class(TForm)
    Label1: TLabel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { Private declarations }
    FMyThread: TMyThread;
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TMyThread }

procedure TMyThread.Execute;
begin
  i:=0;
  while not Terminated do
  begin
    Synchronize(Updt);
    Inc(i);
    if i>100 then Break; 
    Sleep(50);
  end;
end;

procedure TMyThread.Updt;
begin
  Form1.Label1.Caption:=IntToStr(i);
end;

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
  FormDestroy(Sender);
  FMyThread:=TMyThread.Create(True);
  FMyThread.FreeOnTerminate:=False;
  FMyThread.Resume;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  if FMyThread<>nil then
  begin
    FMyThread.Terminate;
    FMyThread.WaitFor;
    FreeAndNil(FMyThread);
  end;
end;

end.

обработчики:
Button1.OnClick:=Button1Click;
OnDestroy:=FormDestroy;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием