各位前辈,因为我在写一个即时通讯程序,可是遇到了问题,当第二次给同一人发送消息的时候,他要选关掉第一次弹出的Form2.showmodal 才能看到第二次弹出的Form2怎么判断如里已经showmodal了,就跳过showmodal.直接显示在第一次弹出的Form2上面?
代码如下,procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
  ABinding: TIdSocketHandle);
var
  str1: string[100];
begin
  Form2.ShowModal;
  AData.ReadBuffer(str1, SizeOf(str1));
  Form2.Memo1.Lines.Add(FormatDateTime('hh:mm', Now) + '=>网管:' + str1);
end;
 怎么判断如里再来消息,就跳过Form2.showmodal 直接执行后面的代码.定义一个公有变量?要怎么写?

解决方案 »

  1.   

    加个全局标志,第一次shoumodal后,置为true
    var
      str1: string[100];
    begin
      if IsModal = False then
        Form2.ShowModal;
      IsModal := True;
      AData.ReadBuffer(str1, SizeOf(str1));
      Form2.Memo1.Lines.Add(FormatDateTime('hh:mm', Now) + '=>网管:' + str1);
    end;
      

  2.   

    檢查 form2.Visibletrue 顯示了
    false 未顯示
      

  3.   

    干嘛要showmodal, 应该用show啊,再说同一个人收到的消息应该在一个窗口显示,不应该再弹出窗口