我在数据模块中有一个 idudpserver 并将这个 DM 链接到服务器表单。我的服务器表单使用这个数据模块。当客户端从 udp 端口向服务器发送消息时,会引发数据模块中的 IdUDPServer1UDPRead 事件,但我必须在服务器中使用此事件将结果写入服务器的备忘录。我怎样才能做到这一点?
我的数据模块必须完全独立于服务器。
将事件属性添加到可以从服务器表单设置的数据模块。
如果分配从数据模块调用它。
例如数据模块
type
TCallBackMessage=Procedure (Sender:TObject;const msg:String) of object;
TDataModule2 = class(TDataModule)
Event: TTimer; // just for test
procedure EventEvent(Sender: TObject);
private
FCallBackMessage: TCallBackMessage;
{ Private-Deklarationen }
public
{ Public-Deklarationen }
Property CallBack:TCallBackMessage read FCallBackMessage Write FCallBackMessage;
end;
var
DataModule2: TDataModule2;
implementation
{$R *.dfm}
procedure TDataModule2.EventEvent(Sender: TObject);
begin
if Assigned(CallBack) then CallBack(self,'MyMessage')
end;
服务器
procedure TForm1.MyCallBack(Sender: TObject; const Msg: String);
begin
Showmessage('Hallo')
end;
procedure TForm1.FormActivate(Sender: TObject);
begin
if not Assigned(Datamodule2.CallBack) then
Datamodule2.CallBack := MyCallBack;
end;