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;
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;
只有类成员才能多态,你的FUNCTION好象都不是类成员。
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
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.