腳本化的“小部件”可以轉換為類嗎?本討論和隨附的腳本由以下人員發起:
我投票支持文斯的願望 TextEditBox 自動完成,因為它類似於我對內置的“願望” 列錶框過濾。我編寫了特定的UI(對話框/窗口),為兩個項目實現了類似的功能。但是,我決定嘗試創建一個自動構建這些“小部件”的函數,一旦成功,確定是否類可以定義為取代函數。
附加了3個腳本:
- TEB_LB_Widget.jsl - 此腳本定義了支持函數和構建這些小部件的兩個主要功能: MakeLBFilter() 和 MakeTEBSelector() 。
- TestMakeLBFilter.js l - 此腳本包含上面的腳本(您需要更改該腳本位置的路徑),然後構建一個包含兩個不同列錶框的簡單窗口,然後為每個列錶框創建一個列錶框過濾器。請注意,腳本有等待語句,僅用於演示。 腳本底部有幾個測試用例。(代碼片段和顯示如下所示。)
- TestTEBSelector.jsl - 這類似於腳本2。檢查隱藏的路徑。 這個小部件不太發達。
這兩個小部件都可以添加其他功能,但我決定追問每個小部件及其功能是否可以創建為用戶定義類的實例的問題。
我讀了討論面向對象的JSL示例 2016年8月18日。 語法仍未與我“點擊”,我正在尋找方向:
- 可以使用JMP類來定義對象窗口小部件嗎?在這種情況下,類需要一個現有對象(可能還有它的容器)和一個添加新對象的函數,並且在每種情況下都需要一個列表。
- 如果是的話,一個班級是一個更好的方式,有人有一個簡單的例子或鏈接到2016年鏈接中包含的文檔,我將不勝感激。然後我會追求轉換。 我在2016討論中添加名稱: @drewfoglia , @Phil_Brown , @msharp
@vince_faller ,我同意你的願望清單,內置將是最好的。但是,知道如何對新示例進行原型設計會很高興。
Names Default to Here(1);
Include("C:\temp\TEB_LB_Widget.jsl");
myList1 = {"cat", "dog", "head", "cow", "heel", "help"};
dt = Open("$sample_data/semiconductor capability.jmp",Invisible);
myList2 = dt << get column names("Continuous", "string");
nw = New Window( "Example ListBox Filter",
HListBox(
VlistBox(
lb1 = ListBox(mylist1,
<<SET size=""></SET>
沒有文字 - 顯示完整列表
Left使用“Contains”,右邊使用“Starts With”
Re:可以將腳本化的“小部件”轉換為類嗎?更新:語法終於有意義了,我創建了類對象的實例。所以我回答了我的問題;答案是肯定的。
一旦函數和方法編寫腳本,我將更新這篇文章以定義和使用名為LBFilter和TEBSelector的類。我發現JMP14類語法更容易使用。
Re:可以將腳本化的“小部件”轉換為類嗎?沒有時間深入研究這個問題,但從2016年的那次談話開始,JMP 14已經通過課程向JSL引入了OOP。 我之前建議不要在JSL中實現OOP,並且舊帖子中建議的方法非常糟糕。 在我看來,他們更多的是在確定是否可以完成而不是在創建生產級別代碼的練習方面的練習。 我只是想在JMP 14支持類和OOP時正式回顧這個意見,內置方法將更好用。 看來你已經弄明白了。 OOP應該是創建用戶定義的小部件的好方法。 我很想看到你的最終產品。
Re:可以將腳本化的“小部件”轉換為類嗎?@gzmorgan,
完成後,如果您可以更新並標記我的更新。我將不勝感激。我絕對會喜歡用JSL課程,我希望能夠從你的學習練習中學習。
Re:可以將腳本化的“小部件”轉換為類嗎?所以我仍然認為課程需要一些工作。子類/繼承似乎有點不穩定。在類中沒有本機自引用,因此使用顯示框的方法不能使用它們的函數使用類屬性的任何內容。但是有一些工作要做 @Justin_Chilton 顯示這裡 。基於此我做了Autocompleter。
但我也使用了completer_box.jsl來實現功能。 並根據這個 ,特殊名稱空間將允許名稱空間調用,所以我也使用上下文框。 就個人而言,我最喜歡上下文框方法。
Re:可以將腳本化的“小部件”轉換為類嗎? @vince_faller ,使用JMP類的AutoCompleter腳本非常有用。 直到大約一個小時前,我沒有時間處理我的腳本,我立即撞牆。 我決定參考您建議的鏈接並看到您的回复。 讓我走出角落的代碼的關鍵部分是使用self和obj = Expr(self)。
<<SET text="" changed=""></SET>
我不知道如何引用<< Set Text Changed()的所有者類。 非常好!
我找到了這個 JMP腳本指南關於JMP類對象的模糊非常混亂(第293頁):
筆記:
•所有方法,成員變量和函數都是公共的。
•類中定義的函數無法訪問類中的方法變量或方法
類。
我想如果沒有你的榜樣,我會被困住很長一段時間。這值得5 Kudos!