看了帮助文件里的教程,里面有比较多的关于画板这个窗口单元(控件)的运用,其中多是画板滚动显示信息的示例。我突然想到,聊天室的发言显示窗很可能是用画板做的(后来看其他聊天室的源程序发现的确如此)。于是我也试着想修改教程里面的例子做一个聊天室。由于没有连机聊天的条件,就先做一个自言自语聊天室。制作过程如下(运用了画板、组合框、容器、条件式流程控制等知识): 逆@风@者
㈠、使发言框的信息滚动地显示在画板上。由于编辑框里的内容是一个局部变量,于是在“_按钮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“自动重画”(即将画板里的信息重新恢复。我觉得称为“自动重显”或“自动重写”还容易明白一点)的属性值设为真可以解决这个问题,于是重新上传覆盖原来的版本。
从以上可以看出程序的完善并不是一件简单的事,编程可以说是苦中有乐啊。
以上“聊天室”的制作完全没有看别人的代码,都是自己编写,所以可能还有不完善的地方。 |