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

Discussion in 'Object Pascal' started by zbdzjx, Dec 2, 2010.

  1. zb

    zbdzjx New Member Member

    最近在寫一個程序,用了窗體繼承,但寫的差不多了,發現了一個出乎我原來想法的問題。我繼承用的不多,所以之前沒有遇到過。我先建了一個基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只要一操作就報錯了。請高手指點一下,應該怎樣做才能實現我想要的效果。
     
  2. ad

    ado7758 New Member Member

    那就在继承下来的form上定义嘛。
     
  3. po

    power255 New Member Member

    定义一个新变量ObjTmp:TA1
    ObjTmp:=TA1.Create(AOwner)
    不要用 A1 := TA1.Create(AOwner)
    的方式建立
     
  4. zb

    zbdzjx New Member Member

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