您的位置:逆风者 易语言 易语言精华 正文
 添加时间:2007-11-18 原文发表:2007-11-18 人气:221

    看了帮助文件里的教程,里面有比较多的关于画板这个窗口单元(控件)的运用,其中多是画板滚动显示信息的示例。我突然想到,聊天室的发言显示窗很可能是用画板做的(后来看其他聊天室的源程序发现的确如此)。于是我也试着想修改教程里面的例子做一个聊天室。由于没有连机聊天的条件,就先做一个自言自语聊天室。制作过程如下(运用了画板、组合框、容器、条件式流程控制等知识):

逆@风@者

㈠、使发言框的信息滚动地显示在画板上。由于编辑框里的内容是一个局部变量,于是在“_按钮1_被单击”的子程序下建立一个名为“容器1”的容器用来存放该变量,并将其类型设为与编辑框1的数据类型一致,以便接收来自编辑框1的文本信息。再用下面代码即可做到使发言框的信息滚动地显示在画板上:

         子程序名:_按钮1_被单击
         容器名:容器3       (声明变量)(易语言是用建立容器来代替声明变量)
         容器3 = 编辑框1.内容     (给变量赋予属性值)
         画板1.滚动写行 (容器3)

 ㈡、发现发送谈话到发言显示区后,在发送区(编辑框1)仍然保留该发言信息,为了清除它,又在“_按钮1_被单击”子程序下加上一句“编辑框1.内容 = ""”以在发言框里清除上一发言。程序如下:
     
         子程序名:_按钮1_被单击
         容器名:容器3
         容器3 = 编辑框1.内容
         画板1.滚动写行 (容器3)
         编辑框1.内容 = “ ”
         
㈢、为了使发言显示区显示发话人的用户名,于是又建立一个容器1,令“容器1 = 标签2.标题”,以接收来自“编辑框2”的用户名,现在聊天程序变为这样:

         子程序名:_按钮1_被单击
         容器名:容器1
         容器名:容器3
         容器3 = 编辑框1.内容
         容器1 = 标签2.标题
         画板1.滚动写行 (容器1+容器3)
         编辑框1.内容 = “ ”

㈣、为了使“编辑框2”的用户输入名通过“容器1”传送到“标签2.标题”里,又加下面程序:

         子程序名:_按钮2_被单击
         如果 (编辑框2.内容 = “”)
         (则)标签2.标题 = “”
         (否则)标签2.标题 = “[” + 编辑框2.内容 + “]”
         (如果结束)

㈤、为了初步学习组合框(类似于网页中的下拉表单)的应用,再画一个表情组合框以发送聊天表情。建立“容器4”来存放组合框中的内容。画好组合框后就进行属性设置,在属性窗口里选“列表项目”将所用到的谈话表情加上去。于是新代码如下:

         子程序名:_按钮1_被单击
         容器名:容器1
         容器名:容器2
         容器名:容器3
         容器名:容器4
         容器1 = 标签2.标题
         容器2 = “对自己说:”
         容器3 = 编辑框1.内容
         容器4 = 组合框1.内容
         画板1.滚动写行 (容器1+容器2+容器4+容器3)
         编辑框1.内容 = “ ”

㈥、一般聊天室都有登陆验证,没有名字的用户不能发话。于是再加上验证用户是否登陆,未登陆则不能发话:

         子程序名:_按钮1_被单击
         容器名:容器1
         容器名:容器2
         容器名:容器3
         容器名:容器4
         容器1 = 标签2.标题
         容器2 = “对自己说:”
         容器3 = 编辑框1.内容
         容器4 = 组合框1.内容
         如果 (标签2.标题 = “”)       (即用户名为空)
         (则)载入 (窗口1, , 真)        (用来提示登陆)
         (否则)画板1.滚动写行 (容器1+容器2+容器4+容器3)
         编辑框1.内容 = “ ”
         (如果结束)

 ㈦、有些聊天室禁止用户的发言内容为空,我也这样设置。这样就用到了区块式条件语句,用文字表达为:“如果用户名为空,则提示注册,否则如果发言内容为空,就提示不能发言,如果不是以上两者,就在画板显示发言内容”。最后“_按钮1_被单击”子程序的完整代码为:

         子程序名:_按钮1_被单击
         容器名:容器1
         容器名:容器2
         容器名:容器3
         容器名:容器4
         容器1 = 标签2.标题
         容器2 = “对自己说:”
         容器3 = 编辑框1.内容
         容器4 = 组合框1.内容
         如果 (标签2.标题 = “”)
         (则)载入 (窗口1, , 真)        (用来提示登陆)
         (否则)如果 (编辑框1.内容 = “”)
         (则)载入 (窗口2, , 真)        (用来提示发言不能为空)
         (若以上都不是,则)画板1.滚动写行 (容器1+容器2+容器4+容器3)
         编辑框1.内容 = “ ”
         (如果结束)
 
  ㈧、设置一个“清屏”按钮,以清空发言显示区里的内容。前一句“画板1.可视 = 假”表示清空内容,后一句“画板1.可视 = 真”使画板重新可视以便显示下一句话,代码如下:

         子程序名:_按钮3_被单击
         画板1.可视 = 假
         画板1.可视 = 真

  后来发现用上面的代码并不能真正清屏,原因是用错画板对象的方法了,应该用“清除”方法,语法为:画板.清除 ([清除区左上角横坐标],[清除区左上角纵坐标],[清除区宽度],[清除区高度])。于是重写代码为:

         子程序名:_按钮3_被单击
         画板1.清除 (, , , )

  ㈨、在将该程序上传到交流区后又发现一个大问题,就是当切换到浏览器的其他窗口后,回到聊天室,发现所有发言信息都从画板里消失。经查帮助手册,发现将画板1“自动重画”(即将画板里的信息重新恢复。我觉得称为“自动重显”或“自动重写”还容易明白一点)的属性值设为真可以解决这个问题,于是重新上传覆盖原来的版本。

     从以上可以看出程序的完善并不是一件简单的事,编程可以说是苦中有乐啊。

 以上“聊天室”的制作完全没有看别人的代码,都是自己编写,所以可能还有不完善的地方。

相关文章

[菜鸟学易]E的攻关秘籍
易语言软件加密技术
将外部程序运行于本身窗口内
XLS转MDB,速度超快
MDB转XLS,全新升级,速度极快
锁屏工具
网页SPY(控件信息/属性查看器)
取当前鼠标指针形状
hookAPI给卷帘式菜单加上背景图片
绝对磁盘读写--写软盘引导区
[菜鸟学易]用鼠标拉动扩宽控件宽度
控件使用之标签
利用QQ最新版控件捕捉屏幕
电脑配机系统源代码
易语言做的web系统
冲值系统,冲值程序,网络验证,外挂验证,服务
易语言之过?谁之过?谁之错?
易用脚本开源了
断链隐藏进程
10种强制结束进程方法

相关评论


本文章所属分类:首页 易语言 易语言精华

  热门关键字: