谁能帮我分析下这段代码么,主要是开始的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那下面的,谢谢了
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那下面的,谢谢了
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)