类似QQ的消息接受弹出窗口的问题 ( 积分: 100 )

  • 主题发起人 主题发起人 renyp
  • 开始时间 开始时间
R

renyp

Unregistered / Unconfirmed
GUEST, unregistred user!
客户端和服务期端都使用IdUDPServer来接受信息,服务期端转发信息给另一客户端,该客户端受到信息创建一Form弹出来显示该信息:
OnUDPRead的部分代码如下

if(msg.type=info) then //若收到的是发来的聊天信息
begin
recForm:=TrecForm.create(self);
recForm.chatMemo.lines.add(msg.info);
recForm.show;
end;
不知是为什么,只要是一创建form程序就没有响应了,就跟死了的一样,高手请教?
 
只有一部分代码,看不出问题。
不过有一个思路你可以参考:
你将接收到的信息暂保存到TStrings
FList.Add(msg.info);
然后在定时器
if(FList.Count>0)then
begin
recForm:=TrecForm.create(self);
recForm.chatMemo.lines.add(msg.info);
recForm.show;
FList.delete(0);
end;
 
你跟踪一下你的创建事件代码。
 
我觉着就是不能在OnUDPRead事件中创建form,你的这个方法挺好,我试下
还有个问题就是接受到的消息若用TWebBrowser来显示,
procedure TfrmMain.ReceivedChatMsg(Msg: MsgInfo);
var
ReceivedMsgForm:TsendM_frm;
begin
ReceivedMsgForm:=TsendM_frm.Create(Application); //创建显示信息form
ReceivedMsgForm.Webbrowser1.Navigate(GetCurrentDir+'/Templates.html');//加载一个模版文件
//显示信息来源的用户 和 时间
(WebBrowser1.Document as IHTMLDocument2).body.insertAdjacentHTML ('beforeEnd','<div class=&quot;STYLE2&quot;>'+Msg.nikename+' '+TimeTostr(TimeOf(Msg.zx_time))+'</div>');
(WebBrowser1.Document as IHTMLDocument2).body.insertAdjacentHTML('beforeEnd','<div>&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;'+msg.info+'</div>');
//显示信息内容
end;
运行到“显示信息来源的用户 和 时间”时总是报错,但要是随便放个button,将后面的这两句放到click中能运行,好像是Webbrowser1.Navigate 和 (WebBrowser1.Document as IHTMLDocument2).body.insertAdjacentHTML 不能放到一块儿?
 
高手指点一二阿
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部