線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1612
推到 Plurk!
推到 Facebook!

如何自動關閉MessageDlg

答題得分者是:jest0024
Komuro
一般會員


發表:27
回覆:46
積分:14
註冊:2004-02-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-01 15:39:32 IP:61.66.xxx.xxx 未訂閱
我想在程式中show出一ㄍMessageDlg,如何能夠上面不含按鈕只秀訊息,而且能定3秒後自動關閉(不含按鈕當然不能手動關!),若此元件不能做到是否有其他元件能做到,請各位高手指教,謝
shinhrn
中階會員


發表:54
回覆:165
積分:83
註冊:2002-06-05

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-01 15:53:29 IP:218.162.xxx.xxx 未訂閱
放一個timer設Interval=3000 procedure TForm1.Timer1Timer(Sender: TObject); begin close; end;
jest0024
高階會員


發表:11
回覆:310
積分:224
註冊:2002-11-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-01 19:21:05 IP:210.66.xxx.xxx 未訂閱
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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-01 22:42:24 IP:61.59.xxx.xxx 未訂閱
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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-02 14:10:10 IP:211.74.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-02 21:38:30 IP:61.59.xxx.xxx 未訂閱
都了解了,謝謝
系統時間:2024-05-17 1:13:38
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!