問一個關於繼承的問題(100)

Z

zbdzjx

Unregistered / Unconfirmed
GUEST, unregistred user!
最近在寫一個程序,用了窗體繼承,但寫的差不多了,發現了一個出乎我原來想法的問題。我繼承用的不多,所以之前沒有遇到過。我先建了一個基FORM,名A,在裏面建了一個public變量IntA。我再建了兩個FORM,名A1和A2,都是繼承A的。我發現的問題是:如果我在A1中將IntA改了,在A2中的IntA也變了!!我一直以為:在打開A1和A2時,會建兩個A,分別給A1和A2使用,但現在卻發現是只建了一個A,A1和A2是共用A的!我這樣做的目的是想在A中加一些共用的操作,但操作的表不一樣,我在A1和A2的onshow中給這些public變量付值,指定每一個窗口要操作的表名。但現在看來這樣做是不行的。先打開A1,再打開A2,那保存表名的變量全變成A2的了,A1只要一操作就報錯了。請高手指點一下,應該怎樣做才能實現我想要的效果。
 
A

ado7758

Unregistered / Unconfirmed
GUEST, unregistred user!
那就在继承下来的form上定义嘛。
 
P

power255

Unregistered / Unconfirmed
GUEST, unregistred user!
定义一个新变量ObjTmp:TA1
ObjTmp:=TA1.Create(AOwner)
不要用 A1 := TA1.Create(AOwner)
的方式建立
 
Z

zbdzjx

Unregistered / Unconfirmed
GUEST, unregistred user!
回ado7758: 只能在原有的form上定義,因為在原form上有很多控件,有很多操作,只是根據繼承窗口給的值來判斷操作不同的表。回power255: 我試試看。雖然我已經找到另一個解決方法了,但還是不理解。我看看你的說法怎麼樣。
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
顶部