在FormActivate中如何关闭窗体?我用Close没有用 |
尚未結案
|
lovelypp
初階會員 發表:122 回覆:111 積分:46 註冊:2003-02-19 發送簡訊給我 |
|
terrychen
尊榮會員 發表:90 回覆:794 積分:501 註冊:2003-05-01 發送簡訊給我 |
|
lovelypp
初階會員 發表:122 回覆:111 積分:46 註冊:2003-02-19 發送簡訊給我 |
|
terrychen
尊榮會員 發表:90 回覆:794 積分:501 註冊:2003-05-01 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 我在OnActivate中作初始化,如果失败,则关闭窗体 如果你希望在 Form Create 未完成前能有關閉的能力, 請參考下列做法 1.在 private 中宣告 private { Private declarations } procedure StartRun(Sender: Tobject; var Done: boolean); 2.在 Implementation 下撰寫 procedure TForm_Main.Start(Sender: Tobject; var Done: boolean); var xhandle: longInt; begin xhandle:= FindWindow('TForm_Main',nil); if xhandle = 0 then exit; Application.ProcessMessages; Application.OnIdle:= nil; Done:= True; .... end; 3.在 oncreate 事件中加入 Application.OnIdle:= StartRun;以上的目的是因為form在create初始化時, 即便你下close, 系統仍會持續 create的行為, 所以close會無效, 因此你要利用 onidle的行為, onIdle被 啟動時, 代表form的初始(create, active, paint 等行為都已完成進入閒置) 這時, 你在 StartRun中要關閉或做任何事, 都是可以的! |
lovelypp
初階會員 發表:122 回覆:111 積分:46 註冊:2003-02-19 發送簡訊給我 |
|
terrychen
尊榮會員 發表:90 回覆:794 積分:501 註冊:2003-05-01 發送簡訊給我 |
|
lovelypp
初階會員 發表:122 回覆:111 積分:46 註冊:2003-02-19 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 各位误会我的意思了 我在Form2的 OnForm2Activate中调用Close关闭自己,代码如下: procedure TForm2.Form2Activate(Sender: ...) begin if 初始化动作失败 then begin Close; Exit; end; end; 在Form1的OnButtonClick中使用ShowModal显示Form2,可是在初始化动作失败 时,Form2仍然被显示。1.你可以把 Application.OnIdle:= StartRun 放在 OnActive 最後面 然後設置一個private 變數 if 初始化失敗 then failopen:= True else failopen:= False; 2.在 procedure TForm2.StartRun(Sender: Tobject; var Done: boolean); var xhandle: longInt; begin xhandle:= FindWindow('TForm2',nil); if xhandle = 0 then exit; Application.ProcessMessages; Application.OnIdle:= nil; Done:= True; .... 加這行 if failOpen then Form2.Close; Try it, may be work! 發表人 - P.D. 於 2004/01/19 01:16:42 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |