多次執行相同腳本時如何使用「關閉時」關閉正確的表?你好,
我有一個加載項輸出一個圖表,其中幾個表格隱藏在後台。
關閉視窗後,我使用「關閉時」功能關閉相關資料表,如下所示:
New window() << On close(
Close(TableA, nosave);
Close(TableB, nosave);
) ;
問題是,如果我運行腳本兩次,第一次運行的 TableA 將在第二次腳本執行期間被覆蓋。
我嘗試透過使用在每個腳本啟動時創建的唯一 ID 來解決該問題,如下所示:
NewWindow() << On Close(
For(i = NItems(GetWindowList() << Get Window Title()), i > 0, i--,
win = GetWindow((GetWindowList() << Get Window Title())[i]);
If(Contains(win << get window title, Eval(uniqueID)) != 0,
win << closewindow()
);
)
)
不幸的是,同樣的問題仍然存在,UniqueID 被覆蓋。
有沒有辦法正確引用表格,以便關閉視窗將關閉正確的表格?
預先感謝您的幫忙!
自動化和腳本編寫回覆:多次執行相同腳本時如何使用「關閉時」關閉正確的表?根據您的收盤價評估牌桌
Eval(EvalExpr(
New Window() << On close(
Try(Close(Expr(TableA), nosave));
Try(Close(Expr(TableB), nosave));
)
));
回覆:多次執行相同腳本時如何使用「關閉時」關閉正確的表?它是如何運作的:在你原來的例子中,
New window() << On close(
Close(TableA, nosave);
Close(TableB, nosave);
) ;
TableA 和 TableB 是保存指向表的指標的變數。如果有多個實例,則變數指向已指派的最後一個實例。
在@jthi示例中,
Eval(EvalExpr(
New Window() << On close(
Try(Close(Expr(TableA), nosave));
Try(Close(Expr(TableB), nosave));
)
));
您的腳本正在由 Eval(EvalExpr( ... Expr(...) ) ) 程式碼進行預處理,以將變數替換為其值。這使得腳本不再依賴變數的當前變量,因為對 close() 的呼叫現在使用常數值(更早從變數取得)。
如何閱讀:EvalExpr(...) 查看 Expr(...) 的參數並對其求值,將求值結果替換為 Expr()。當 EvalExpr 完成時,它會傳回一個表達式,仍需要對其求值才能執行 OnClose(...) 方法。
將 Expr(...) 標記放置在正確的位置非常重要;需要確定的部分只是變數的值。例如,如果您使用 Expr(close(tableA,nosave)),則 close() 函數將會運作得太快。
回覆:多次執行相同腳本時如何使用「關閉時」關閉正確的表?太棒了,非常感謝!
回覆:多次執行相同腳本時如何使用「關閉時」關閉正確的表?謝謝克雷格的解釋,非常有幫助!我已經概括了這一點,並且很高興在關閉視窗時關閉了正確的表。
我仍然有一個可能在某種程度上相關的問題:在這些視窗上,我設定了選單腳本以允許向下鑽取,現在由於Eval(EvalExpr(...Expr(...))) ,它們調用了正確的參數代碼。儘管如此,我在這些腳本中定義了變數以進行資料操作,但我不知道如何避免它們被覆蓋:有沒有辦法將這些變數聲明為該腳本的本地變數?
例子:
Eval(
EvalExpr(
NewWindow("Example", Outline = OutlineBox("Add-ins", Tabs = TabBox())) <<
On close(
Try(Close(Expr(TableA), nosave));
Try(Close(Expr(TableB), nosave));
)
)
);
Outline << Set Menu Script(
{"Script1", Eval(EvalExpr(Add_in_table = Expr(TableA) << Subset(Selected Rows))) ;
// some code
TableD = Add_in_table << Summary(...) ;
Eval(
EvalExpr(
NewWindow(Graph builder()) << OnClose(
Try(Close(Expr(Add_in_table), nosave));
Try(Close(Expr(TableD), nosave));
)
)
)}
);謝謝
回覆:多次執行相同腳本時如何使用「關閉時」關閉正確的表?名稱預設為此處(1);在腳本的開頭或可能使用視窗範圍(或框)。腳本指南有一些有關命名空間和範圍的信息
您可以從左側選單移動到不同的頁面

或右上角箭頭
