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

當formB被隱藏在另一個formA後面時,如何設定選取一個formB

答題得分者是:shinjie
Angi
一般會員


發表:16
回覆:56
積分:14
註冊:2005-01-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-19 10:26:08 IP:211.20.xxx.xxx 未訂閱
formB就好像是一個訊息視窗一般,用來秀一些資訊 formA是母視窗 當formB秀出訊息後,若使用者未關閉,直接點入formA 第二次再要秀出formB時,formB則被隱藏在formA的後面 要如何才能再秀出formB?? 當formB被正常關閉,我可在OnClose寫上formB.free 但若沒有正常關閉,我應該要把free下在哪兒呢?? 發表人 - angi 於 2005/01/19 10:31:29
shinjie
資深會員


發表:12
回覆:275
積分:287
註冊:2003-03-19

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-19 10:35:02 IP:203.73.xxx.xxx 未訂閱
如果是要秀訊息的話最好是用ShowModal 如下: try FormB.ShowModal; Finally FormB.Free; end;
------
我將在茫茫人海中尋訪我唯一之靈魂伴侶。
得之;我幸。不得;我命。
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-19 10:46:38 IP:202.62.xxx.xxx 未訂閱
您好﹗
當FormB為Auto-Create Form時
begin
  if FormB.Visible = True then
    FormB.BringToFront
  else
    FormB.Show;
end;
當FormB為Available Form時
begin
  if FormB <> Nil then
    begin
      FormB.BringToFront;
    end
  else
    begin
      FormB := TForm2.Create(Self);
      Form2.Show;
    end;
end;
FormB的OnClose事件中
begin
  Form2 := Nil;
  Action := caFree;
end;
================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================ 發表人 - cashxin2002 於 2005/01/19 10:53:32
------
忻晟
Angi
一般會員


發表:16
回覆:56
積分:14
註冊:2005-01-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-19 11:17:42 IP:211.20.xxx.xxx 未訂閱
我想我知道二者的差異了 showModal會鎖定在formB...所以不會被選到formA 不過,我這樣寫對嗎?? if(Application.FindComponent('FormB') = nil) then begin Application.CreateForm(TFormB, FormB); try FormB.ShowModal; Finally FormB.Free; end; end; 都會出現錯誤訊息 Access violation at address 004553EB in module 'Cardv1_pro.exe'. Read of address 00000057 這是我有用錯方法..還是另有其他錯誤
shinjie
資深會員


發表:12
回覆:275
積分:287
註冊:2003-03-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-19 11:27:20 IP:203.73.xxx.xxx 未訂閱
如果要使用ShowModal時,FormStyle不能為fsMDIChild,請改回fsNormal 就不會有錯誤訊息了。
------
我將在茫茫人海中尋訪我唯一之靈魂伴侶。
得之;我幸。不得;我命。
Angi
一般會員


發表:16
回覆:56
積分:14
註冊:2005-01-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-19 11:48:24 IP:211.20.xxx.xxx 未訂閱
我發現我只要把 FormB.Free; 拿掉 就不會出現錯誤說 另外,FormStyle原來就是fsNormal了
Angi
一般會員


發表:16
回覆:56
積分:14
註冊:2005-01-12

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-01-19 11:54:26 IP:211.20.xxx.xxx 未訂閱
不過...沒有free...第二次再用 也和show一樣..沒有辦法再開啟 本想在formB Onclose中free... 但也一樣會有錯誤
shinjie
資深會員


發表:12
回覆:275
積分:287
註冊:2003-03-19

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-01-19 13:10:43 IP:203.73.xxx.xxx 未訂閱
應該是你重覆Free兩次的問題 請開一個最簡單的程式,再測試你的Code試試看。 if(Application.FindComponent('FormB') = nil) then begin Application.CreateForm(TFormB, FormB); try FormB.ShowModal; Finally FormB.Free; end; end;
------
我將在茫茫人海中尋訪我唯一之靈魂伴侶。
得之;我幸。不得;我命。
cashxin2002
版主


發表:231
回覆:2555
積分:1937
註冊:2003-03-28

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-01-19 14:04:09 IP:202.62.xxx.xxx 未訂閱
您好﹗    還有一點需要注明﹐就是在Try...Finally...的語法中無法使用Show方法﹐只能使用ShowModal方法﹐即在ShowModal的Form沒有關閉前﹐其它的Form是無法取得Focus焦點的﹒        ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
Angi
一般會員


發表:16
回覆:56
積分:14
註冊:2005-01-12

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-01-19 15:32:14 IP:211.20.xxx.xxx 未訂閱
真的是free有問題 我開全新的來試真的可以 看來真的有其它地方有錯 謝謝了~~
Angi
一般會員


發表:16
回覆:56
積分:14
註冊:2005-01-12

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-01-19 15:55:59 IP:211.20.xxx.xxx 未訂閱
不知我自己這出了什麼問題 可是我又可以確認free一次而已 因為我在free前showmessage 是真的只有一次 真是怪了
Angi
一般會員


發表:16
回覆:56
積分:14
註冊:2005-01-12

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-01-19 16:14:06 IP:211.20.xxx.xxx 未訂閱
知道原因了 原因並不是出在free 而是我在free後 還在設定formB的元件
系統時間:2024-06-26 9:17:45
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!