如何使动态创建的窗体不重复(50)

  • 主题发起人 主题发起人 只你
  • 开始时间 开始时间

只你

Unregistered / Unconfirmed
GUEST, unregistred user!
我要做一个通讯的程序(类似于QQ,程序中我是没有数据库和服务器的),每次点击一个好友,要动态生成一个聊天窗体。(窗体的caption自己赋值,比如“与XX聊天中”),现在我要实现的是:“要是该好友的聊天窗体已经打开了,在点击就不会再显示一个该好友的聊天窗体,这个怎么实现。”哪位大哥知道告诉一下,或者有思路提一下也可以。
 
每个窗口增加一个Public属性,叫 UID,表示对方的ID号码,假设聊天窗口的类型为TFormXfunction ExistForm(UID:Integer):Boolean;var i:Integer;begin result:=false; for I:=0 to screen.FormCount-1 do begin if not (screen.forms is TformX) then continue; IF TFormX(SCreen.Forms).UID= UID Then begin result:=True; Break; end; end;end;个别地方可能存在语法错误,思路你应该可以看懂。
 
忘了注明了我这个通讯程序是局域网通讯。
 
才懒得关系你是什么通信,反正只要保证当前程序中,针对某个人的聊天窗口不能出现多个就算满足你的要求。
 
1、程序初始化时将所有聊天窗口赋值为nil2、在打开聊天窗口时判断是否为nil,是,则创建;否,则直接显示。
 
可以在聊天窗口中设置一变量,用于存储该窗口属于哪个好友,当再次创建的时候,对已经打开的聊天窗口进行遍历,若发现该变量的窗口已经创建,直接show出来,否则再创建一个新的聊天窗口。具体实现方法应该不难。
 
qjinshanq能不能给个具体的代码,因为我对Delphi还不怎么熟,谢谢
 
如果你看不明白我在上面写的代码,估计qjinshanq给你的代码你也看不明白。-----------每个窗口增加一个Public属性,叫 UID,表示对方的ID号码,假设聊天窗口的类型为TFormX更改为聊天窗口增加一个Public属性,叫 UID,表示对方的ID号码,假设聊天窗口的类型为TFormX
 
上面已经说得很明白了,或者是你在主程序上做一变量,创建一个窗体后就把该对应的变量设为TRUE,如果关闭的时候会释放就设为FALSE,当再次需要显示的时候先判断是TRUE还是FALSE。。。就行了。对了,变量得设置成和你好友对应的,具体这样怎么设置和判断,就看你自己喜欢了
 
谢谢各位,按照你们给的思路解决了。
 
后退
顶部