of object 的使用(50)

  • 主题发起人 主题发起人 shengge
  • 开始时间 开始时间
S

shengge

Unregistered / Unconfirmed
GUEST, unregistred user!
TGetData = procedure(RefreshFlag: Boolean) of object; TExchangeInfo = class(TObject) //用来记录公用信息的结构 private FMenuID: Integer; //菜单编号 public property MenuID: Integer read FMenuID write FMenuID; property GetFrameData: TGetData read FGetFrameData write FGetFrameData; property GetOrgofData: TGetData read FGetOrgofData write FGetOrgofData; end;请问一下这样方法指针,它的对象应该是个方法把他用属性来表示有什么作用啊???
 
TGetData表示对应于某个类对象中的过程,参数为(RefreshFlag: Boolean)。TExchangeInfo中有2个属性可由外部设置,应该是该类的内部,需要执行某个外部的过程,所以开放了这2个属性,由外部来对这2个属性赋值。楼主要我们表达什么,我没完全理解。
 
我的理解是:TGetData 定义是一个类指针,如果在 TExchangeInfo 申明一个变量及 FGetFrameData:TGetData,这个变量是不是指 TExchangeInfo 类中具有相同入参的方法;property GetFrameData: TGetData read FGetFrameData write FGetFrameData 这个属性是不是让外部通过属性GetFrameData 调用 TExchangeInfo 类中具有相同入参的方法?
 
这么没人指点了!!!
 
TGetData 定义不是一个类指针,而是指向类的实体(也就是对象)中的一种符合指定参数格式的过程。这种过程由于必须定义在类中,所以加了一个 OF OBJECT,如果不是定义在类中,就可以直接这么写了:TGetData = procedure(RefreshFlag: Boolean)。-----如果在 TExchangeInfo 申明一个变量及 FGetFrameData:TGetData,这个变量是不是指 TExchangeInfo 类中具有相同入参的方法; --》对!
 
事件属性,也就是回调函数
 
这是所有代码没有看到 procedure(Sender: TObject; DockFormMgr: TDockFormMgr) 有这两个参数的过程啊???????? TOnGetCustomDockForm = procedure(Sender: TObject; DockFormMgr: TDockFormMgr) of object; TAccessClass = class(TCustomCSGrid); { TfrmBase } TfrmBase = class(TForm) bbCancel: TCSCancel; cnMain: TCSConnect; bdDictionary: TCSBridge; procedure bbCancelClick(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure FormCreate(Sender: TObject); procedure FormShow(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure FormActivate(Sender: TObject); private FOnGetCustomDockForm: TOnGetCustomDockForm; procedure CSMGetHandle(var Message: TMessage); message CSM_GET_HANDLE; procedure CSMChkReport(var Message: TMessage); message CSM_CHK_REPORT; procedure CSMGetOperRights(var Message: TMessage); message CSM_GET_OPERRIGHTS; procedure CSMQueryOrgid(var Message: TMessage); message CSM_QUERY_ORGID; protected procedure InitCustomerEdit(CustomerEdit: TCSCustomerEdit); procedure InitStockEdit(StockEdit: TCSStockEdit); procedure InitReport(Report: TCSReport); procedure InitDataPopCheckEdit(DataPopCheckEdit: TCSDataPopCheckEdit); procedure InitAgent(AAgent: TCSAgent); procedure InitSureButton(Sure: TCSSure); procedure InitOneControl(OneControl: TComponent); procedure InitControl; procedure InitControlFormCreate; procedure InitCancel(CancelButton: TCSCancel); procedure InitServerEdit(AServerEdit: TCSServerEdit); virtual; procedure GetReportList(var List: TList); virtual; procedure SaveOperInputType(Sender: TObject); procedure SendMdiInfoMessage(MdiDisplayStatus: TMdiDisplayStatus); procedure CancelButtonGetCanceFlag(var CancelFlag: Boolean); procedure SureButtonBeforeClick(var CancelFlag: Boolean); function GetOperatorSpecialRight(OperId: Integer): String; procedure ProtectedExportMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); function ValidateNoSeeStr(key: string): Boolean; function ValidateString(key: String): Boolean; public FOrgid: String; // MenuID: Integer; // MenuRecno: Integer; // MenuPrompt: string; // PrintFlag: Char; // PrintDesignFlag: Char; // PwdFlag: Char; // CheckFlag: Char; // MenuCheck: Boolean; // ImeName: Char; // FDisEnbaleChar: string; // procedure PrintReport(Value: TCSReport); // procedure DesignReport(Value: TCSReport); // procedure RefreshSysStatus; function IsCmClient: Boolean; // procedure RePrintReport(Value: TCSReport); // procedure SetPrintDesignFlag; function CheckPassWord(Value: string; Len: Integer): Boolean; published property OnGetCustomDockForm: TOnGetCustomDockForm read FOnGetCustomDockForm write FOnGetCustomDockForm; end;var frmBase: TfrmBase; Config: TConfig;implementation
 
看来LZ不懂回调是什么意思.自己去google查一下概念吧
 
后退
顶部