Form問題 |
尚未結案
|
nick167
中階會員 發表:86 回覆:133 積分:53 註冊:2003-02-12 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
引言: Form2:= TForm2.create(self); Form2.showmodal; 由Form1 至Form2 之後在回form1時,如何釋放momey是(form2.close ) or(form2.free) or (form1.release)最方便安全的方法 : with TForm2.create(self) do try ShowModel; .... finally // 最後 Free; // 釋放 end; 引言: Form2:= TForm2.create(self) 與 Form2:= TForm2.create(Appliction) Form2:=Form2.Create(AOwner) 又有何不同?self 即是指定 Form1 是 Form2 的 Owner Application 即是指定 Application 是 Form2 的 Owner AOwner 即是指定 Form1 的 Owner (通常是 Application) 是 Form2 的 Owner 除非你要在 Form2 使用 Owner 的東西,否則實作上沒甚麼分別。 |
nick167
中階會員 發表:86 回覆:133 積分:53 註冊:2003-02-12 發送簡訊給我 |
引言: 我有test 還是有點問題? 有2個mainform,mainform2 當mainform 為主登入form ,登入ok 進行下列: MainForm2:= TMainForm2.Create(self); MainForm2.showmodal; MainForm2.Free; // 請問free是釋放momey,如果直接 mainform2.close是否也把momey free掉ㄋ? /// MainForm.Close; // 當mainform2 exit 時才會關閉 mainform 可是進入mainform2時畫面仍保有mainform,請問如何當mainform 進入 mainform2時,關閉mainform,mainform2為主控form,希望畫面不需有mainform 可否行?謝謝 |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
引言: 請問free是釋放momey,如果直接mainform2.close是否也把momey free掉ㄋ?Close 預計是 Hide 了該 Form, 你也可在 oncloseQuery 設定成用 Free,不過直接用 Free 不是更方便嗎? 引言: 可是進入mainform2時畫面仍保有mainform,請問如何當mainform 進入 mainform2時,關閉mainform,mainform2為主控form,希望畫面不需有mainform 可否行?MainForm 一 Close Application 便完了你可以先 Hide MainForm 再 Show MainForm2。 Hide; MainForm2.ShowModel; MainForm2.Free; Application.Terminate; |
nick167
中階會員 發表:86 回覆:133 積分:53 註冊:2003-02-12 發送簡訊給我 |
引言: Close 預計是 Hide 了該 Form, 你也可在 oncloseQuery 設定成用 Free,不過直接用 Free 不是更方便嗎? procedure TMainForm.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin Application.Terminate; MainForm.Free; end; 再delphi 執行後,無法順利返回delphi設計程式,好像當掉,需要用滑鼠右鍵點 開始列上的 -> delphi 才回delphi 設計畫面,不知為何? << 可是離開delphi後,在點 main.exe 直run 不會有上述狀況 >> begin ADOQuery1.Locate('user',........ if not Adoquery.eof then begin mainform.Hide; MainForm2.ShowModel; MainForm2.Free; Application.Terminate // 出現 (cannot focus disabled or invisible windows ) error message end else login_cnt:=login_cnt 1; ....... end; 我從書籍看有關form,還是不解,才在此求救前輩指點,非常謝謝Justmade 在網站一一為其它他人解答,也辛苦你,助人為快樂之本 ,願科技帶給Justmade美好未來,Thank [/code]發表人 - nick167 於 2003/03/22 19:46:38 |
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
1. 對不起,一時記錯了,是 onClose :
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree; // 設定 close 的動作是 Free 而非 Hide
end;
不過若你像我提議的 Code 直接用 Form.Free 就不用設這個了 2.
mainform.Hide;
MainForm2.ShowModel;
MainForm2.Free;
mainform.Show;
就會在 MainForm2 關掉後回到 MainForm1
Application.Terminate; // 這是立即關掉整個程式,若不需要可不用。 3.
"cannot focus disabled or invisible windows"
可能你有些程式碼在程式關時會嘗試取得 focus ,但由於該時 MainForm1 hide 了,所以出現該 Error。上面加回了 MainForm.Show; 應不會再出現這個了。
|
nick167
中階會員 發表:86 回覆:133 積分:53 註冊:2003-02-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |