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

如何製作元件的互斥性

答題得分者是:pedro
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-11-06 13:13:42 IP:211.21.xxx.xxx 未訂閱
之前製作 TMyIni 元件想到一個問題 由於 TMyIni 會在背景產生一個與執行檔同名的 ini (如 Project1.ini) 也就是說,一個 Project 只要放一個 TMyIni 元件就夠了 , 但我無法控制 user 在 delphi 中拉一個 MyIni1 到主 form 後,不再繼續 拉 MyIni2 , MyIni3 ....到主 Form 元件可以限定只能唯一嗎 ? 或能具互斥性嗎 , 例如有 A 元件就不能有 B 元件 (不管 A 與 B 是否相同類別)
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-11-06 13:20:20 IP:147.8.xxx.xxx 未訂閱
I think it is not practical to limit the number of components since it can be placed in different forms. Perhaps you could make it some kind of singleton?
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-11-06 17:08:01 IP:210.61.xxx.xxx 未訂閱
藉由一段小技巧 typed const (靜態變數)的使用 判斷元件被實際產生幾次來控管
const
  Instance:Integer=0;    constructor TPanel1.Create(AOwner: TComponent);
begin
  if Instance=0 then
  begin
    inherited;
    Inc(Instance);
  end
  else abort;
end;
發表人 - pedro 於 2003/11/06 17:26:50
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-11-06 17:54:27 IP:211.21.xxx.xxx 未訂閱
引言: 藉由一段小技巧 typed const (靜態變數)的使用 判斷元件被實際產生幾次來控管
const
  Instance:Integer=0;    constructor TPanel1.Create(AOwner: TComponent);
begin
  if Instance=0 then
  begin
    inherited;
    Inc(Instance);
  end
  else abort;
end;
發表人 - pedro 於 2003/11/06 17:26:50
果...果...果然真的可以用 但為何第二個物件的 const 宣告 const Instance:Integer=0; 不會'又'將 Instance 清為 0 ?? 這跟我對靜態變數了解的觀念不同 ...
pedro
尊榮會員


發表:152
回覆:1187
積分:892
註冊:2002-06-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-11-07 08:39:07 IP:210.61.xxx.xxx 未訂閱
第二次Instance並不會把 typed const 清為0 ShowMessage(IntToStr(Instance)) 第二次建立元件值和第一次不同 也就是第二次遇到const instance:=0 編譯器並不會assign 0 給instance >但為何第二個物件的 const 宣告 >不會'又'將 Instance 清為 0 ?? >這跟我對靜態變數了解的觀念不同 ...
hagar
版主


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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-11-07 08:46:26 IP:202.39.xxx.xxx 未訂閱
有關 const 的: http://forum.vclxx.org/topic.php?TOPIC_ID=8819&FORUM_ID=8&CAT_ID=2&Topic_Title=ÀRºAÅܼƫŧi ?&Forum_Title=Pascal --- Everything I say is a lie.
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-11-07 08:54:01 IP:211.21.xxx.xxx 未訂閱
感謝各位長官
系統時間:2024-06-27 10:47:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!