※ 引述《"charge" <cha...@ms1.accmail.com.tw>, 看板: Oop》之銘言:
: Timer1.Enabled:=False;
: Form1.ShowModal;
: Timer1.Enabled:=true;
: Best boy <adj...@bbs.yzu.edu.tw> 次寫入到主題
: <3PkeNd$1...@bbs.yzu.edu.tw>...
: > 為何 Delphi 的 BringToFront 會蓋掉 ShowModal 的視窗?
: > 問題是這樣的:
: > 當程式用 ShowModal 來顯示一對話框要求使用者輸入一些資訊時,
: > 若此時程式的 Timer 觸發且把 Form 帶到最前面(BringToFront),
: > 就會蓋掉剛才那個對話框!!
: > 這個問題有解決的辦法嗎?
: > 煩請知道的人順便回一封到我的信箱,謝謝!
: > --
: > 史上最酷的 telnet 程式... Multi-Term 3.00b (中文版) 8/1/1998
: > Multi-Term的首頁: http://www.ntut.edu.tw/~u3440013/multiterm.html
: > --
--
※ Origin: 元智大學 BBS <bbs.yzu.edu.tw> ◆ From: [alpha.en.NTUT.edu.t] [0m
所以一但在Form.ShowModal時期,但Timer沒關掉而觸發時,系統的權限較大
只要程式未Free, BringToFront就生效
你可以在Form.ShowModal前就設一個Boolean, OnTime時就要判斷要不要BringToFront
假設有程式A,B,C分別為獨立程式
A 先發生ShowModal, B 次之, C則有Timer在跑然後又ShowModal
則C的Form會蓋過B, B再蓋過A, C的Timer則還是有效的
也就是說在多工環境下 ShowModal, StayOnTop, Show,
Timer彼此之間的關係是要考慮的
系統工程就是要考慮清楚,如果你還有問題可以把程式Post上來,大家研究研究,啥情況
下
必須ShowModal又必須BringToFont? 應該是可以避免的
Best boy <adj...@bbs.yzu.edu.tw> 次寫入到主題
<3Q1CTN$1...@bbs.yzu.edu.tw>...
> 可是前提是timer不能關掉啊!
> 有沒有辦法在timer沒關掉的情形下觸發並把Form帶到最前面,
> 而"不會"蓋在那個ShowModal的視窗上?
> : > 為何 Delphi 的 BringToFront 會蓋掉 ShowModal 的視窗?
> : > 問題是這樣的:
> : > 當程式用 ShowModal 來顯示一對話框要求使用者輸入一些資訊時,
> : > 若此時程式的 Timer 觸發且把 Form 帶到最前面(BringToFront),
> : > 就會蓋掉剛才那個對話框!!
> : > 這個問題有解決的辦法嗎?
> : > 煩請知道的人順便回一封到我的信箱,謝謝!
> --
啥情況下啊..就是啊..我是MultiTerm(一個telnet程式)的作者啦,
當使用者連上數個bbs站後,執行"腳本"中"開啟舊檔"(ShowModal)的同時,
其它的連線接收到嗶聲而自動切換到那個連線(BringToFront)上時,
就會蓋住那個"開啟舊檔"對話框...
這似乎是無法避免的..:(
那個程式放在我的網頁上,你可以上去下載來試試我剛才所說的情形...
http://www.ntut.edu.tw/~u3440013/multiterm.html
: Best boy <adj...@bbs.yzu.edu.tw> 次寫入到主題
: <3Q1CTN$1...@bbs.yzu.edu.tw>...
: > 可是前提是timer不能關掉啊!
: > 有沒有辦法在timer沒關掉的情形下觸發並把Form帶到最前面,
: > 而"不會"蓋在那個ShowModal的視窗上?
: > --
: [alpha.en.NTUT.edu.t] [0m
--
※ Origin: 元智大學 BBS <bbs.yzu.edu.tw> ◆ From: [140.131.1.153] [0m