编写自定义组件,及其事件调用,相关代码:
1。事件类型声明:
TReceiveDataEvent = Procedure(UsbCard, MachNo: byte;
BuffLeng, FuncCode: integer;
DataBuffer: array of char;
var handle:boolean ) of object;
2。组件声明:
TWinComDevice = class(TComponent) //通讯设备类
private
fOnReceiveData: TReceiveDataEvent;
...
public
property OnReceiveData :TReceiveDataEvent read fOnReceiveData write fOnReceiveData;
...
end;
3.组件事件触发:
...
if Assigned(fOnReceiveData) then //总是为真
fOnReceiveData(iCardid,iMachNo,iLength,iFuncCode,DataBuffer,bolHandle); //发生地址访问错误
...
4。组件事件
MyComDevice.fOnReceiveData := ReceiveData;//ReceiveData为已定义的事件处理过程。问题:
在调试过程中,用代码创建该组件类对象,并为其编写事件响应过程,提示出错,请高手指教。
1。事件类型声明:
TReceiveDataEvent = Procedure(UsbCard, MachNo: byte;
BuffLeng, FuncCode: integer;
DataBuffer: array of char;
var handle:boolean ) of object;
2。组件声明:
TWinComDevice = class(TComponent) //通讯设备类
private
fOnReceiveData: TReceiveDataEvent;
...
public
property OnReceiveData :TReceiveDataEvent read fOnReceiveData write fOnReceiveData;
...
end;
3.组件事件触发:
...
if Assigned(fOnReceiveData) then //总是为真
fOnReceiveData(iCardid,iMachNo,iLength,iFuncCode,DataBuffer,bolHandle); //发生地址访问错误
...
4。组件事件
MyComDevice.fOnReceiveData := ReceiveData;//ReceiveData为已定义的事件处理过程。问题:
在调试过程中,用代码创建该组件类对象,并为其编写事件响应过程,提示出错,请高手指教。
否则,在fOnReceiveData未赋值前,fOnReceiveData值不确定,
而Assigned(fOnReceiveData) 可能为真
if Assigned(fOnReceiveData) then
之前有个函数,其中调用dll,把该函数封了后,工作全部正常.
可是该函数在调用后正常返回,并且返回值正确。 :(