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

Form Button 問題

尚未結案
selina
一般會員


發表:39
回覆:64
積分:20
註冊:2002-12-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-05 10:58:07 IP:203.162.xxx.xxx 未訂閱
我有一個應該是簡單的問題吧,可是我一直做不出來所以就上來問問大家 我的MDI Application project 中有三個Form Form1, Form2, Form3 : Form style : Normal Form1: 有2個button : Next, cancel Form2: 有3個button : Back, next, cancel 當使用者在form1按Next時,form1會 hide,form2.show; 當使用者在form2按Back時,form2會close,form1.show; 當使用者在form1按Cancel時,form2會close, form1.close; ----這個地方出現問題,當我按Cancel時會出現"Stack overflow" error message. 請問這是什麼原因啊?
speedup
資深會員


發表:19
回覆:259
積分:280
註冊:2003-07-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-05 11:13:02 IP:210.243.xxx.xxx 未訂閱
我猜你應該在Form1.OnHide事件有寫程式如Form2.Close ,然後在form2.OnClose又有Form1.Hide造成遞回呼叫巴 要找出問題請在事件里設中斷點,即可看出遞回呼叫成因 混心雜欲 棄修身~唉
------
唉~
selina
一般會員


發表:39
回覆:64
積分:20
註冊:2002-12-05

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-05 12:55:10 IP:203.162.xxx.xxx 未訂閱
是的,我有在Form1.OnHide時,執行Form2.close, Form1.Close (是在使用者在form2上按Cancel時) 這樣的話我要怎樣close form1, form2 當使用者按Form2 cancel呢?
speedup
資深會員


發表:19
回覆:259
積分:280
註冊:2003-07-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-05 13:22:14 IP:210.243.xxx.xxx 未訂閱
mmmm...... 做法很多啦,最主要還是要看你的目的啦 幫你想一個 1.你把所有控制全部寫在OnClick裡面,不要寫在OnHide,OnClose 2.如果你有用TBitBtn請把Kind設成bkCustom(可避免按Cancel/OK自動觸發本身Close) 這這作之後你自行在OnClick事件理下達hide /Close應該可以達到妳的目的 再不行的話就要加一些Global變數來控制 混心雜欲 棄修身~唉
------
唉~
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-12-05 14:54:08 IP:218.160.xxx.xxx 未訂閱
Hi selina您好: 小弟猜想你的錯誤應該是Form被Close後但並未重新建立便又直接Show出來,譬如Form2已經Close了,但你又直接下Form2.Show之類的, 我的做法會將這些Form都動態建立起來並使用ShowModal的方式開啟 以下程式參考

MainForm    procedure TMainForm.ToolButton12Click(Sender: TObject);
begin
   form1 := TForm1.Create(Self);
   try
      form1.ShowModal;
   finally
      form1.Free;
      form1 := nil;
   end;
end;    ***********************
Form1 Next
procedure TForm1.Button1Click(Sender: TObject);
begin
   form2 := TForm2.Create(Self);
   form1.Hide;
   try
      form2.ShowModal;
   finally
      form2.Free;
      form2 := nil;
   end;
   form1.Show;
end;    Form1 Cancel
procedure TForm1.Button2Click(Sender: TObject);
begin
   Close;
end;
**************
Form2 Back    procedure TForm2.Button1Click(Sender: TObject);
begin
   Close;
end;
發表人 - miles 於 2003/12/05 14:55:55
------


我不是高手, 高手是正在銀幕前微笑的人.
Ktop_Robot
站務副站長


發表:0
回覆:3511
積分:0
註冊:2007-04-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-04-30 13:45:07 IP:000.000.xxx.xxx 未訂閱
提問者您好:


以上回應是否已得到滿意的答覆?


若已得到滿意的答覆,請在一週內結案,否則請在一週內回覆還有什麼未盡事宜,不然,
將由版主(尚無版主之區域將由副站長或站長)自由心證,選擇較合適之解答予以結案處理,
被選上之答題者同樣會有加分獎勵同時發問者將受到扣 1 分的處分。不便之處,請見諒。


有問有答有結案,才能有良性的互動,良好的討論環境需要大家共同維護,感謝您的配合。

------
我是機器人,我不接受簡訊.
系統時間:2024-05-19 10:57:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!