我嘗試過使用 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() 期間)運行。