如何防止“以適合模型運行”生成報告?我正在編寫執行以下操作的腳本:
- 打開“擬合模型”窗口,
- 允許用戶使用“擬合模型”窗口中的宏和其他功能填充它,
- 允許用戶單擊“運行”,此時將執行可能耗時的計算並生成報告。
單擊“運行”時執行的計算由“運行”按鈕中存儲的腳本產生。該腳本會生成一個報告,這就是用戶應該看到。但是,由於腳本已添加到“運行”按鈕中,因此會顯示所需的報告,但隨後是運行自行生成的“最小二乘”報告。“最小二乘法”報告對用戶毫無意義。
下面的腳本說明了該問題。 在該腳本中,“運行”按鈕中的表達式“ runExpr”僅創建了一個克隆數據表。這是為了簡化說明。在實際腳本中,該表達式(runExpr)根據在“擬合模型”窗口中輸入的效果執行大量分析。 同樣,在實際腳本中,用戶以交互方式填充“擬合模型”窗口;為了方便起見,我在下面的腳本中填充了“擬合模型”窗口。
Names Default To Here( 1 );
runExpr = Expr(
// Creates a clone data table for illustration;
dt << Subset( Output Table( "Clone Table" ), All rows );
);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
fmSLS = Fit Model(
Y( :weight ),
Effects( :age, :height, :age * :height ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
);
r = fmSLS << Report;
r[Button Box( 9 )] << Set Script( runExpr);
當您按用戶的方式單擊“運行”時,將顯示克隆表,但頂部的窗口是由“運行”命令生成的“最小二乘法”報告。我想阻止該報告的出現。
為此:
- 我試過在runExpr中使用Throw()和Stop(),但無濟於事。
- 我考慮使用模式窗口,但是我需要“擬合模型”窗口中的“宏”功能,但看不到如何提供模式窗口幫助。
- 我什至想解決最小二乘報告的唯一方法就是在腳本中添加一個定時循環,如下所示。 但這充滿了危險。無法知道runExpr需要多長時間才能完成,並且如果用戶決定不單擊“運行”,腳本將一直運行直到超時。
任何想法或幫助將不勝感激!
Names Default To Here( 1 );
runExpr = Expr(
// Creates a clone data table for illustration;
dt << Subset( Output Table( "Clone Table" ), All rows );
fm_Flag = 1
);
fm_Flag = 0; // Sets flag for timing
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
fmSLS = Fit Model(
Y( :weight ),
Effects( :age, :height, :age * :height ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" ),
);
r = fmSLS << Report;
r[Button Box( 9 )] << Set Script( runExpr; fm_Flag = 1 );
For( i = 1, i <= 100, i++,
If(fm_Flag < 1, Wait(0.5), windowsopen = Get Window List(); windowsopen[nItems(windowsopen)] << Close Window; Stop() )
);
腳本編寫回复:如何防止“以適合模型運行”生成報告?我看不到如何修改附加到“運行”按鈕框中的腳本,但是之後可以找到並關閉該窗口。 參見下圖:
fm = Current data Table() << Fit Model(
Y( :weight ),
Effects( :age, :sex, :height ),
Personality( "Standard Least Squares" ),
Emphasis( "Effect Leverage" )
);
fls = fm << Run;
window = Get Window List();
For( w = 1, w <= N Items( window ), w++,
If( Contains( window[w] << Get Window Title, "Fit Least Squares" ),
window[w] << Close Window;
Break();
);
);
回复:如何防止“以適合模型運行”生成報告?馬克,謝謝你,但我認為這不適合我的情況。用戶需要填充“擬合模型”窗口。如果將窗口組件添加到腳本中,它將在用戶填充“擬合模型”窗口之前運行。因此,當用戶單擊“運行”時,腳本的該部分已“消失”。請查看我帖子中的第二個腳本,以按照建議的方式查看我非常精巧的解決方法。必須考慮用戶填充Fit Model所花費的時間,然後考慮“運行”按鈕中運行腳本所花費的時間。
回复:如何防止“以適合模型運行”生成報告?你是對的。 我試圖修改我的插圖,但是在創建“最小二乘”報告之前先評估按鈕框上附加的腳本,因此該腳本無效。
Names Default to Here( 1 );
run expr = Expr(
// desired report
personality = Report( fm )[ComboBox(1)] << Get Selected;
Show( personality );
// undesired report
window = Get Window List();
For( w = 1, w <= N Items( window ), w++,
If( Contains( window[w] << Get Window Title, "Fit Least Squares" ),
window[w] << Close Window;
Break();
);
);
);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
fm = dt << Fit Model(
Y( :weight ),
Effects( :age, :sex, :height ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" )
);
Report( fm )[ButtonBox(9)] << Set Script( run expr );
// nothing after this point
回复:如何防止“以適合模型運行”生成報告?正確,似乎在執行“運行”按鈕的內置行為之前,已運行了按鈕框中的腳本。
這個小問題令人煩惱! 必須有一種方法可以推遲執行腳本,直到發生某項操作(如按下“運行”按鈕)為止。 或者,為了防止執行內置行為(但正如我所說,將Throw和Stop放置在runExpr中不起作用)。
馬克,感謝您的幫助。回复:如何防止“以適合模型運行”生成報告?您需要多少“模型規格”對話框? 我忍不住想,您可以用一個滿足您確切需求的新窗口來代替該步驟。這篇文章中的示例可能會有所幫助:
https://community.jmp.com/t5/JMPer-Cable/Prompting-for-columns-totally-modally/ba-p/189647
如果要使用“模型規範”窗口,則可以為用戶提供一個新按鈕以單擊:
Names Default to Here( 1 );
run expr = Expr(
// desired report
personality = Report( fm )[ComboBox(1)] << Get Selected;
Show( personality );
);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
fm = dt << Fit Model(
Y( :weight ),
Effects( :age, :sex, :height ),
Personality( "Standard Least Squares" ),
Emphasis( "Minimal Report" )
);
// Show error if user clicks the wrong button
(fm << XPath("//ButtonBox[@title='Run']"))[1] << Set Script( New Window( "Use other bottom",
Text Box("Woops...\!n\!nPlease use the button at the bottom of the fit model dialog to launch this script.")));
// Button the user should click on
(fm << XPath("//OutlineBox"))[1] << Append(Button Box("Launch custom script", run expr; fm << Close Window;));<BR />
回复:如何防止“以適合模型運行”生成報告?如果不想使用最小二乘擬合平台,為什麼要使用“擬合模型”對話框? 可能會有另一種方式來實現您想要的。