我写了一个基类如下:
type
  T_T_Class = packed record //部门组织表
  FClassId: integer;//部门内码
  FOrganId: integer;//机构内码
  FOrganName: string[50];//部门名称
  FOrganHideFlag: boolean;//部门隐藏标志 0开1关
  end;type
TDataBase   =   class(TInterfacedObject)
private
FADOC   :   TADOConnection;
FADOQ   :   TADOQuery;
FDS     :   TDatasource;
FConnectionString   :   string;
FT_Class: T_T_Class;//部门组织表    
    procedure SetT_Class(const Value: T_T_Class);
publicfunction Checkeed: Boolean;
procedure InitQuery(InputQuery: TADOQuery; QueryString: String);
function OpenDataBase():TDataSource;overload;                                  
function OpenDataBase(ConnectionString: String):TDataSource;overload;          
procedure CloseDataBase();                                                      
function InsertRecord(MyTabel:T_Tabel;Reco:T_T_Organ):boolean;overload;                function QueryRecord(value:string):TADOQuery;virtual;abstract;                  
function DeleteRecord(Value : Integer):boolean;virtual;abstract;                
function AddRecord(Value : T_T_Organ):boolean ;virtual;abstract;                //
function SaveRecord(Value : T_T_Organ):boolean;virtual;abstract;                //
procedure NextRecord;virtual;abstract;                                          //
procedure PriorRecord;  virtual;abstract;                                       //
function IsLock():boolean;virtual;abstract;                                     //
function GetQuery: TADOQuery;overload;virtual;                                  //
function GetExecuteScalar(QueryString: String): Variant;overload;virtual;       //
function GetExecuteNoQuery(ExecuteSQL:String):Boolean;overload;virtual;         //property T_Class: T_T_Class read FT_Class write SetT_Class;    // 这里把T_T_Class作为类的一个属性;     
end;然后继承基类(不在同一个单元里):type
TFundPlanManClass = class (TDataBase, IMyInterEverdayFundExpend, IMyInterEnterPlanFunds)
public
function test(): string;
function test1():string;
function test2():string;
end;function TFundPlanManClass.test: string;
var
    a   :   TEnterPlanFundsClass;
   
begin
    a   :=   TEnterPlanFundsClass.Create;
    
        a.T_Organ.FOrganId:=1; //这里为什么会出错 错误提示是: Left side cannot be assigned to
end;

解决方案 »

  1.   

    不知道你的TEnterPlanFundsClass的T_Organ.FOrganId是什么,自己看一下
      

  2.   

    你的FOrganId应该是函数之类的,而你给它赋值了
      

  3.   

    最后一句是这个,刚写错了:a.T_Class.FClassId:=1;
      

  4.   

    就是这个,你都不看清楚FClassId是属性还是函数还是什么就给他赋值了
      

  5.   

    我定义了一个记录集:请您好好看一下。谢谢你。
    type 
      T_T_Class = packed record //部门组织表 
      FClassId: integer;//部门内码 
      FOrganId: integer;//机构内码 
      FOrganName: string[50];//部门名称 
      FOrganHideFlag: boolean;//部门隐藏标志 0开1关 
      end; 
      

  6.   

    我在基类里面定义了一个记录集(packed record),然后我把这个记录定义成了一个属性。然后在继承的类里面访问这个记录集里的其中一个属性。然后赋值。
      

  7.   

    TEnterPlanFundsClass 是从哪里继承下来地?里是否确实含有此T_Class属性?
      

  8.   

    刚才没仔细看你的代码,你应该这样写,你不能直接那样赋值的:
    function TFundPlanManClass.test: string; 
    var 
        a  :  TEnterPlanFundsClass; 
        aClass: T_T_Class;
    begin 
        a  :=  TEnterPlanFundsClass.Create; 
        aClass.FClassId:=1;
        a.a.T_Class:=aClass;
        //...
    end;
      

  9.   

    var   ttclass:T_T_Class;
          a:TEnterPlanFundsClass; 
    begin
      a  :=  TEnterPlanFundsClass.Create; 
      ttclass.FClassId:=1; 
      a.T_Class:=ttclass;
    end;
      

  10.   

    wzwcn高手,这样可以,但能否说一下原因,还有,aClass.FClassId 不只这一个,还有FOrganId: 
      FOrganName:  FOrganHideFlag 如果这些不赋值,直接执行a.T_Class:=aClass; 哪么没有赋值的是否默认为空呢?谢谢
      

  11.   

    Harryfin兄弟,哪有没有更好的办法呀
      

  12.   

    如果你要单个赋值那就定义成property ClassId : Integer read FClassId write FClassId;    
      

  13.   

     
    dd_zhouqian,我的ClassId是个packed record 类型呀,我在上面定义的有,你可以看看,谢谢。 
      

  14.   

    可以這樣定義 :
    property T_Class: T_T_Class  Read FT_Class write SetT_Class;屬性方法:
    procedure SetT_Class(Value : T_T_Class);
    begin
      FT_Class.FClassID := Value.FCLassID;
      FT_Class.FOrganId := Value.FT_FOrganId ;
      ...
    end;
    使用時,傳這個類型的record進去就好...
      

  15.   

    不用属性,直接用public变量应该可以
      

  16.   

    with a.T_Class do
    FClassId:=1