掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
実行中の関数を中止させて新たに実行する方法 (ID:42024)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
PostMessageを使用する方法です。 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Edit1: TEdit; Edit2: TEdit; Memo1: TMemo; procedure Edit1Enter(Sender: TObject); procedure Edit2Enter(Sender: TObject); procedure WMUser(var Message: TMessage); message WM_USER; private FAbort, FFind: Boolean; FMsg: string; public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.WMUser(var Message: TMessage); var iCount: Integer; After1Sec: Cardinal; Msg: string; begin Msg := FMsg; Memo1.Lines.Add(Msg + ':ST'); FAbort := False; FFind := True; for iCount:=0 to 10 do begin Application.ProcessMessages; if FAbort then Break; // 中止する // 多少時間のかかる処理の代わり After1Sec := GetTickCount + 500; while GetTickCount < After1Sec do // end; FFind := False; if FAbort then PostMessage(Handle, WM_USER, 0, 0); Memo1.Lines.Add(Msg + ':END'); end; procedure TForm1.Edit1Enter(Sender: TObject); begin FMsg := 'Edit1Enter'; if FFind then FAbort := True else PostMessage(Handle, WM_USER, 0, 0); end; procedure TForm1.Edit2Enter(Sender: TObject); begin FMsg := 'Edit2Enter'; if FFind then FAbort := True else PostMessage(Handle, WM_USER, 0, 0); end; end.
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.