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

請問一個變數設定的問題。

答題得分者是:fangwy
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-27 09:45:36 IP:61.221.xxx.xxx 未訂閱
請問各位。 目前有多個表單, 如From1/From01/From02/From03/From001 如果有個變數,TheFlog此變數希望能在各表單可作應用, 例如: From1->From01 -> From001 ->From02 ->From03 From1會去呼叫From01-03 ,而From01-03也會同時去呼叫一個表單From001。 如何讓變數作應用。 謝謝。
fangwy
中階會員


發表:99
回覆:139
積分:62
註冊:2003-09-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-27 09:54:59 IP:218.5.xxx.xxx 未訂閱
不太明白你的意思,如果TheFlog是在所有Form都要使用的变数,只要在其中一个Form中定义,然后uses这个Form的单元就可能使用了.我通常的做法是增加一个没有Form的单元,在里面声明所有全局变数,如这个单元是Public.pas,在每个要使用全局变数的Form中uses Public.pas.
cashxin2002
版主


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-27 10:04:11 IP:202.62.xxx.xxx 未訂閱
您好﹗    將此變數宣告在Public區域即可﹒    ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-27 10:04:24 IP:203.69.xxx.xxx 未訂閱
建立一個 UnitGlobal unit UnitGlobal; interface var TheFlog:...; 在 Form1,Form01-03,Form001 的 uses 中加入 ...UnitGlobal.. 幫樓上大大做補充啦!
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-07-27 10:16:44 IP:61.221.xxx.xxx 未訂閱
謝謝大家。 我試著建立一個 unit UnitGlobal ; interface var TheFlog: String; implementation end. 在FACOAM07加入UnitGlobal。 uses UCOA, UnitGlobal; 但是在FACOAM07中使用時,如下 procedure TFACOAM07.FormActivate(Sender: TObject); begin   PageControl1.OwnerDraw := True;   TheFloag :='1'; end; 卻發生。 Undeclared identifier : 'TheFloag' 不是就表示找不到嗎。 謝謝。
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-07-27 10:37:01 IP:203.69.xxx.xxx 未訂閱
樓上的, 你變數名稱打錯了 TheFloag≠TheFlog....
fangwy
中階會員


發表:99
回覆:139
積分:62
註冊:2003-09-10

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-07-27 10:37:39 IP:218.5.xxx.xxx 未訂閱
你的做法没错,但你声明的变数是TheFlog,使用的是TheFloag当然找不到啦.
deity
尊榮會員


發表:90
回覆:876
積分:678
註冊:2003-05-09

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-07-27 10:44:00 IP:218.15.xxx.xxx 未訂閱
引言:
    interface

uses Windows;//加上此句,试试,小弟试了没问题      var TheFlog: String;
implementation    end.    在FACOAM07加入UnitGlobal。
uses UCOA, UnitGlobal;    在FACOAM07中使用時,如下
procedure TFACOAM07.FormActivate(Sender: TObject);
begin
  PageControl1.OwnerDraw := True;
  TheFloag :='1';
end;
 
不过如果单单只是调用一个变数的话,还是定义在主Form(unit1)的 public即可
  private
    { Private declarations }
  public
    { Public declarations }
TheFlog: String;
  end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  TheFlog:='1';
end;    调用:
uses unit1;
procedure TForm3.Button1Click(Sender: TObject);
begin
  showmessage(Form1.TheFlog);
end
变量声明和函数声明等类似,参考: http://delphi.ktop.com.tw/topic.php?TOPIC_ID=52861 ============================ 为什么经过多年以后,得失的过程如此冷漠 ============================
malanlk
尊榮會員


發表:20
回覆:694
積分:577
註冊:2004-04-19

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-07-27 10:51:58 IP:203.69.xxx.xxx 未訂閱
致 t0288542, 如果你的問題解決了趕快結案給分給 fangwy 大大 哦.... 發表人 - malanlk 於 2005/07/27 10:55:40
fangwy
中階會員


發表:99
回覆:139
積分:62
註冊:2003-09-10

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-07-27 11:01:05 IP:218.5.xxx.xxx 未訂閱
malanlk兄过谦了,我们提出的是同一种方法,而且我认为只要没理解错t0288542的用意,应该能解决他的疑问,但你给出了具体的实例,也许对t0288542兄更有帮助.
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-07-27 11:01:23 IP:61.221.xxx.xxx 未訂閱
不好意思。我剛剛將名稱打錯。 現在不會有錯誤訊息。 但是,好像一直無法取到此變數的值。 因為會定義到多個全局變數,所以利用UnitGlobal來設定變數。 目前有三表單作連結。我分別將它們列出來。 表單:FACOAM01 uses UCOA, UCOAM07, UnitGlobal; procedure TFACOAM01.SpeedButton3Click(Sender: TObject); begin FACOAM07.ShowModal; UnitGlobal.TheFlog :='FACOAM01'; end; 表單:FACOAM07 procedure TFACOAM07.FormActivate(Sender: TObject); begin PageControl1.OwnerDraw := True; showmessage(UnitGlobal.TheFlog);//為空值 if UnitGlobal.TheFlog ='FACOAM01' then begin TabSheet1.Caption := ' 一般選項'; TabSheet2.Caption := ' 進階選項'; Label1.Font.Size := 10; Label1.Caption :='參照欄位代號'; end; end; UnitGlobal以下。 unit UnitGlobal ; interface uses Windows; var TheFlog: String; implementation end. 不好意思。再次麻煩大家。 我會在仔細看一下。 謝謝。
fangwy
中階會員


發表:99
回覆:139
積分:62
註冊:2003-09-10

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-07-27 11:08:44 IP:218.5.xxx.xxx 未訂閱
如果你打算在FACOAM07中使用TheFlog,并且需要其值等于'FACOAM01',应该如下写法,两句对调. procedure TFACOAM01.SpeedButton3Click(Sender: TObject); begin UnitGlobal.TheFlog :='FACOAM01'; FACOAM07.ShowModal; end; 否则,FACOAM07未关闭之前并未执行到UnitGlobal.TheFlog :='FACOAM01'; 你可以加断点跟踪看看就明白了.另外引用TheFlog并不需要加'UnitGlobal.'
t0288542
中階會員


發表:216
回覆:254
積分:94
註冊:2004-10-06

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-07-27 11:42:22 IP:61.221.xxx.xxx 未訂閱
謝謝您。 我沒有注意到它帶值的順序。 真是麻煩各位。 謝謝大家。 ^^
系統時間:2024-07-01 2:58:32
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!