例如,我form中有个函数f(),在Button的click事件中调用f(a).后来,我又继承了该form,在新form中我想在button的click事件中调用f(b),我希望能通过改变父类中a的值为b后运行f(a)从而达到f(b)的目的,我该如何做。

解决方案 »

  1.   

    那你的form中的f()是private的吗
      

  2.   

    只要是private的变量/方法,在子类中都不可以直接访问.
    定义protect或者public的函数,专门设置/读取私有变量的值.
      

  3.   

    谢谢bokei(一夜好眠),请详细一点,我该如何定义protect或者public的函数,专门设置/读取私有变量的值
      

  4.   

    基类:
    private
      _a:Integer;
    public
      SetA(a:Integer);
      ReadA():Integer;
    ......
    procedure SetA(a:Integer);
    begin
      _a:=a;  
    end;function ReadA():Integer;
    begin
      Result:=_a;
    end;子类中继承后,可以用SetA和ReadA来设置/读取_a的值
      

  5.   

    你继承后,直接调用子类方法f(b)就可以了。但f必须是父类的pulic或protected.