我在TMyDelphiCom.RemoteDataModuleCreate(Sender: TObject)
中可以用变量纪录,不过不能更新到窗口中去,比如
TMyDelphiCom.RemoteDataModuleCreate(Sender: TObject)
begin
 form1.edit1.text := 'l';//此句不能执行过去,程序死在这儿,如果只给变量负值,不更新窗口就可
end;不过奇怪的是我在
procedure TMyDelphiCom.RemoteDataModuleDestroy(Sender: TObject);
begin
  form1.edit1.text := '0';//这里确实可以的阿
end;

解决方案 »

  1.   

    form1是否在RemoteDataModule之前打开?我认为该语句是正确的,但一定要在RemoteDataModule之前create才能正确显示。
      

  2.   

    先能看到窗口form1几经运行,然后开启客户端,才会调用RemoteDataModuleCreate,应该是先创建了
      

  3.   

    线程的问题,Form1的创建/显示在主线程,而RemoteDM的创建是在每次客户端调用到来时生成的新的先程中,但OnDestroy又是在主线程,你可以用windows.GetCurrentThreadID来看。
    方法:在RemoteDataModuleCreate使用TThread.Synchornize同步。
      

  4.   

    你试一试把remotedatamodule的类型改为single,这样才是在连接的时候每个客户端建一个remotedatamodule
      

  5.   

    若你先启动服务器端,程序应该是正常的;若用客户端激活的,程序就会出错。
    原因:人工启动服务器端时,主窗口是先于DataModuleCreate创建的,否则DataModuleCreate是先于主窗口创建的。
    所以RemoteDataModuleDestroy是正常的。