我正在练习写一个局域网内聊天的程序,我有一个TTreeview,里面放一些局域网内的用户,还有一个TForm2,用于接收和发送消息,通过以下的代码来点击不同的用户,并产生一个聊天的窗体:
procedure TForm1.N13Click(Sender: TObject);
var
form:array[0..100] of TForm2;
i:integer;
sCaption : String;begin
i:=treeview1.Selected.Index;
sCaption := 'Chatting with '+treeview1.Selected.Text;
form[i]:=TForm2.Create(application);
form[i].Caption:=sCaption;
form[i].Show;
end;我的问题是如何让程序来识别用户与窗体的对应关系,如果与其中一个用户的对话窗体已经产生,下次再一次点击时不会再产生一个新的窗体,而直接让它show,谢谢!
procedure TForm1.N13Click(Sender: TObject);
var
form:array[0..100] of TForm2;
i:integer;
sCaption : String;begin
i:=treeview1.Selected.Index;
sCaption := 'Chatting with '+treeview1.Selected.Text;
form[i]:=TForm2.Create(application);
form[i].Caption:=sCaption;
form[i].Show;
end;我的问题是如何让程序来识别用户与窗体的对应关系,如果与其中一个用户的对话窗体已经产生,下次再一次点击时不会再产生一个新的窗体,而直接让它show,谢谢!
else 新建窗体
Form[i].Show
else
begin
Form[i]:= TForm2.Create(Application);
Form[i].Caption:= sCaption;
Form[i].Show;
end;
这样必须关掉当前的窗口才能操作主窗口
所以打开当点击主窗口产生聊天窗口的时候
不会有已经存在的聊天窗口了
begin
Form[i]:= TForm2.Create(Application);
Form[i].Caption:= sCaption;
end;
Form[i].Show;
创建窗体之前判断一下选中的用户是否在这个list里就行了。