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

MainForm秀的時間點不對??

答題得分者是:mustapha.wang
MichaelChien
一般會員


發表:33
回覆:37
積分:14
註冊:2002-12-27

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-24 00:54:48 IP:211.76.xxx.xxx 未訂閱
一般正常的步驟應該是:將所有自動create的Form Create 完之後,跑到 Application.Run;此行的時候,才會秀出MainForm,但我有一個Project 卻發生: 在 Create 完MainForm後,MainForm就先秀出來了,請問這是為什麼?
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-24 03:10:09 IP:203.204.xxx.xxx 未訂閱
引言: 在 Create 完MainForm後,MainForm就先秀出來了,請問這是為什麼?
MichaelChien 你好 如果上述是確定的,那應該要檢查MainForm.OnCreate事件中是否有Show的方法呼叫或在整個專案相關單元找找看Show這個Word,看什麼地方有呼叫到MainForm.Show
MichaelChien
一般會員


發表:33
回覆:37
積分:14
註冊:2002-12-27

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-24 16:02:24 IP:211.76.xxx.xxx 未訂閱
是的,之前已經檢查過了,整個 Project 中並沒有呼叫到任何 MainForm.Show。感謝您的回答。
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-24 23:02:22 IP:211.20.xxx.xxx 未訂閱
引言: 是的,之前已經檢查過了,整個 Project 中並沒有呼叫到任何 MainForm.Show。感謝您的回答。
MichaelChien 你好 請注意! 在MainForm.OnCreate事件中,有可能不是寫MainForm.Show,直接寫Show也等於MainForm.Show,不要嫌我囉嗦,因為真的沒道理會產生這個問題啊! 發表人 - chance36 於 2004/02/24 23:03:08
MichaelChien
一般會員


發表:33
回覆:37
積分:14
註冊:2002-12-27

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-25 02:27:07 IP:211.76.xxx.xxx 未訂閱
呵呵,怎會嫌您囉嗦呢?感謝都來不及,只是~~~我已經把MainForm中的 OnCreate 事件都清空了(沒有半行程式),它還是這樣跟我耍脾氣呢~~
mustapha.wang
資深會員


發表:89
回覆:409
積分:274
註冊:2002-03-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-02-25 09:35:14 IP:218.80.xxx.xxx 未訂閱
是不是设计时就把Visible设为True了     久病成良医--多试 千人之诺诺,不如一士之谔谔--兼听
------
江上何人初见月,江月何年初照人
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-02-25 09:49:19 IP:211.23.xxx.xxx 未訂閱
請將你發生問題的 Sample Code 貼出來看看吧!! 正常狀況應該是不會發生你說的問題, 可能是有什麼盲點你沒有看到吧!! 另外你是用什麼方式確認 formCreate 後就 SHOW 出來, 而不是在 Application.Run 才 SHOW 出來?? ...Aquarius
------
水瓶男的blog: http://791909.blogspot.com
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-02-25 10:03:28 IP:61.221.xxx.xxx 未訂閱
您好: 煩請將project=>view source的程式碼秀出來看看 ~~應無所住而生其心~~
Jack0323
初階會員


發表:22
回覆:70
積分:28
註冊:2002-03-13

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-02-25 12:15:57 IP:211.74.xxx.xxx 未訂閱
李維大師新書裡面(InSide VCL ) 有說到這方面,而且很詳細 參考看看 是不是你要的
MichaelChien
一般會員


發表:33
回覆:37
積分:14
註冊:2002-12-27

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-02-25 13:44:05 IP:211.76.xxx.xxx 未訂閱
Application.Initialize;      fConnecting := TfConnecting.Create(Application);   fConnecting.Show;   fConnecting.Update;      Application.CreateForm(TfMain, fMain);【但卻在這裏就秀了】   Application.CreateForm(TDM, DM);   Application.CreateForm(TAddInput, AddInput);   Application.CreateForm(TfSearch, fSearch); . (中間省略) . .   fConnecting.Hide;   fConnecting.Free;   Application.Run;【正常Main Form應該在行後面秀】  
引言: 正常狀況應該是不會發生你說的問題, 可能是有什麼盲點你沒有看到吧!! 另外你是用什麼方式確認 formCreate 後就 SHOW 出來, 而不是在 Application.Run 才 SHOW 出來??
就您所看到的程式碼,我會在Application.Run之前先去跑輸入密碼的程式。所以正常應該先「只有」看到密碼畫面,但卻在密碼畫面的背景看到Main Form,且之前寫在Main Form的 OnShow Event 也會被觸發。
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-02-25 14:48:14 IP:211.23.xxx.xxx 未訂閱
按照你的寫法, TfConnecting 應該是會一閃而過.    因為 USER 來不及輸入, 就被 fConnecting.Free; 給結束掉了!!    所以你應該在 Application.CreateForm() 和 fConnecting.Free 之間還有做了什麼事讓 USER 能輸入. 會不會在那一段程式中造成的??    我自己寫了一個測試程式, 並不會發生你說的狀況!!     
program Project1;    uses
  Forms,
  Unit1 in 'Unit1.pas' {Form1},
  Unit2 in 'Unit2.pas' {Form2};    {$R *.RES}    begin
  Application.Initialize;
  form2:=TForm2.create(nil) ;
  form2.show ;
  form2.update ;      Application.CreateForm(TForm1, Form1);      while form2.visible do
    Application.ProcessMessages ;      form2.free ;
  form2:=nil ;      Application.Run;
