| 网站首页 | 文章中心 | 电子书下载 | 矢量图库 | 视频教程 | 素材下载 | 程序代码下载 | JS代码 | 论坛 | 
常用软件类:
|杀毒安全 |联络聊天 |网络软件 |多媒体类 |系统工具 |图形图像 |系统工具 |应用软件 |行业软件
开发设计类:
|动画制作 |图像处理 |3D设计 |操作系统 |站长学院 |网络相关 |WEB设计 |数据库类 |程序开发
一步一步跟我学易语言-第二十四章:动态创建窗口单元:
作者:未知    文章来源:网络    点击数:    更新时间:2006-8-18
   到目前为止,我们在程序中所使用的窗口单元都是在设计时加进去的,有没有办法可以在运行时动态加入窗口单元呢?

    请大家先在系统中阅读一下“其他”类中的“取事件单元”、“事件转移”、“复制窗口单元”三个命令的详细解释。

    我们这个程序能够根据操作者所提供的输入项的数目来自动创建相应数目的编辑框:

    1、新建程序后在_启动窗口中加入标签、编辑框各一个。将标签的“标题”属性设置为“输入项的数目(1 - 5):”,编辑框的“输入方式”属性设置为“整数输入”。布局方式为:标签与编辑框位于同一行,放在窗口顶部,标签在左;

    2、由于我们希望当操作者在编辑框1内输入一个数值并按下回车后能够马上创建出对应数目的新标签和新编辑框,所以我们必须处理编辑框1的“字符输入”事件以截获操作者键入的回车。现在请选中编辑框1后加入该事件的处理子程序;

    3、在窗口程序集1中加入以下程序集容器:

容器名 类型 数组 备注
提示标签 标签 0 数组属性为 0 表示将动态建立成员
输入编辑框 编辑框 0

    4、在我们在第 2 步所加入的_编辑框1_字符输入子程序中作以下输入:

    <1>、加入以下容器:

容器名 类型 静态 数组 备注
当前编辑框 编辑框
编辑框数目 整数型
容器1 整数型
容器2 整数型

    <2>、输入以下语句:

        如果真 (字符代码 ≠ #回车键)     检查是否键入了回车键
            返回 (字符代码)     如果没有就直接返回
        <如果真结束>
        当前编辑框 = 取事件单元 ()     由于所有被创建出来的编辑框的事件都会传递到此事件处理子程序,因此首先取出按下回车键时的实际编辑框。
        如果 (当前编辑框 = 编辑框1)     如果在编辑框1内按下回车键,则去进行创建编辑框处理。
            编辑框数目 = 取数组成员数 (输入编辑框)    取出先前已经创建出来的编辑框数目
            编辑框1.被选择字符数 = -1    编辑框1内的所有内容选中,以方便下次直接输入。
            计次循环首 (编辑框数目, 容器1)    销毁先前创建出来的所有标签和编辑框
                提示标签 [容器1].销毁 ()
                输入编辑框 [容器1].销毁 ()
            计次循环尾 ()
            编辑框数目 = 文本到数值 (编辑框1.内容)    取回操作者所输入的项目数目
            如果真 (编辑框数目 < 1 或 编辑框数目 > 5)    判断项目数目是否有效
                清除数组 (提示标签)    如果无效则清除以前的所有记录数据并提示操作者
                清除数组 (输入编辑框)
                信息框 (“项目数目必须在 1 - 5 之间”, 0, )
                返回 (字符代码)
            <如果真结束>
            重定义数组 (提示标签, 假, 编辑框数目)    准备对应数目的空间以存储创建出来的标签和编辑框
            重定义数组 (输入编辑框, 假, 编辑框数目)
            计次循环首 (编辑框数目, 容器2)
                容器1 = 编辑框数目 + 1 - 容器2    倒序创建,以支持 TAB 键操作顺序
                复制窗口单元 (标签1, 提示标签 [容器1])    创建新标签
                复制窗口单元 (编辑框1, 输入编辑框 [容器1])    创建新编辑框
                提示标签 [容器1].标题 = “请输入第 ” + 到文本 (容器1) + “ 项:”     设置标签的标题
                提示标签 [容器1].顶边 = 标签1.顶边 + (标签1.高度 + 10) × 容器1     设置标签的位置
                提示标签 [容器1].可视 = 真   将新的标签显示出来
                输入编辑框 [容器1].输入方式 = 0    将编辑框的输入方式还原为“通常方式”
                输入编辑框 [容器1].顶边 = 编辑框1.顶边 + (编辑框1.高度 + 10) × 容器1     设置编辑框的位置
                输入编辑框 [容器1].标记 = 到文本 (容器1)    为新建的编辑框加上标记
                输入编辑框 [容器1].可视 = 真    将新的编辑框显示出来
            计次循环尾 ()
        <否则>    如果是在创建出来的编辑框内输入,则进行提示
            信息框 (“在第 ” + 当前编辑框.标记 + “ 项上输入了内容” + #左引号 + 当前编辑框.内容 + #右引号, 0, )
        <如果结束>

    运行该程序,在编辑框内分别输入 1 - 5 后回车,查看效果。在创建出来的编辑框内输入文本后回车,查看效果。

---------------------------------

    总结:

    1、使用“复制窗口单元”命令可以动态创建出某窗口单元的副本,该副本除了“可视”属性被自动设置为假外(以便于进行调整),其它属性与原窗口单元完全一致;

    2、所创建出来的窗口单元的所有事件都将发送到原窗口单元上,原窗口单元的事件处理子程序必须能够处理此情况;

    3、在事件处理子程序中使用“取事件单元”命令可以取回事件产生时的实际窗口单元。


  • 上一篇文章:

  • 下一篇文章: 没有了
  • 相关文章