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

關於LoadPackage & UnloadPackage...

尚未結案
kerochan
一般會員


發表:9
回覆:6
積分:3
註冊:2005-01-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-06 23:04:29 IP:222.248.xxx.xxx 未訂閱
請問,各位前輩 小弟使用Form1 LoakPackage載入一個Bpl 載入後,開啟該Bpl多個視窗 Form2, Form3...(使用Show)... Form1因為不知道Form2, Form3何時結束 因此,如果強行Unload Package,會同時關閉所有該Bpl尚未關閉的Form 請問,能夠寫出,偵測已被載入的BPL,其內的Form還有幾個尚未關閉嗎? 如Form3尚未關閉,那麼我的Form1就停止Unload Pakcage 除非Form2, Form3都關閉了... 謝謝!
yyu10
中階會員


發表:9
回覆:99
積分:96
註冊:2005-02-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-07 04:32:43 IP:220.244.xxx.xxx 未訂閱
在Bpl中加Global变数 Count2, Count3: integer; 在 TForm2.Create 或 TForm2.FormCreate 中加 Inc(Count2); 在 TForm2.Destroy 或 TForm2.FormDestroy 中加 Dec(Count2); 对 TForm3 作类似修改. 在 TForm1 中, if (Count2 = 0) and (Count3 = 0) then UnloadPackage...... 如果你知道Form2, Form3的名字, 也可以用 if (not Application.FindComponent('Form2')) and (not Application.FindComponent('Form3')) then UnloadPackage...... _________________________ Programming is a passion 發表人 - yyu10 於 2005/03/07 04:38:06
mustapha.wang
資深會員


發表:89
回覆:409
積分:274
註冊:2002-03-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-07 09:48:29 IP:218.80.xxx.xxx 未訂閱
可以判断Form在哪个bpl里
var
  AHandle:HModule;
begin
  AHandle:=LoadPackage(...    var
  M:TMemoryBasicInformation;
begin
  for i:=Screen.FormCount-1 downto 0 do
  begin
    VirtualQuery(Screen.Forms[i].ClassType,M,SizeOf(M));
    if (HModule(M.AllocationBase)=AHandle) then
      Screen.Forms[i].Close; 
  end;
久病成良医--多试 千人之诺诺,不如一士之谔谔--兼听 發表人 - mustapha.wang 於 2005/03/07 09:50:44
------
江上何人初见月,江月何年初照人
kerochan
一般會員


發表:9
回覆:6
積分:3
註冊:2005-01-26

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-14 14:23:23 IP:218.17.xxx.xxx 未訂閱
感謝大家的回應,尤其是 mustapha.wang前輩 不過小弟發現一個問題 就是如果Form Close的時候沒有下CaFree mustapha.wangf前輩的方法會認定他還是存在 (因為小弟是,要確認都沒有存在「已開啟」的Form就把bpl給Free掉)
mustapha.wang
資深會員


發表:89
回覆:409
積分:274
註冊:2002-03-13

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-03-15 08:42:47 IP:218.80.xxx.xxx 未訂閱
之所以用Screen.Forms[i].Close; 是为了保证你的Form的OnCloseQuery,OnClose等事件执行,比如有修改询问用户是否保存,如果cancel,就停下来了。如果没有这个需要,当然可以用Screen.Forms[i].Free;     久病成良医--多试 千人之诺诺,不如一士之谔谔--兼听
------
江上何人初见月,江月何年初照人
系統時間:2024-06-08 4:22:05
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!