类中如何引用控件的事件
如:
type
TTest=class(TThread)
comm1:TMSComm;
procedure Comm1Comm(Sender:TObject); // ---@
private
{private declare}
public
{public declare}
end;
procedure TTest.Comm1Comm(Sender:TObject); //--@@@
begin
//执行一系列的操作
if mscomm1.CommEvent =2 then
begin
// ..............
end;
end;
注:MSCOMM是个控件,它有一个OnComm事件,一旦串口接收到数据,便会触发这个事件,所以在客户端就可以直接在这个事件中接收数据。(先不考虑,MSCOMM是否支持多线程问题,假定是支持多线程的)
现在我的要求是不用form(别用Form1.enabled:=false),需要在后台运行的。做一个DLL文件,利用接口调用线程,通过线程启动串口,并从串口接收数据。请问该如何实现这个事件????实际上问题要解决的是:如何让@ 与@@@关联起来?
如果将其放在窗体上,那么它的形态为:
------------------------------
type
TForm1 = class(TForm)
MSComm1: TMSComm;
procedure MSComm1Comm(Sender: TObject); //控件接收事件
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
-----------------------------
procedure TForm1.MSComm1Comm(Sender: TObject);
var
Receive_Temp:Variant;
Receive_Byte :Byte;
Temp:String;
begin
if mscomm1.CommEvent =2 then
begin
repeat
Receive_Temp:=mscomm1.Input ;
Receive_Byte:=Receive_Temp;
if Receive_Byte<16 then
Temp:='0' & Hex(Receive_Byte)
else
Temp:=Hex(Receive_Byte);
PortReceData:=PortReceData & Temp; //计数器会自动查询该变量
until mscomm1.InBufferCount >0;
end;
------------------------------
我看了一下dfm文件,其中有一段是定义Form1与OnComm的关联的:
object MSComm1: TMSComm
Left = 208
Top = 8
Width = 32
Height = 32
OnComm = MSComm1Comm //就是这里
ControlData = {
2143341208000000ED030000ED03000001568A64000006000000010000040000
00040000802500000000080000000000000000003F00000011000000}
end
end;