E语言软件开发详解
E语言软件核心架构
E语言软件主要由3个核心部分组成,构成完整的应用程序框架:
软件界面:即用户看到的可视化界面
包含按钮、文本框、列表框等标准控件
- 按钮:用于触发操作,如"确定"、"取消"等
- 支持设置快捷键(如Alt+O对应确定按钮)
- 可配置默认按钮(按Enter键自动触发)
- 支持禁用状态(灰色显示不可点击)
- 文本框:用于输入和显示文本内容
- 单行文本框:用于简短输入
- 多行文本框:带滚动条,支持大量文本
- 密码文本框:显示为星号保护隐私
- 列表框:用于显示项目列表,支持单选或多选
- 可设置列宽和排序方式
- 支持图标和复选框
- 提供搜索筛选功能
支持窗口、菜单、工具栏等界面元素
- 窗口:应用程序主容器,可设置标题、大小等属性
- 支持模态和非模态窗口
- 可设置窗口图标和边框样式
- 提供最大化/最小化/关闭按钮控制
- 菜单:提供下拉式命令选项
- 支持多级嵌套菜单
- 可设置快捷键和图标
- 支持右键上下文菜单
- 工具栏:常用功能的快捷按钮集合
- 按钮可分组显示
- 支持浮动和停靠
- 可显示工具提示文本
采用所见即所得(WYSIWYG)的设计方式
- 设计时界面与实际运行界面高度一致
- 控件位置和外观实时同步
- 支持运行时动态布局调整
- 自动适应不同DPI设置
- 支持实时预览界面效果
- 可切换不同主题皮肤预览
- 支持高对比度模式检查
- 提供辅助功能检查工具
- 支持控件拖拽和属性即时修改
- 拖拽时有对齐辅助线
- 属性修改即时反馈到界面
- 支持批量修改多个控件属性
代码:实现程序功能的脚本语言
基于类Basic语法
- 使用中文关键字,如"如果"、"循环"等
- "如果...则...否则"实现条件分支
- "判断...分支"实现多条件选择
- "计次循环"和"判断循环"两种循环结构
- 支持变量声明和赋值操作
- 变量类型自动推断
- 支持常量定义
- 提供局部和全局变量作用域
- 包含条件判断和循环结构
- 支持嵌套条件语句
- 提供循环控制语句(如"跳出循环")
- 可设置循环步长和终止条件
支持结构化编程
- 可定义子程序和函数
- 支持参数传递(值传递和参考传递)
- 可设置默认参数值
- 支持函数重载
- 支持模块化开发
- 可将功能拆分为独立模块
- 支持动态链接库调用
- 提供工程依赖管理
- 提供代码注释功能
- 单行注释以单引号开始
- 支持多行注释块
- 可生成API文档注释
包含丰富的内置函数库
- 字符串处理函数:如"取文本左边"、"寻找文本"等
- 支持Unicode字符处理
- 提供正则表达式匹配
- 包含编码转换功能
- 数学运算函数:如"取绝对值"、"四舍五入"等
- 支持高精度计算
- 提供随机数生成
- 包含三角函数和统计函数
- 文件操作函数:如"打开文件"、"读入文本"等
- 支持文本和二进制文件
- 提供文件属性和权限管理
- 包含目录操作功能
- 系统API封装:如"取系统时间"、"运行程序"等
- 封装Windows API调用
- 提供进程和线程管理
- 支持注册表操作
动作监视器:用于监听和响应界面操作事件的机制
事件驱动编程模型
- 程序执行流程由用户操作决定
- 初始显示界面后等待事件
- 事件触发对应处理函数
- 处理完成后返回事件循环
- 每个界面元素可以关联多个事件
- 如按钮可响应点击、鼠标悬停等
- 文本框可响应内容改变、焦点变化等
- 窗口可响应创建、关闭、大小改变等
- 事件发生时自动调用对应处理函数
- 事件参数包含详细信息
- 可获取触发组件引用
- 支持事件冒泡和捕获
自动生成事件处理函数框架
- 双击控件自动创建默认事件处理函数
- 按钮自动生成点击事件
- 文本框自动生成内容改变事件
- 窗口自动生成创建完毕事件
- 函数命名遵循"_控件名_事件名"格式
- 如"_按钮1_被单击"
- "_编辑框1_内容被改变"
- "_窗口1_创建完毕"
- 包含基本注释说明
- 自动生成函数用途说明
- 提示参数含义
- 标记代码插入位置
支持多种事件类型(鼠标、键盘、焦点等)
- 鼠标事件:单击、双击、移动等
- 可获取鼠标坐标
- 支持区分左右键
- 提供滚轮事件
- 键盘事件:按键按下、释放等
- 可获取键码和组合键
- 支持快捷键处理
- 提供输入法状态
- 焦点事件:获得焦点、失去焦点等
- 可验证输入内容
- 支持自动选择文本
- 提供焦点切换控制
- 定时器事件:定时触发
- 可设置间隔时间
- 支持多定时器
- 提供高精度计时
创建点击按钮弹出提示程序
一、界面设计阶段
项目创建
- 打开E语言开发环境(如:易语言IDE)
- 启动后显示欢迎界面
- 显示最近项目列表
- 提供新建项目选项
- 包含示例项目链接
- 可查看最近项目或创建新项目
- 支持按名称搜索项目
- 可固定常用项目
- 提供项目统计信息
- 启动后显示欢迎界面
- 选择"文件"→"新建"→"Windows窗口程序"
- 也可使用快捷键Ctrl+N
- 快速创建新项目
- 支持自定义快捷键
- 选择"Windows窗口程序"模板
- 自动包含基本窗口框架
- 预置常用组件引用
- 包含示例代码注释
- 也可使用快捷键Ctrl+N
系统自动创建默认窗口"窗口1"
- 默认大小为400×300像素
- 可拖动边缘调整大小
- 支持最大化显示
- 可设置最小尺寸限制
- 包含最小化、最大化和关闭按钮
- 可单独控制按钮可见性
- 支持自定义按钮行为
- 可添加额外控制按钮
- 标题默认为"窗口1"
- 可在属性中修改
- 支持动态修改标题
- 可添加图标到标题栏
添加按钮控件
- 从左侧工具箱的"基本组件"分组中
- 工具箱按功能分组:基本组件、扩展组件等
- 基本组件:按钮、文本框等
- 扩展组件:树形视图、进度条等
- 容器组件:分组框、选项卡等
- 支持搜索快速定位控件
- 输入控件名称筛选
- 支持拼音首字母搜索
- 可收藏常用控件
- 工具箱按功能分组:基本组件、扩展组件等
- 找到并拖拽"按钮"控件到主窗口
- 鼠标左键按住按钮图标拖到窗口
- 拖动时显示虚线框
- 释放位置即为控件位置
- 自动对齐到网格线
- 释放鼠标完成添加
- 自动生成默认名称
- 应用默认样式
- 选中新添加的控件
- 鼠标左键按住按钮图标拖到窗口
设置按钮属性
- 在属性面板中找到"标题"属性,修改为"点击我"
- 属性面板通常位于IDE右侧
- 可停靠到任意位置
- 支持展开/折叠分组
- 提供属性说明提示
- 支持按名称搜索属性
- 输入属性名快速定位
- 支持模糊匹配
- 记录常用属性
- 属性面板通常位于IDE右侧
- 调整"左边"、"顶边"、"宽度"、"高度"属性确定位置和大小
- 左边:控件距窗口左边缘距离
- 可输入精确像素值
- 支持百分比定位
- 顶边:控件距窗口上边缘距离
- 相对父容器顶部
- 支持动态调整
- 也可通过鼠标直接拖动调整位置
- 拖动时显示坐标信息
- 支持Shift键限制方向
- 可开启对齐辅助线
- 左边:控件距窗口左边缘距离
- 可选设置:
- "字体":修改显示文字的字体样式
- 支持系统所有字体
- 可设置粗体/斜体
- 调整字符间距
- "背景颜色":设置按钮背景色
- 支持十六进制颜色码
- 提供常用颜色预设
- 可保存自定义颜色
- "文本颜色":设置文字颜色
- 与背景色形成对比确保可读性
- 支持渐变文字效果
- 可随状态自动变化
- "是否可视":控制初始显示状态
- 设为假时程序启动时不可见
- 可在代码中动态修改
- 支持淡入淡出效果
- "字体":修改显示文字的字体样式
二、事件监视设置
添加事件监听方式
方法一:双击按钮控件
- 自动生成点击事件代码框架
- 默认生成"_按钮1_被单击"子程序
- 包含标准函数声明
- 预置参数说明注释
- 标记TODO位置
- 默认生成"_按钮1_被单击"子程序
- 跳转到代码编辑界面
- 光标自动定位到生成的事件函数
- 插入点位于注释下方
- 自动缩进对齐
- 语法高亮显示
- 可立即开始编写处理代码
- 提供代码补全提示
- 显示相关函数说明
- 支持模板代码插入
- 光标自动定位到生成的事件函数
方法二:右键菜单方式
- 右键点击按钮→选择"事件处理"
- 弹出事件处理菜单
- 分类显示可用事件
- 标记常用事件
- 显示快捷键提示
- 弹出事件处理菜单
- 在弹出菜单中选择"被单击"事件
- 与双击效果相同
- 生成相同函数框架
- 跳转到代码视图
- 适用于需要添加多个事件的情况
- 可一次添加多个事件
- 支持批量事件处理
- 方便管理复杂交互
- 与双击效果相同
事件分类说明
常用事件(横线上方):
- 按钮组件:
- 被单击:鼠标左键单击时触发
- 最常用的事件类型
- 支持防重复点击
- 可取消默认行为
- 被双击:鼠标快速双击时触发
- 需要快速连续点击两次
- 可设置间隔时间阈值
- 通常用于特殊操作
- 被单击:鼠标左键单击时触发
- 编辑框组件:
- 内容被改变:文本内容发生变化时触发
- 包括用户输入和代码修改
- 可获取修改前后值
- 支持延迟触发
- 内容被改变:文本内容发生变化时触发
不常用事件(横线下方):
- 窗口事件:
- 创建完毕:窗口初始化完成时触发
- 适合放置初始化代码
- 可进行最后配置
- 确保资源已加载
- 将被销毁:窗口关闭前触发
- 适合放置清理代码
- 可取消关闭操作
- 保存未提交数据
- 创建完毕:窗口初始化完成时触发
- 组件事件:
- 获得焦点:组件获得输入焦点时
- 如通过Tab键切换或鼠标点击
- 可高亮显示当前控件
- 自动弹出输入法
- 失去焦点:组件失去输入焦点时
- 可进行输入验证等操作
- 保存编辑内容
- 恢复默认显示状态
- 获得焦点:组件获得输入焦点时
三、代码编写阶段
事件处理函数框架
子程序 _按钮1_被单击()
' 在此处添加处理代码
' 这里可以写注释说明代码功能
结束 子程序
- 函数命名规则:_组件名_事件名
- 前缀下划线表示自动生成
- 避免与自定义函数冲突
- 标识系统维护代码
- 组件名与属性面板中的名称一致
- 修改组件名自动更新函数名
- 支持重构重命名
- 事件名使用中文描述
- 直观反映触发条件
- 统一命名规范
- 前缀下划线表示自动生成
- 自动生成的注释提示代码插入位置
- 提示开发者在此处添加功能代码
- 标记功能实现区域
- 分离声明和实现
- 建议保留这些注释便于维护
- 作为文档的一部分
- 帮助理解代码意图
- 提示开发者在此处添加功能代码
添加功能代码
子程序 _按钮1_被单击()
信息框("你好,这是一个提示!", 0, , )
' 参数1:提示内容,支持多行文本
' 参数2:按钮类型,0=确定按钮
' 参数3:窗口标题,省略使用默认
' 参数4:父窗口句柄,省略为当前窗口
结束 子程序
- 使用"信息框"函数显示提示
- 内置的对话框函数
- 封装标准消息框
- 支持国际化显示
- 自动适应系统主题
- 会暂停程序执行直到用户响应
- 模态对话框特性
- 确保关键确认
- 阻止后台操作
- 内置的对话框函数
- 参数说明:
- 第一个参数:提示内容
- 可以是字符串常量或变量
- 支持转义字符如\n换行
- 允许格式化字符串
- 支持多行文本显示
- 自动换行处理
- 可设置最大宽度
- 可以是字符串常量或变量
- 第二个参数:按钮类型(0表示确定按钮)
- 1=确定和取消
- 返回不同选择结果
- 支持默认按钮设置
- 2=中止、重试和忽略
- 用于错误处理场景
- 提供详细选项
- 3=是、否和取消
- 复杂确认场景
- 支持记忆选择
- 1=确定和取消
- 第三、四个参数:标题和父窗口,可省略
- 标题默认为"提示"
- 可自定义应用名称
- 支持动态标题
- 父窗口默认为当前活动窗口
- 确保正确模态关系
- 自动居中显示
- 标题默认为"提示"
- 第一个参数:提示内容
代码增强示例
子程序 _按钮1_被单击()
变量 点击次数 为 整数型 ' 声明计数器变量
静态 首次运行 为 逻辑型 ' 静态变量保持值不变
如果 首次运行 = 假 则
点击次数 = 0
首次运行 = 真
结束 如果
点击次数 = 点击次数 + 1 ' 每次点击加1
变量 提示内容 为 文本型
提示内容 = "这是第" + 到文本(点击次数) + "次点击!"
信息框(提示内容, 0, "提示", )
' 使用变量构建动态提示
' 到文本()函数将数字转为字符串
结束 子程序
- 添加计数器功能
- 使用变量记录点击次数
- 整数型变量存储计数
- 每次点击时递增
- 确保正确初始化
- 显示动态提示内容
- 使用字符串拼接构建提示
- "+"运算符连接字符串
- 自动处理类型转换
- 数值需要转换为文本
- 到文本()函数处理
- 支持格式化输出
- 使用字符串拼接构建提示
- 使用变量记录点击次数
- 改进点:
- 添加静态变量确保计数器初始化
- 静态变量保持值不变
- 只在首次运行时初始化
- 避免全局变量污染
- 使用中间变量提高可读性
- 分离数据处理和显示
- 方便调试检查
- 支持更复杂逻辑
- 添加详细注释说明
- 解释关键算法
- 标记重要变量
- 提供使用示例
- 添加静态变量确保计数器初始化
四、程序测试
启动测试
- 点击工具栏中的"运行"按钮(绿色三角形图标)
- 最常用的启动方式
- 一键编译运行
- 显示进度状态
- 会先自动保存修改
- 提示未保存更改
- 可配置自动保存
- 最常用的启动方式
- 或使用快捷键F5
- 快速启动调试
- 等同于工具栏按钮
- 支持断点调试
- 快速启动调试
- 或选择菜单"运行"→"运行"
- 包含更多运行选项
- 带参数运行
- 启动外部程序
- 性能分析模式
- 包含更多运行选项
测试流程
- 检查程序窗口是否正常显示
- 窗口大小和位置是否正确
- 符合设计预期
- 适应不同分辨率
- 标题是否符合预期
- 显示正确文本
- 支持动态更新
- 窗口大小和位置是否正确
- 验证按钮位置、大小和文字是否正确
- 视觉检查外观
- 无截断文字
- 颜色对比适当
- 确保文本完整显示
- 适应不同DPI
- 支持多语言
- 视觉检查外观
- 点击按钮验证:
- 是否弹出提示框
- 响应时间合理
- 显示位置正确
- 对话框显示位置是否合理
- 通常居中显示
- 避免被遮挡
- 提示内容是否符合预期
- 文本内容正确
- 格式符合设计
- 关闭提示框后程序是否继续响应
- 焦点正确返回
- 可重复操作
- 是否弹出提示框
调试技巧
- 使用"调试输出"函数输出中间结果
- 输出到调试窗口
- 不干扰界面
- 支持多线程
- 不影响界面显示
- 后台记录日志
- 可保存到文件
- 输出到调试窗口
- 设置断点跟踪程序执行
- 在代码行前点击设置断点
- 显示为红色标记
- 支持条件断点
- 运行到断点处暂停
- 检查调用堆栈
- 查看变量状态
- 在代码行前点击设置断点
- 在调试模式下查看变量
- 监控重要变量变化
- 实时显示值
- 支持修改变量
- 支持表达式求值
- 即时计算
- 监视复杂条件
- 监控重要变量变化
五、界面与代码切换技巧
视图切换方式
- 点击顶部选项卡:
- "窗口设计":返回界面设计视图
- 显示可视化设计界面
- 可继续添加或修改控件
- "代码编辑":进入代码编辑界面
- 显示完整源代码
- 可编写和修改代码
- "窗口设计":返回界面设计视图
- 快捷键:Ctrl+Tab在两个视图间快速切换
- 提高开发效率
- 减少鼠标操作
- 快速对比效果
- 支持多次按切换
- 循环切换视图
- 记忆最后位置
- 提高开发效率
恢复代码窗口
- 方法一:通过菜单栏
- "视图"→"代码编辑"
- 适合菜单操作习惯的用户
- 支持自定义菜单
- "视图"→"代码编辑"
- 方法二:工程管理器操作
- 右键工程管理器中的窗口项
- 显示上下文菜单
- 包含常用操作
- 选择"编辑代码"
- 精确导航到目标
- 支持批量操作
- 右键工程管理器中的窗口项
- 方法三:组件双击
- 双击界面组件自动跳转到对应事件代码
- 最快捷的导航方式
- 智能识别关联代码
- 若无事件代码则创建新的事件处理函数
- 自动生成框架
- 确保命名规范
- 双击界面组件自动跳转到对应事件代码
导航技巧
- 使用"转到定义"功能快速定位组件
- 右键组件选择"转到定义"
- 显示所有引用点
- 支持反向查找
- 或使用快捷键Ctrl+G
- 快速跳转
- 支持模糊匹配
- 右键组件选择"转到定义"
- 通过代码大纲视图浏览程序结构
- 显示所有子程序和函数列表
- 按名称排序
- 支持分组显示
- 点击快速跳转
- 定位到具体实现
- 显示相关注释
- 显示所有子程序和函数列表
- 使用书签标记重要代码位置
- 添加/移除书签:Ctrl+F2
- 在行首显示标记
- 支持命名书签
- 跳转到上一个/下一个书签:F2/Shift+F2
- 循环浏览
- 支持跨文件
- 添加/移除书签:Ctrl+F2
注意事项
- 组件事件独立性
- 每个组件的事件处理函数都是独立的
- 明确责任边界
- 避免意外影响
- 不同按钮需要单独编写点击事件
- 区分业务逻辑
- 支持个性化处理
- 每个组件的事件处理函数都是独立的
- 相同类型组件(如多个按钮)需要分别处理
- 可以为每个按钮创建独立事件
- 代码结构清晰
- 便于单独修改
- 或使用通用处理函数配合判断
- 减少重复代码
- 统一维护逻辑
- 可以为每个按钮创建独立事件
- 代码生成建议
- 常用组件建议使用双击快速生成代码框架
- 节省手动创建时间
- 确保命名规范一致
- 复杂组件可先设计界面再集中添加事件
- 先完成界面布局
- 再统一添加事件处理
- 常用组件建议使用双击快速生成代码框架
- 测试要点
- 检查所有可能的事件响应
- 覆盖全部交互路径
- 验证边界条件
- 验证用户交互流程是否完整
- 模拟真实操作
- 检查状态转换
- 检查所有可能的事件响应
- 保存策略
- 界面修改后要及时保存
- 避免意外丢失
- 建立保存习惯
- 建议开启自动备份功能
- 配置合理间隔
- 保留历史版本
- 界面修改后要及时保存