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

form1.變數 與 TForm1(Self).變數有何差異

 
yk1012001
一般會員


發表:7
回覆:4
積分:2
註冊:2002-10-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-12-31 22:03:02 IP:59.105.xxx.xxx 訂閱
請問各位,我在 Delphi 有格觀念不太懂,想問各位有何不同?  變數 A & B 為什麼傳回不同值 ??
Unit Frm_1;
type TForm1 = class(TForm)
public
RequiredFields : string;
end;
var
Form1: TForm1;
procedure TForm1.FormCreate(Sender: TObject);
begin
inherited;
RequiredFields := 'TI006';
end;

Unit Frm_2;
....
implementation
uses Frm_1;
procedure Frm_2.MasterBeforePost(DataSet: TDataSet);
var A: string;
B:String;
begin
A:= Form1. RequiredFields; --> TI006
B:= TForm1(self).RequiredFields; --> '' , why?
end;
hagar
版主


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-01-02 16:47:10 IP:59.124.xxx.xxx 未訂閱
procedure Frm_2.MasterBeforePost(DataSet: TDataSet);
var A: string;
B:String;
begin
A:= Form1. RequiredFields; --> TI006
B:= TForm1(self).RequiredFields; --> '' , why?
end;
這時候 TForm1(self) 的 self 是指 Frm_2 的實體
yk1012001
一般會員


發表:7
回覆:4
積分:2
註冊:2002-10-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-01-02 22:52:15 IP:210.64.xxx.xxx 訂閱
謝謝說明,小弟再問一下 : TForm1(self) 整個是指 Frm_1 還是 Frm_2 ??
Coffee
版主


發表:31
回覆:878
積分:561
註冊:2006-11-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-01-02 23:20:35 IP:203.73.xxx.xxx 訂閱
因為你是在form2的函式裡面使用self,所以self指的是fm2,
整句來說,就是你將fm2 強制typecast成TForm1來使用,
所以跟fm1沒關係
------
不論是否我發的文,在能力範圍皆很樂意為大家回答問題。
為了補我的能力不足之處,以及讓答案可以被重複的使用,希望大家能儘量以公開的方式問問題。
在引述到我的文時自然會儘量替各位想辦法,謝謝大家!
g9221712
高階會員


發表:145
回覆:344
積分:162
註冊:2006-07-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-01-03 03:01:43 IP:220.134.xxx.xxx 訂閱
最近看了一本大陸簡體書籍,有講到Self 參考的是Ownerr階層!
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」
程式寫的越久,卻發現自己越來越不會寫程式!
系統時間:2024-05-19 19:22:01
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!