baseclass
Function  IsModefied:Bool;  virtual;
Function TBaseFrm.IsModefied:Bool;
var
        variContrlRec:^ZXVariContrlRecord;
        i:integer;
begin
       for i:=0 to FVariControlList.Count-1 do
       begin
            variContrlRec:=FVariControlList[i];
            if variContrlRec^.Control is TEdit then
            begin
                if (variContrlRec^.Control as TEdit).Text<>(variContrlRec^.vari)^ then
                begin
                        Result:=True;
                        exit;
                end
                else
                        Result:=False;            end;
       end;
end;
继承的class
Function  IsModefied:Bool;Override;
Function  TLFSupply_Name.IsModefied:Bool;
begin
      if Supplier.ProvinceName <>trim(cboProvince.Text)  then
      begin
        reSult:=True;
        exit
      end
      else
      result:=False;
      inherited;//出错
end;

解决方案 »

  1.   

    你的写法有问题。
    只有类成员才能多态,你的FUNCTION好象都不是类成员。
      

  2.   

    我的类声明如下
    type
          ZXVariContrlRecord = record
            vari : ^Variant;                     //实例属性
            Control : TControl;                  //操作控件
            varType : integer;                    //实例属性的类型
            variName:String;                      //对应cds中的Fieldvalue的名字
          end;
      TBaseFrm = class(TForm)          ??这样有问题吗
      private
        { Private declarations }  public
        { Public declarations }
         FVariControlList : TList;
         constructor Create(AOwner: TComponent); override;
         Destructor Destroy;
         procedure ClearList;Virtual;
         procedure DDX(var vari:variant;Control:TControl;varType:integer;variName:string);overload;
         procedure VCT(b:Bool); Virtual;    //vari<-__tranc_->Control
         procedure AddRecord(Var B:Bool);Virtual;
         procedure DeleteRecord();Virtual;
         procedure UpdateRecord();Virtual;
         procedure ClearVari();Virtual;
         Function  IsEmpty:Bool;     virtual;//判断实例属性是否为空
         Function  IsModefied:Bool;  virtual;//操作控件的值是否等于实例属性的值
         Function  ValidateData:Bool;virtual;
      end;var
      BaseFrm: TBaseFrm;implementation
      

  3.   

    这是我的代码,没有问题。type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        function aa: boolean;virtual;
      end;
      TF = class(TForm1)
       public
       function aa: boolean;override;
      end;
    var
      Form1: TForm1;implementation{$R *.dfm}{ TForm1 }function TForm1.aa: boolean;
    begin
      showmessage('ok');
    end;{ TF }function TF.aa: boolean;
    begin
       inherited aa();
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
     b: TF;
    begin
       b := TF.Create(nil);
       b.aa;
    end;end.