全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1195
推到 Plurk!
推到 Facebook!

請問要如何偵測物件是否還「活著」?

答題得分者是:hagar
c905165
中階會員


發表:50
回覆:120
積分:54
註冊:2002-09-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-10-23 07:35:04 IP:203.204.xxx.xxx 未訂閱
假設說我們從Form1利用Form2.show;進入Form2,再從Form2.close回到Form1. 沒有錯,表面上是已經關掉了,但是並沒有 Form2.free掉,所以還留在memory,如果等一下再Form2.show,將會發現所有之前的值都還留著。 現在就是想要做成Form1可以有選單自由關閉其Form2,但是因為又怕使用者誤按第二次的關閉按鈕, Form2.free二次的話會掛掉吧,所以在關它之前要先測試是否還存在於memory,才能Form2.free,不是嗎?怎麼做到呢?謝謝! 而且能夠做出來「未關閉(指.free)」的表單列表嗎?
------
有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-10-23 07:39:04 IP:202.39.xxx.xxx 未訂閱
1.
if Form2 <> nil then
  ...
2.例:
var i: integer;
begin
  for i := 0 to Application.ComponentCount - 1 do
    if Application.Components[i] is TForm then
      if Application.Components[i] <> nil then
        ListBox1.Items.Add((Application.Components as TForm).Name));
end;
-- Everything I say is a lie.
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-10-23 08:06:51 IP:61.219.xxx.xxx 未訂閱
如果你每次close form2都希望Free Form2 可以不用如此麻煩, 在form2之onClose加一行 Action:=caFree; 如此只要close就會自動Free
c905165
中階會員


發表:50
回覆:120
積分:54
註冊:2002-09-29

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-11-13 03:16:45 IP:203.204.xxx.xxx 未訂閱
因為大部份的情況,我都要離開時,再回來保留它的值,所以我應該持續使用傳統的close,但假設如果我其中有一次要離開時, 我使用了form3.free(假設目前正在form3),這樣會掛掉耶。它不能free自己,怎麼辦呢?
------
有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩
c905165
中階會員


發表:50
回覆:120
積分:54
註冊:2002-09-29

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-12-03 23:21:40 IP:203.204.xxx.xxx 未訂閱
引言: 1.
if Form2 <> nil then
  ...
2.例:
var i: integer;
begin
  for i := 0 to Application.ComponentCount - 1 do
    if Application.Components[i] is TForm then
      if Application.Components[i] <> nil then
        ListBox1.Items.Add((Application.Components as TForm).Name));
end;
-- Everything I say is a lie.
這一行有誤:ListBox1.Items.Add((Application.Components as TForm).Name)); 括號欠一個,而且 as 也錯了,應該要怎麼修正呢?
------
有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩
c905165
中階會員


發表:50
回覆:120
積分:54
註冊:2002-09-29

發送簡訊給我
#6 引用回覆 回覆 發表時間:2002-12-03 23:29:06 IP:203.204.xxx.xxx 未訂閱
呵呵,改成 ListBox1.Items.Add((Application.Components[i].Name)); 即可。    謝謝您喔..
------
有困難就是能力不足,有麻煩就是方法不對... 劣者總是遇到困難,也時常出現麻煩
系統時間:2024-05-03 9:09:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!