全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1529
推到 Plurk!
推到 Facebook!

自動關閉訊息的問題

答題得分者是:ebx
fordos
一般會員


發表:2
回覆:5
積分:1
註冊:2005-03-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-21 15:54:34 IP:61.30.xxx.xxx 未訂閱
請問: 若今天我用使用timer去自動關閉訊息 可成功。程式碼如下: procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled := True; ShowMessage('Test'); end; procedure TForm1.Timer1Timer(Sender: TObject); begin SendMessage(GetActiveWindow, WM_CLOSE, 0, 0); Timer1.Enabled := False; end; end. 但我如果不用timer,確沒辦法自動將訊息關閉,程式碼如下: procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('Test'); SendMessage(GetActiveWindow, WM_CLOSE, 0, 0); end; 請問原因為何?
ebx
一般會員


發表:1
回覆:20
積分:9
註冊:2003-10-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-21 16:09:04 IP:219.93.xxx.xxx 未訂閱
因为SendMessage还没被执行
ebx
一般會員


發表:1
回覆:20
積分:9
註冊:2003-10-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-21 16:10:39 IP:219.93.xxx.xxx 未訂閱
因为SendMessage还没被执行
fordos
一般會員


發表:2
回覆:5
積分:1
註冊:2005-03-05

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-21 16:33:53 IP:61.30.xxx.xxx 未訂閱
可以說詳細點嗎?
ebx
一般會員


發表:1
回覆:20
積分:9
註冊:2003-10-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-21 17:07:38 IP:219.93.xxx.xxx 未訂閱
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('Test'); // 當系統執行程式碼,在等著使用者的回應(也就是點擊「OK」按鈕)
  SendMessage(GetActiveWindow, WM_CLOSE, 0, 0); //所以如果使用者不點擊「OK」按鈕的話,系統是不回執行到此的
end;
fordos
一般會員


發表:2
回覆:5
積分:1
註冊:2005-03-05

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-03-21 17:16:06 IP:61.30.xxx.xxx 未訂閱
那為何我第一個程式可以?? 非常感謝你的回答。
ebx
一般會員


發表:1
回覆:20
積分:9
註冊:2003-10-09

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-03-21 17:49:03 IP:219.93.xxx.xxx 未訂閱
因為系統在顯示「Test」訊息之前,就已經激活了Timer1,所以在經過若干秒(也就是Timer1.Interval豪秒)後,系統執行「Timer1Timer(Sender: TObject)」裡的"SendMessage(GetActiveWindow, WM_CLOSE, 0, 0)","Test"訊息就被關掉了
shinhrn
中階會員


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

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-03-21 17:53:42 IP:218.170.xxx.xxx 未訂閱
因為 Timer 是多執行緒程序...程式不會停在ShowMessage.. 可以參考 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=65739
fordos
一般會員


發表:2
回覆:5
積分:1
註冊:2005-03-05

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-03-21 18:11:36 IP:61.30.xxx.xxx 未訂閱
若改成 用postmessage 為何還是 沒辦法自動關閉,postmessage不是 "不用等待接收者回應訊息,自己的程式碼可以繼續跑"嗎? procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage('Test'); PostMessage(GetActiveWindow, WM_CLOSE, 0, 0); end;
ebx
一般會員


發表:1
回覆:20
積分:9
註冊:2003-10-09

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-03-21 18:18:46 IP:219.93.xxx.xxx 未訂閱
procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage('Test'); // 當系統執行程式碼,在等著使用者的回應(也就是點擊「OK」按鈕)
  SendMessage(GetActiveWindow, WM_CLOSE, 0, 0); //所以如果使用者不點擊「OK」按鈕的話,系統是不回執行到此的
end;
fordos
一般會員


發表:2
回覆:5
積分:1
註冊:2005-03-05

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