compute:能否支持子程序

功能建议 · 305 次浏览
FaniX 创建于 2024-05-24 23:49

我想实现一些比较复杂的动态更新,例如根据第一个字段的窗口句柄修改第二个字段为窗口是否置顶,第三个字段为窗口的透明度值(这样可以实现用一个文本选择工具刷新多个字段),这些操作用子程序实现起来会比较容易

另外还有一些比较长的运算表达式,写成单行维护起来比较麻烦,如果能用子程序的话会方便许多


回复内容
CL 2024-05-25 09:28
#1

没有很明显的思路。 子程序这里的作用是什么呢? 输入和输出是什么?

FaniX 回复 CL 2024-05-25 17:45 :

比方说我想在表单里的一个字段里用文本选择工具选择一个窗口,然后在下面用只读文本显示窗口的标题、类名,用可编辑字段暂时该窗口是否置顶、透明度、窗口样式以及其他一些等信息(用于后续提交表单后设置这个窗口)

如果用表达式来写的话一不好调试和维护,二来有些数据不好从表达式生成(例如可能需要用到C#脚本),如果用子程序的话可以很好避免这些问题

格式可以像callsp:子程序名[&自定义参数=值]

子程序的输入可以有text、selected、parent(对应文本选择工具的相应变量)、表单中的其他变量(如果担心变量名冲突的话可以像文本窗口那样用一个词典)、触发更新的变量名(可以根据触发变量决定是否更新,实现depd:的效果),以及自定义参数

输出output用于更新字段


FaniX 最后更新于 2024-05-25 17:46
FaniX 2024-07-05 10:48
#2

意识到目前其实可以通过

compute:$=_context.RunSp("子程序名称", new { 参数名 = {其他字段} })

实现调用子程序,直接从结果中提取需要的输出变量值即可

回复主贴