0

データ モジュールに idudpserver があり、この DM をサーバー フォームにリンクしています。私のサーバー フォームは、このデータ モジュールを使用します。クライアントが udp ポートからサーバーにメッセージを送信すると、データ モジュールの IdUDPServer1UDPRead イベントが発生しますが、サーバーでこのイベントを使用して結果をサーバーのメモに書き込む必要があります。どうやってやるの?

データ モジュールはサーバーから完全に独立している必要があります。

4

1 に答える 1

3

サーバー フォームから設定できるイベント プロパティをデータ モジュールに追加します。
割り当てられている場合は、データモジュールから呼び出します。

例: データモジュール

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;
于 2013-05-28T07:23:13.087 に答える