CE Lua 窗体、控件与事件
CE Lua 可以创建用于练习的简单窗体。本篇介绍控件归属、点击回调和关闭清理,适合已经了解函数与计时器的读者。
建立窗口与按钮
createForm(false) 创建初始不可见的 CEForm;createButton(form) 创建属于该窗体的按钮。先配置标题、大小和位置,再显示窗口,避免用户看到尚未完成初始化的界面:
local form = createForm(false)
form.Caption = "CE 练习"
form.Width, form.Height = 300, 160
local button = createButton(form)
button.Caption = "输出提示"
button.Left, button.Top = 24, 24
button.OnClick = function() print("按钮已点击") end
form.OnClose = function() return caFree end
form.show()
事件里做什么
OnClick 运行传入的函数。实际工具应先检查目标进程、符号和输入,只有通过检查才执行用户明确选择的操作。输入值需转换并验证范围;无法解析时展示错误而不是把空值传给写入函数。一个按钮只做一个清楚的动作,便于定位失败步骤。
所有者和清理
窗体拥有以它为 owner 创建的按钮;但用 nil 创建的计时器或热键仍需独立销毁。关闭窗口前停止回调,再释放自己创建且无所有者的对象。不要在已经销毁的窗体或控件上更新属性;重复运行脚本前先关闭旧窗体,避免出现多个窗口。
练习与排查
运行示例后点击按钮,Lua 输出区应出现一次提示;如果没有,检查脚本是否报错、按钮是否可见以及事件是否赋值。关闭窗口后再次执行脚本应产生一个新窗口。窗体 API 和外观可能因平台及 CE 版本不同而变化,遇到差异时以当前安装附带的 celua.txt 为准。
进一步验证
表单只是一个交互层,不会替你验证操作条件。给按钮命名时说明动作,并让失败状态对使用者可见;例如没有找到练习进程时显示提示,避免按钮点击后静默失败。想添加文本输入框时先明确允许的数值范围,再验证空输入、非数字和边界值。关闭窗口后检查相关计时器、热键是否仍在运行,确认重复打开不会叠加回调。
窗体布局应能让使用者区分“准备中”“目标不可用”和“操作完成”等状态。创建控件后先检查是否显示完整,再绑定回调。若按钮处理函数需要读取目标,可先写成只打印输入和地址的版本,确认没有错误后再加入后续动作。运行过程中出现异常时,先停止计时器并关闭窗口,再查看输出中最早出现的错误。
先在官方练习环境确认窗口和按钮行为,再扩展其他功能。