end.
 
...Aquarius
------
水瓶男的blog: http://791909.blogspot.com
MichaelChien
一般會員


發表:33
回覆:37
積分:14
註冊:2002-12-27

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-02-25 16:03:37 IP:61.30.xxx.xxx 未訂閱
補充一下:『中間省略』的部份,我省太多了,在 fConnecting.Hide; 這一行前面,會有一段是密碼輸入的畫面,fConnecting 是讓user等待的畫面,因為 AutoCreate 的Form 有點多,剛執行要花一點時間。 我知道照著寫不會這樣,因為我寫過很多,都是照這樣寫的,不會有問題,偏偏這一個給我出包 想請問我是不是那裏去動到?請各位幫我想想有可能出錯的地方,如果很麻煩就不用了,因為現在我用作弊的方法(
terrychen
尊榮會員


發表:90
回覆:794
積分:501
註冊:2003-05-01

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-02-25 16:33:17 IP:61.221.xxx.xxx 未訂閱
您好: 不知道有沒有關係 fConnecting.Hide; fConnecting.update; fConnecting.Free; 不好意思沒說清楚,是在下面的地方加上紅色那一句 ~~應無所住而生其心~~ 發表人 - terrychen 於 2004/02/25 19:43:13
ko
資深會員


發表:28
回覆:785
積分:444
註冊:2002-08-14

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-02-25 18:21:41 IP:61.221.xxx.xxx 未訂閱
MichaelChien 你好: 程序應該是這樣 fConnecting := TfConnecting.Create(Application); fConnecting.Show; fConnecting.Update; 這裡要判定是否通過 . (中間省略) . . fConnecting.Hide; if true then begin Application.CreateForm(TfMain, fMain);【但卻在這裏就秀了】 ... .. . end; fConnecting.Free; Application.Run;【正常Main Form應該在行後面秀】
------
======================
昏睡~
不昏睡~
不由昏睡~
MichaelChien
一般會員


發表:33
回覆:37
積分:14
註冊:2002-12-27

發送簡訊給我
#15 引用回覆 回覆 發表時間:2004-02-25 18:31:05 IP:211.76.xxx.xxx 未訂閱
測試報告: 回【terrychen 】: 將fConnecting.update;此行去掉,還是一樣的情況。 回【ko】 是可以照您的辦法去做,但如果這樣做,user會在輸入密碼後,再等上一段時間(Auto Create From,有十幾廿個), fConnecting只是一個有圖片的Form,讓user不會誤會說程式當機或沒有在執行而已~~
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#16 引用回覆 回覆 發表時間:2004-02-25 18:32:07 IP:211.20.xxx.xxx 未訂閱
引言:
引言: 就您所看到的程式碼,我會在Application.Run之前先去跑輸入密碼的程式。所以正常應該先「只有」看到密碼畫面,但卻在密碼畫面的背景看到Main Form,且之前寫在Main Form的 OnShow Event 也會被觸發。
MichaelChien 你好 即然應該先「只有」看到密碼畫面 ,你可改用ShowModal試試看
Application.Initialize;    fConnecting := TfConnecting.Create(Application);
If fConnecting.ShowModal<>mrOK Then Begin
  在此結束程式
End ;
fConnecting.Hide;
fConnecting.Free;    Application.CreateForm(TfMain, fMain);【但卻在這裏就秀了】
Application.CreateForm(TDM, DM);
Application.CreateForm(TAddInput, AddInput);
....
不好意思,誤會你了,原來TfConnecting只是秀圖片而已 , 輸入密碼是另一個Form,如ko大大所云已經接近了 fConnecting := TfConnecting.Create(Application); fConnecting.Show; fConnecting.Update; 這裡要判定是否通過
if true then begin
  Application.CreateForm(TfMain, fMain
  ...
  ..
  .
  fConnecting.Hide;
  fConnecting.Free;
  Application.Run;
end Else Begin
  Application.Terminate;
End;
發表人 - chance36 於 2004/02/25 18:41:05
JasonLee
一般會員


發表:0
回覆:3
積分:0
註冊:2002-03-13

發送簡訊給我
#17 引用回覆 回覆 發表時間:2004-02-28 13:10:54 IP:211.21.xxx.xxx 未訂閱
在 Project Source 中  應該在CreateForm 前面先使用 Application.ShowMainForm := False; .... 後面再自己決定要Show視窗的順序 
MichaelChien
一般會員


發表:33
回覆:37
積分:14
註冊:2002-12-27

發送簡訊給我
#18 引用回覆 回覆 發表時間:2004-02-28 15:29:08 IP:211.76.xxx.xxx 未訂閱
引言: 在 Project Source 中 應該在CreateForm 前面先使用 Application.ShowMainForm := False; .... 後面再自己決定要Show視窗的順序
測試報告:無效,還是會秀的啦~_~"
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#19 引用回覆 回覆 發表時間:2004-03-01 11:01:08 IP:211.23.xxx.xxx 未訂閱
我猜有 90% 的可能是你在 FormCreate 中有呼叫到特定的 function 會去把 Main Form 給 SHOW 出來. 剩下的10% 是 Delphi 發瘋了....  把你的 > ...
------
水瓶男的blog: http://791909.blogspot.com
MichaelChien
一般會員


發表:33
回覆:37
積分:14
註冊:2002-12-27

發送簡訊給我
#20 引用回覆 回覆 發表時間:2004-03-01 16:01:02 IP:61.30.xxx.xxx 未訂閱
引言: 我猜有 90% 的可能是你在 FormCreate 中有呼叫到特定的 function 會去把 Main Form 給 SHOW 出來. 剩下的10% 是 Delphi 發瘋了.... 把你的 FormCreate 中呼叫到的 Function 逐一 MARK 起來, 應該可以把兇手給找出來..
那應該是我遇上那 10 %了吧~_~,因為.................. FormCreate & FormShow 二個事件中,沒有任何程式碼 >_<"
mustapha.wang
資深會員


發表:89
回覆:409
積分:274
註冊:2002-03-13

發送簡訊給我
#21 引用回覆 回覆 發表時間:2004-03-02 10:36:47 IP:218.80.xxx.xxx 未訂閱
怎么没有我的意见的测试报告?     久病成良医--多试 千人之诺诺,不如一士之谔谔--兼听
------
江上何人初见月,江月何年初照人
jeffreck
高階會員


發表:247
回覆:340
積分:197
註冊:2003-01-23

發送簡訊給我
#22 引用回覆 回覆 發表時間:2004-03-02 13:05:19 IP:61.219.xxx.xxx 未訂閱
引言: 是不是设计时就把Visible设为True了 久病成良医--多试 千人之诺诺,不如一士之谔谔--兼听
我試了一下,如 mustapha.wang 前輩所說 如MainForm 在設計時Visible設為True 只要在Create時就會Show 出了 只要改為 Visible設為False 就不會了 發表人 - jeffreck 於 2004/03/02 13:06:51
MichaelChien
一般會員


發表:33
回覆:37
積分:14
註冊:2002-12-27

發送簡訊給我
#23 引用回覆 回覆 發表時間:2004-03-02 13:30:41 IP:211.76.xxx.xxx 未訂閱
引言: 是不是设计时就把Visible设为True了
SORRY!!補上測試報告: 在Design Time把MainForm.Visible設成False的話:正常 但延伸另一個問題: 我所有的專案都是這樣寫,其它專案的MainForm.Visible都是True,雖然這樣可解決我目前的問題,但畢竟不是正統的做法吧~~(我真龜毛)@_@" 另外請教mustapha.wang一個私人問題: 對岸人民目前對繁體字的接受度如何?因為我們公司想推一項新產品【網路考勤機】,正在評估是否加入簡體字顯示。
mustapha.wang
資深會員


發表:89
回覆:409
積分:274
註冊:2002-03-13

發送簡訊給我
#24 引用回覆 回覆 發表時間:2004-03-02 14:35:54 IP:218.80.xxx.xxx 未訂閱
预设Form的Visible都是为false的,我们一般也不会去改它,这应该是“正统的”吧。 大陆人也喜欢用繁体,特别是书法、招牌,看得懂,但不一定会写,如果写文章用繁体,短还好,很长的话感觉笔划太多,有窒息的感觉;对于软件,要保证在大陆的简体操作系统没有乱码哦,最好是用简体了,实在不想也要用GBK里的繁体。(关于多语言,打个广告,www.acroprise.com.tw有套delphi的多语言元件,方便你制作多语言的程序。) < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=10543105&CC=235795"> 久病成良医--多试 千人之诺诺,不如一士之谔谔--兼听
------
江上何人初见月,江月何年初照人
2100
一般會員


發表:0
回覆:1
積分:0
註冊:2004-03-03

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