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

На форме 2 Button и Memo:

Код:
unit Unit1;

interface

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

type
  TWaitThread = class(TThread)
  private
    FMsg: String;
    procedure Updt;
  protected
    procedure Execute; override;
  end;

  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

  HEvent: THandle;

implementation

{$R *.dfm}

{ TWaitThread }

procedure TWaitThread.Updt;
begin
  Form1.Memo1.Lines.Add(FMsg);
end;

procedure TWaitThread.Execute;
begin
  FMsg:='Execute start';
  Synchronize(Updt);

  FMsg:='WaitForSingleObject';
  Synchronize(Updt);            
  case WaitForSingleObject(HEvent, 5000) of (* INFINITE *)            
    WAIT_OBJECT_0: begin
      FMsg:='WAIT_OBJECT_0';
      Synchronize(Updt);
    end;
    WAIT_TIMEOUT: begin
      FMsg:='WAIT_TIMEOUT';
      Synchronize(Updt);
    end;
  end;

  FMsg:='Execute stop'+sLineBreak;
  Synchronize(Updt);
end;

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
  with TWaitThread.Create(True) do
  begin
    FreeOnTerminate:=True;
    Resume;
  end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  SetEvent(HEvent);
end;

initialization
  HEvent:=CreateEvent(nil, False, False, nil);

finalization
  CloseHandle(HEvent);  

end.
__________________
Пишу программы за еду.
__________________
Ответить с цитированием