我尝试过使用 JMP 提供的不同状态处理程序,但使用它们越多,我就越注意到它们的问题。 我想使用它们的原因有很多,甚至可能有更多原因让我避免使用它们。 最大的问题通常是它们似乎触发了太多次,并且返回的值没有那么有帮助。
Subscribe To Data Table List() 是一个很好的例子,说明了其中大多数应该如何工作。 您可以为不同的事件添加不同的功能(尽管有时这很麻烦)。 您可以想象如果订阅数据表列表()每次发生数据表列表(添加、删除、重命名)时都会触发,并且它只返回数据表名称(或更改的数据表数量),那么它会工作得有多好...)仅此而已。
以下是一些问题和建议:
悬停标签
问题
当您靠近想要悬停的点时似乎会被触发。 这会导致多次触发并不必要地减慢 JMP,有时这种减慢相当大。 当您将鼠标悬停在点上时也会立即触发 -> 如果您将鼠标快速移动到多个元素上,它将触发多次。 悬停时也会多次触发(可能与前面提到的所有事情有关)
建议
使悬停标签触发时更加准确。 添加“延迟”触发事件的可能性,例如,我希望能够在用户将鼠标悬停在同一元素上 0.2 秒后触发悬停标签。 还允许选择“安全区”来确定何时触发悬停标签。
行状态处理程序
问题
触发太多次和所有事件。 有一个错误,当您删除行时,行状态处理程序似乎被删除。
建议
如果有一种方法可以仅捕获特定的行状态更改(并修复错误),那么很可能就足够了。
过滤器状态处理程序
问题
触发次数太多。 一个例子是,如果您查看过滤器,状态处理程序就会触发。
建议
从过滤器状态处理程序中删除不必要的触发器,或者提供选择哪些状态应触发哪个功能的可能性。
调度程序
问题
一次只能有一个调度程序,并且您无法隐藏调度程序窗口。
建议
允许同时创建私有调度程序(目前我隐藏该窗口并希望用户不要关闭它)和多个不同的调度程序。
我担心悬停标签的延迟会让人感觉“滞后”。
网上有一些很好的例子,“实时”悬停标签给人的感觉是多么令人兴奋:
https://wid.world/world/#lpfghg_p90p100_z/US;FR;DE;CN;ZA;GB;WO/2020/eu/k/p/yearly/l/false/3.516/100/curve/false/country

也许:
不如果内容和之前一模一样的话更新一下吗?
只是:
将现有的悬停标签放置在新位置。
@xxvvcczz ,开发商一直在调查可能的改变创建 RowState 处理程序和制作过滤器更改处理程序。 尚无更新可分享。
请修复行状态处理程序。
我想在鼠标松开时捕获选择事件,并发送一个 http 请求来为用户获取数据,但现在它是不可能的滞后和困难。 我甚至将整个选择工具重写为捕鼠器来尝试获得此功能,我只希望行状态处理程序在选择事件结束时触发一次。
https://community.jmp.com/t5/Discussions/Is-there-a-way-to-make-the-rowstate-handler-less-laggy/mp/550590
@jthi同意,调度程序很难用好。 在动态消息我将调度程序对象从它创建的窗口移出到我自己的窗口中,但这并没有解决单例问题。 (Utility.jsl 第 53-64 行。 从 httpServer.jsl 第 120 行使用。)我怀疑它一旦被删除就根本不需要在窗口中;您可能只需要保留手柄即可。 在文件快照程序我使用了仅限 Windows 的方法以及 runprogram 和一些 DOS 命令。 除了单例问题之外,我更愿意使用调度程序。 不要这样做,因为{仅限 Windows,不是面向未来的,仍然有一些副作用}。 在这两种情况下,JSL 仅在 JMP 有空闲时间时(可能在 wait() 期间)运行。