使用腳本,如何在日誌文件的按鈕框中設置表格腳本的文本?使用腳本,我需要構建一個完全獨立的日誌文件,其中包含重現數據表的按鈕框。在生產應用程序中,會有很多標題(每個標題代表一個零件),每個標題下面會有幾個按鈕框,每個顯示與零件相關的不同數據表。由於構建數據表需要進行複雜的計算,因此我使用函數來構建它們。我的意圖是只將日誌文件分發給用戶。
我使用 Baltic.jmp 樣本數據表構建了一個骨架示例。 函數“SmallTables()”以文本形式返回表格腳本。但是我找不到在日誌文件中按鈕框的腳本框中輸入該文本的方法。 任何幫助將不勝感激。
SmallTables = Function( {k},
dt = Open( "$Sample_Data/Baltic.jmp" );
dt_Small = dt << Subset( Rows(), Columns( Column( k ) ), Output Table Name( "Small" ) );
Close( dt, NoSave );
tblScript = dt_Small << Get Script;
result = Char( Name Expr( tblScript ) );
);
jrn = New Window( "Table Test", Outline Box( "Title" ) );
For( k = 1, k <= 5, k++,
jrn << Append( BB = Button Box( "Small Table " || Char( k ), Set Script( SmallTables( k ) ) ) )
);Re: 使用腳本,如何在日誌文件的按鈕框中設置表格腳本的文本?非常感謝您對那篇文章的引用!這是一個非常清晰的解釋,有很好的例子。這是非常有幫助的。
Re: 使用腳本,如何在日誌文件的按鈕框中設置表格腳本的文本?訣竅是確保在評估之前插入子表達式。這篇 JSL Cookbook 文章可能會有所幫助:
使用 Eval Insert、Eval Expr、Parse 和 Substitute 將一個表達式插入另一個表達式
Re: 使用腳本,如何在日誌文件的按鈕框中設置表格腳本的文本?多麼好的例子!但是,在我的項目中,我需要構建數百個數據表,每個部分都有幾個。這就是我使用函數來構建數據表的原因(希望沒有初學者會看到那腳本!)。 恐怕您的建議會導致同時打開太多窗口。 但是,對於可管理數量的數據表,您的概念非常好!我相信我會有機會使用它。
非常感謝你的幫助。
Re: 使用腳本,如何在日誌文件的按鈕框中設置表格腳本的文本?太感謝了!這在我的“大”腳本中非常有效。我的想法是我的函數的結果是腳本的文本表示,因此應該在按鈕框腳本對話框中輸入。 我仍然不清楚為什麼這不起作用,但是正如您所演示的,使用 Name Expr 函數和 Substitute 可以完美地工作。
順便說一句,在我的實際應用程序中,循環是必需的,因為我需要構造不同的表。我有大量的零件,腳本用腳本構造了幾個數據表,每個零件都是獨一無二的。該腳本需要一些時間才能運行,因此能夠運行該腳本來創建一個獨立的日誌文件真是太好了。
再次感謝您讓我走上正確的道路!
Re: 使用腳本,如何在日誌文件的按鈕框中設置表格腳本的文本?我使用獨立的日誌文件進行演示和培訓,使其易於共享。關閉各個部分並清理所有內容的鏈接可以使事情繼續進行。下面的腳本創建了一個基本的示例日誌;一旦你運行它,你應該會看到一個帶有鏈接的日誌。右鍵單擊每個並選擇 Edit > Edit Script 以查看它們是如何構造的。我經常使用“複製表腳本”來填充這些內容。將此代碼放入函數中是個好主意,但請注意,對於嘗試探索您的日記的初學者來說,它看起來更像是黑魔法。

請注意,我通常以交互方式製作日記,而不是使用這樣的腳本。
names default to here(1);
//Open data tables temporarily so we can copy their scripts
dtIrisTemp = open("$Sample_Data/Iris.jmp");
dtBigClassTemp = open("$Sample_Data/Big Class.jmp");
//Use Eval(EvalExpr()) so the actual scripts for the data table are saved in
//the journal.
Eval( Eval Expr(
journal = New Window( "A Journal", <<JOURNAL></JOURNAL>
Re: 使用腳本,如何在日誌文件的按鈕框中設置表格腳本的文本?如果您將使用一個表,我不會為每個函數調用打開和關閉它。 我會打開表格,構建窗口,使用 for 循環然後關閉表格。
嘗試這個。
SmallTables = Function( {k},
dt = Open( "$Sample_Data/Baltic.jmp" );
dt_Small = dt << Subset( Rows(), Columns( Column( k ) ), Output Table Name( "Small" ), Invisible );
Close( dt, NoSave );
_xx = dt_Small << Get Table Script Names;
dt_Small << Delete Scripts(_xx);
tblScript = dt_Small << Get Script;
wait(0);
Close( dt_Small , NoSave);
NameExpr(tblScript)
);
jrn = New Window( "Table Test", Outline Box( "Title" ) );
For( k = 1, k <= 5, k++,
_xx = SmallTables(k);
Eval(Substitute(Expr(jrn << Append( BB = Button Box( "Small Table " || Char( k ), Set Script( _scr ) ) )),
Expr(_scr), NameExpr(_xx) ) )
);Re: 使用腳本,如何在日誌文件的按鈕框中設置表格腳本的文本?