如何自動關閉MessageDlg |
答題得分者是:jest0024
|
Komuro
一般會員 發表:27 回覆:46 積分:14 註冊:2004-02-19 發送簡訊給我 |
|
shinhrn
中階會員 發表:54 回覆:165 積分:83 註冊:2002-06-05 發送簡訊給我 |
|
jest0024
高階會員 發表:11 回覆:310 積分:224 註冊:2002-11-24 發送簡訊給我 |
1.自己做個form
2.使用messagedlg使用wm_timer訊息控制
procedure WMTime(var Msg:TMessage);message WM_TIMER; procedure Form1.WMTimer(var Msg:TMessage); var i:Integer; begin if(Msg.WParam=1)then begin with Application do for i:=0 to ComponentCount-1 do if Components[i].ClassName='TMessageForm' then //找出訊息的視窗 TForm(Components[i]).Close; //關閉訊息視窗 KillTimer(Handle,Msg.WParam); //刪除計數器 end; end; procedure Form1.ButClick(Sender:TObject); SetTimer(Handle,1,3000,nil); //這行會在3秒後送出WM_TIMER訊息 MessageDlg('Message',mtWarning,[],0); end; |
Komuro
一般會員 發表:27 回覆:46 積分:14 註冊:2004-02-19 發送簡訊給我 |
jest0024你好,試過你的程式完全達到我的需求,但是我對其中幾點不太懂,
請解釋一下,謝謝
1.procedure WMTime(var Msg:TMessage);message WM_TIMER;<==在procedure後面接;message WM_TIMER;是什麼意思? 2.if(Msg.WParam=1)then begin<==這行?? 3.button1click中的程式改成如下,為何就沒法達到效果??
procedure Form1.Button1Click(Sender:TObject);
MessageDlg('Message',mtWarning,[],0);
SetTimer(Handle,1,3000,nil);
end;
|
jest0024
高階會員 發表:11 回覆:310 積分:224 註冊:2002-11-24 發送簡訊給我 |
引言: jest0024你好,試過你的程式完全達到我的需求,但是我對其中幾點不太懂, 請解釋一下,謝謝 1.procedure WMTime(var Msg:TMessage);message WM_TIMER;<==在procedure後面接;message WM_TIMER;是什麼意思? 2.if(Msg.WParam=1)then begin<==這行?? 3.button1click中的程式改成如下,為何就沒法達到效果?? procedure Form1.Button1Click(Sender:TObject); MessageDlg('Message',mtWarning,[],0); SetTimer(Handle,1,3000,nil); end; 1.procedure WMTime(var Msg:TMessage);message WM_TIMER; 代表WMTime會接收WM_TIMER這個訊息.Windows裡頭有很多的訊息,換做delphi 的話,叫事件! 2.if(Msg.WParam=1)then 這個訊息的參數,剛我們呼叫了SetTimer(Handle,訊息參數,秒數,程序) 3.MessageDlog是屬於呼叫ShowModal方法,所以呼叫訊息時不能放置在這行的後面,不然會等到按確定才會再執行下一行 |
Komuro
一般會員 發表:27 回覆:46 積分:14 註冊:2004-02-19 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |