請問要如何動態Creat form呢??? |
尚未結案
|
miller680523
一般會員 發表:47 回覆:49 積分:19 註冊:2002-10-28 發送簡訊給我 |
|
ha0009
版主 發表:16 回覆:507 積分:639 註冊:2002-03-16 發送簡訊給我 |
你好:
動態物件把握幾個原則既可。
1. 如果動態物件(繼承自 TComponent 的物件才有)沒有擁有者要記得釋放。
ex:
A := TForm.Create (Self); // 擁有者會幫你釋放 A := TStringList.Create; // 需自己釋放2. 具有外觀的物件動態建立時要設定 Parent 才能讓外觀顯示在 Parent 的視窗上。 ex: A := TForm.Create (Self); A.Parent := Self;你只要把握上面的原則,無關是否 MDI Form |
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
miller680523
一般會員 發表:47 回覆:49 積分:19 註冊:2002-10-28 發送簡訊給我 |
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言:Form1.ShowModal:就是讓Form1顯示在螢幕上,只能在這個Form1作業,不能跳到其他的Form上作業。若要能在Form之間切換,則需要用MDIForm或Form1.Show的方式即可。 至於要關閉Form,例如您有一個關閉按鈕,只要在關閉按鈕的OnClick下Close;即可關閉此Form1。 ~小弟淺見,參考看看~引言:引言: 如果我不作MDI要如何動態Creat form呢?????記得要先uses Form1;Application.CreateForm(TForm1, Form1); try Form1.ShowModal; finally Form1.Free; end;~小弟淺見,參考看看~ 謝謝你的回應,但小弟我看不太懂 Form1.ShowModal的意思是什麼,可否說明一下.如果有這個方法creat 的 form要如何讓他關閉呢???? 謝謝,感激不盡
------
~小弟淺見,參考看看~ |
miller680523
一般會員 發表:47 回覆:49 積分:19 註冊:2002-10-28 發送簡訊給我 |
引言:引言:Form1.ShowModal:就是讓Form1顯示在螢幕上,只能在這個Form1作業,不能跳到其他的Form上作業。若要能在Form之間切換,則需要用MDIForm或Form1.Show的方式即可。 至於要關閉Form,例如您有一個關閉按鈕,只要在關閉按鈕的OnClick下Close;即可關閉此Form1。 ~小弟淺見,參考看看~ 你好,小弟還有一個問題 1)用這方法是不是會一直佔住記憶體. 2)用這方法是不是要先在project creat form呢??? 3)如果我希望click button在creat form要怎麼作呀?? 有以上三個問題,要勞煩你,解答謝謝.引言:引言: 如果我不作MDI要如何動態Creat form呢?????記得要先uses Form1;Application.CreateForm(TForm1, Form1); try Form1.ShowModal; finally Form1.Free; end;~小弟淺見,參考看看~ 謝謝你的回應,但小弟我看不太懂 Form1.ShowModal的意思是什麼,可否說明一下.如果有這個方法creat 的 form要如何讓他關閉呢???? 謝謝,感激不盡 |
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: 你好,小弟還有一個問題 1)用這方法是不是會一直佔住記憶體. 2)用這方法是不是要先在project creat form呢??? 3)如果我希望click button在creat form要怎麼作呀?? 有以上三個問題,要勞煩你,解答謝謝.1)Create一個物件,當然會佔住記憶體,當您執行到Close;時即會釋放記憶體。 2)是的,也就是先New一個Form,在Delphi Menu/Projcet/Options在Form頁次將您所New的Form從Auto-create forms移到Available Form。一般而言只會將MainForm留在Auto-create forms,其餘的Form幾乎會移到Available Form。這樣的好處是當應用程式一執行時,只有MainForm會被載入記憶體,其餘的Form則不會,當您有下Create時才會被載入記憶體。 3) procedure TForm1.Button1Click(Sender: TObject); var aForm: TForm; begin aForm := TForm.Create(nil); try aForm.Height := 100; aForm.Width := 100; aForm.Position := poScreenCenter; aForm.ShowModal; finally aForm.Free; end; end;不過小弟覺得,用上述的方式Create Form比較不方便,因為您若要在Form上放元件的話也就是要作視覺化的設計,必須要去給定每個元件的Height、Left、Top、Width…等。 ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~ |
miller680523
一般會員 發表:47 回覆:49 積分:19 註冊:2002-10-28 發送簡訊給我 |
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: 謝謝你的回應,我還有一點不解如果移到Available Form要如何呼叫? 呼叫同時會引發那些物件呢??? 謝謝就是用: Application.CreateForm(TForm1, Form1); try Form1.ShowModal; finally Form1.Free; end;小弟再說清楚一點: Auto-create forms:Delphi幫您作Application.CreateForm(TForm1, Form1);的動作,即程式一執行就將Form1先載入記憶體,至於顯現則由您來決定何時顯現,即下Form1.ShowModal;。 Available Form:您必須自行作Application.CreateForm(TForm1, Form1);的動作,將Form1先載入記憶體。由自已決定何時將Form1載入記憶體。 呼叫時會引發在Form之中的所有物件吧! ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~ |
miller680523
一般會員 發表:47 回覆:49 積分:19 註冊:2002-10-28 發送簡訊給我 |
引言:不好意思,第二個問題我打錯了,因該是在載入form1時會觸發那些event???謝謝你的解答.引言: 謝謝你的回應,我還有一點不解如果移到Available Form要如何呼叫? 呼叫同時會引發那些物件呢??? 謝謝就是用:Application.CreateForm(TForm1, Form1); try Form1.ShowModal; finally Form1.Free; end;小弟再說清楚一點: Auto-create forms:Delphi幫您作Application.CreateForm(TForm1, Form1);的動作,即程式一執行就將Form1先載入記憶體,至於顯現則由您來決定何時顯現,即下Form1.ShowModal;。 Available Form:您必須自行作Application.CreateForm(TForm1, Form1);的動作,將Form1先載入記憶體。由自已決定何時將Form1載入記憶體。 呼叫時會引發在Form之中的所有物件吧! ~小弟淺見,參考看看~ |
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言:會觸發三個Event,依序是FormCreate->FormShow->FormActivate ~小弟淺見,參看看~引言:不好意思,第二個問題我打錯了,因該是在載入form1時會觸發那些event???謝謝你的解答.引言: 謝謝你的回應,我還有一點不解如果移到Available Form要如何呼叫? 呼叫同時會引發那些物件呢??? 謝謝就是用:Application.CreateForm(TForm1, Form1); try Form1.ShowModal; finally Form1.Free; end;小弟再說清楚一點: Auto-create forms:Delphi幫您作Application.CreateForm(TForm1, Form1);的動作,即程式一執行就將Form1先載入記憶體,至於顯現則由您來決定何時顯現,即下Form1.ShowModal;。 Available Form:您必須自行作Application.CreateForm(TForm1, Form1);的動作,將Form1先載入記憶體。由自已決定何時將Form1載入記憶體。 呼叫時會引發在Form之中的所有物件吧! ~小弟淺見,參考看看~
------
~小弟淺見,參考看看~ |
miller680523
一般會員 發表:47 回覆:49 積分:19 註冊:2002-10-28 發送簡訊給我 |
|
channel
尊榮會員 發表:67 回覆:707 積分:854 註冊:2002-05-02 發送簡訊給我 |
引言: 那我想請問一下,FormShow是只要form顯示時就一直接續觸發,還是只會觸發一次呢????謝謝其實要判斷事件有沒有被觸發,例如FormShow,只要在事件打上ShowMessage('FormShow');若有觸發到即會彈出訊息,就可知道其觸發時機。
------
~小弟淺見,參考看看~ |
miller680523
一般會員 發表:47 回覆:49 積分:19 註冊:2002-10-28 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |