我在写聊天程序在接收消息时想能和QQ一样:一个好友发来一条消息,收到后就弹出一个窗口,第二条消息来的时候就直接写在弹出的窗口中我用线程但是不行我该怎么做?
unit Threadform;interfaceuses
Classes, ExtCtrls,Dialogs,msg;
type
Tformmsg = class(TThread)
private
protected
procedure Execute; override;
procedure Timer1TTimer(Sender: TObject);
end;
implementation
uses udpclientmain;{ Tformmsg }
procedure Tformmsg.Timer1TTimer(Sender: TObject);
begin
formmsg.Memo1.Lines.Add(UDPMainForm.msge);
UDPMainForm.i:=0;
end;
procedure Tformmsg.Execute;
var
formmsg:Tfmmsg;
Timer1:TTimer;
begin
FreeOnTerminate:=true;
formmsg:=Tfmmsg.Create(nil);
Timer1:=TTimer.create(fmmsg);
timer1.Interval:=1000;
timer1.Enabled:=true;
UDPMainForm.i:=0;
Formmsg.Caption:='与'+UDPMainForm.senduser+'聊天中';
timer1.OnTimer:=Timer1TTimer;
formmsg.Memo1.Lines.Add(UDPMainForm.msge);
Formmsg.ShowModal;
end;
end.
unit Threadform;interfaceuses
Classes, ExtCtrls,Dialogs,msg;
type
Tformmsg = class(TThread)
private
protected
procedure Execute; override;
procedure Timer1TTimer(Sender: TObject);
end;
implementation
uses udpclientmain;{ Tformmsg }
procedure Tformmsg.Timer1TTimer(Sender: TObject);
begin
formmsg.Memo1.Lines.Add(UDPMainForm.msge);
UDPMainForm.i:=0;
end;
procedure Tformmsg.Execute;
var
formmsg:Tfmmsg;
Timer1:TTimer;
begin
FreeOnTerminate:=true;
formmsg:=Tfmmsg.Create(nil);
Timer1:=TTimer.create(fmmsg);
timer1.Interval:=1000;
timer1.Enabled:=true;
UDPMainForm.i:=0;
Formmsg.Caption:='与'+UDPMainForm.senduser+'聊天中';
timer1.OnTimer:=Timer1TTimer;
formmsg.Memo1.Lines.Add(UDPMainForm.msge);
Formmsg.ShowModal;
end;
end.
解决方案 »
- 初学delphi,一个小问题,请兄弟们帮忙!
- 如何把这个过程,写成线程来执行,注:IDHTTP的POST过程
- 哪位大侠能帮忙修改一个控件(wptools)的bug 吗?对高手来讲应该是比较简单。先给100,后再给500。
- 如何实现这种菜单事件
- 线程内部的socket处理方法,希望大家有什么想法都可以回帖,都有分的!
- FasReport 输出文件时,转换成Excel时,不能一列对一列的导出成Excel 的列数
- 在开发MDI程序时,如何让子窗体显示在主窗体的一个TPanel控件里呢?
- 求助Activeform问题!
- FAX 软件
- 求:Delphi的Base64编码和解码源码
- 用Raw Socket 发送UDP消息的例子(发送地址随机)
- 两个ACCESS数据库如何将一个的数据合并到另一个!
可以在这个事件里面进行处理
如果有消息接受到,则判断显示信息的窗体是否已经建立(也就是是否已经打开),如果没有,建立并显示在桌面;反之,直接在窗体上加入收到的信息我以前公司使用的内部消息软件也是这样做的,希望可以帮助你