掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
メッセージボックスで、「10秒後に終了しますか?」と出したい。 (ID:32750)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
カウントを表示するのがタイトルバーでもいいなら、強引な方法ですが別スレッドを作ってそこから更新してやればできます。 スレッドの作成はここが参考になります。 http://www.wwlnk.com/boheme/delphi/techdoc/dad0010.html ※私自身このへん詳しくないのでとんでもないことをしている可能性があります。フォローお願いします。 ========== Unit1 ========== unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Unit2; type TForm1 = class(TForm) procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private 宣言 } MyThread: TMyThread; public { Public 宣言 } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin MyThread := TMyThread.Create(False); if MessageDlg('終了しますか?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then Action := caNone; end; end. ========== Unit2 ========== unit Unit2; interface uses Classes; type TMyThread = class(TThread) private { Private 宣言 } hDlg: THandle; cnt: integer; procedure CountDown; procedure CloseDlg; protected procedure Execute; override; end; implementation uses SysUtils, Windows, Messages, Unit1; procedure TMyThread.Execute; var i: integer; begin Sleep(1000); hDlg := FindWindow(PChar('TMessageForm'), PChar('確認')); for i:=10 downto 1 do begin cnt := i; Synchronize(CountDown); Sleep(1000); end; Synchronize(CloseDlg); end; procedure TMyThread.CountDown; begin SendMessage(hDlg, WM_SETTEXT, 0, integer(PChar(IntToStr(cnt)))); end; procedure TMyThread.CloseDlg; begin SendMessage(hDlg, WM_CLOSE, 0, 0); end; end.
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.