谁能帮我分析下这段代码么,主要是开始的type那下面的,谢谢了
unit DetailsForm;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, BEDialogForm, RzCommon, RzButton, ExtCtrls, RzPanel, jpeg,
  RzBckgnd, DB, BEPlatform, RzEdit, RzDBEdit, RzCmboBx, RzDBCmbo,
  RzRadGrp, RzDBRGrp, RzRadChk, RzDBChk, ComCtrls, RzDTP, RzDBDTP,
  DBClient, BeDBClient, Contnrs, cxClasses, cxStyles, cxGridBandedTableView,
  cxContainer, cxEdit, StdCtrls, Mask, MessageDlgForm;type
  TFormDetailsBaseClass = class of TFormDetailsBase;  TFormDetailsBase = class;  EOperationType = (otAppend,otEdit,otShowDetails,otCheck,otDefAppend);  TShowDetailsBeforeEvent = procedure (ShowForm: TFormDetailsBase;
      DataSet: TBeClientDataSet; OperationType: EOperationType) of object;  TShowDetailsAfterEvent = function (ShowForm: TFormDetailsBase;
      DataSet: TBeClientDataSet; OperationType: EOperationType): Boolean of object;  TAddDataDefaultValueEvent = procedure (DataSet: TBeClientDataSet) of object;  TFormDetailsBase = class(TFormBEDialog)

    ParamDataSource: TDataSource;
    cxStyle1: TcxStyle;
    cxStyle2: TcxStyle;
    cxStyle3: TcxStyle;
    cxStyle4: TcxStyle;
    cxStyle5: TcxStyle;
    cxStyle6: TcxStyle;
    cxStyle7: TcxStyle;
    cxStyle8: TcxStyle;
    cxStyle9: TcxStyle;
    cxStyle10: TcxStyle;
    cxStyle11: TcxStyle;
    cxStyle12: TcxStyle;
    cxStyle13: TcxStyle;
    cxStyle14: TcxStyle;
    cxStyle15: TcxStyle;
    cxStyle16: TcxStyle;
    BackBmp: TcxStyle;
    FootBmp: TcxStyle;
    ContentBmp: TcxStyle;
    GridBandedTableViewStyleSheetDevExpress: TcxGridBandedTableViewStyleSheet;
    cxMainGridStyleRepository: TcxStyleRepository;
  private
    mIsReadOnly: Boolean ;
    mShowDetailsBefore: TShowDetailsBeforeEvent;
    mShowDetailsAfter: TShowDetailsAfterEvent;
    mAddDataDefaultValue: TAddDataDefaultValueEvent;
    procedure SetReadOnly(const Value: Boolean);
    procedure RzNumericEditMouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  protected
    Param: TBEFuncInitParam ;
    CanSetReadOnly: Boolean;
    DataSet: TDataSet ;
    DataSetList: TObjectList;
    InitIsComplete: Boolean;
    function GetDataSetByName(DataSetName: string):TDataSet;
    procedure ReadOnlyAll(OnlyRead: boolean); virtual;
    procedure Init();virtual;
  public
    property ShowDetailsBefore: TShowDetailsBeforeEvent
      read mShowDetailsBefore write mShowDetailsBefore;
    property ShowDetailsAfter: TShowDetailsAfterEvent
      read mShowDetailsAfter write mShowDetailsAfter;
    property AddDataDefaultValue: TAddDataDefaultValueEvent
      read mAddDataDefaultValue write mAddDataDefaultValue;    function ShowDetailsAndPost(OperationType: EOperationType;
      StartTran: Boolean = false):Boolean; overload;
    function ShowDetailsAndPost(KeyFieldName,KeyValue: string;
      StartTran: Boolean = false):Boolean; overload;    function ShowModal: Integer; override;
    property isReadOnly: Boolean read mIsReadOnly write SetReadOnly ;
    constructor Create(AOwner: TComponent; PParam:TBEFuncInitParam;
       PDataSet: TDataSet = nil ;pReadOnly :Boolean = false ); reintroduce; overload;
    constructor Create(AOwner: TComponent; PParam:TBEFuncInitParam;
       var DataSetList: TObjectList;pReadOnly :Boolean = false ); reintroduce; overload;
  end;var
  FormDetailsBase: TFormDetailsBase;implementation{$R *.dfm}{ TFormDetailsBase }constructor TFormDetailsBase.Create(AOwner: TComponent; PParam: TBEFuncInitParam;
  PDataSet: TDataSet; pReadOnly: Boolean);
var
  i: Integer;
begin
  inherited Create(AOwner);
  Param := PParam ;
  for i := 0 to ComponentCount - 1 do
  begin
    if Components[i] is TBeClientDataSet then
    begin
      (Components[i] as TBeClientDataSet).BeServer := Param.ServerProxy;
    end;
  end;
  DataSet := PDataSet ;
  ParamDataSource.DataSet := PDataSet ;
  Init;
  isReadOnly := pReadOnly ;
end;constructor TFormDetailsBase.Create(AOwner: TComponent;
  PParam: TBEFuncInitParam; var DataSetList: TObjectList; pReadOnly: Boolean);
var
  MainDataSet: TDataSet;
begin
  MainDataSet := nil;
  if Assigned(DataSetList) and (DataSetList.Count >0) then
  begin
    Self.DataSetList := DataSetList;
    MainDataSet := DataSetList[0] as TDataSet;
  end;
  Create(AOwner,PParam,MainDataSet,PReadOnly);
end;
谁能帮我分析下这段代码么,主要是开始的type那下面的,谢谢了

解决方案 »

  1.   

    UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP
      

  2.   


    type
    //这个不多说了
    //TFormDetailsBase和TFormDetailsBaseClass的关系参考TForm和TFormClass 
    TFormDetailsBaseClass = class of TFormDetailsBase;
    TFormDetailsBase = class;//定义一个枚举类型
    EOperationType = (otAppend,otEdit,otShowDetails,otCheck,otDefAppend);//这三个类都是函数类,一般用于要将函数/过程作为参数的场景,如回调函数
    TShowDetailsBeforeEvent = procedure (ShowForm: TFormDetailsBase;
    DataSet: TBeClientDataSet; OperationType: EOperationType) of object;TShowDetailsAfterEvent = function (ShowForm: TFormDetailsBase;
    DataSet: TBeClientDataSet; OperationType: EOperationType): Boolean of object;TAddDataDefaultValueEvent = procedure (DataSet: TBeClientDataSet) of object;//TFormDetailsBase类的声明
    TFormDetailsBase = class(TFormBEDialog)
      

  3.   

    谢谢,TFormDetailsBase和TFormDetailsBaseClass的关系参考TForm和TFormClass 能再给我讲细点么?还有就是我怎么拿分给你?