你好,
建立 Graph Builder 物件後,可以如下定義變數: Variables(X(:x), Y(:y), Color(:color))
我想做的是透過從清單中選擇特定列來動態更改顏色列。如何才能實現這個目標?
先感謝您。
有趣的。我想我從你的劇本中得到了一些零碎的東西,但下週我需要一些時間來完成這個工作。
這是腳本的快速版本
Names Default To Here(1);
If(Is Empty(Current Report()),
Throw("No open reports found");
);
cur_report = Current Report() << XPath("//OutlineBox[@helpKey='Graph Builder']");
If(N Items(cur_report) < 1,
Throw("No graph builder open");
,
cur_report = cur_report[1] << Get Scriptable Object;
dt = cur_report << Get Data Table;
);
// Find current Color role
find_role_column = Function({gb, role = "Color"}, {Default Local},
vars = gb << Get Variables();
col = "";
role_idx = 0;
For Each({var, idx}, vars,
role = var["Role"];
If(role == "Color",
col = var[1] << get name;
role_idx = idx;
break();
);
);
return(Eval List({col, role_idx}));
);
replace_role_column = function({gb, new_col, role = "Color"}, {Default Local},
{colname, role_idx} = find_role_column(gb);
gb << inval;
If(role_idx > 0,
gb << Remove Variable(role_idx);
);
Eval(EvalExpr(
gb << Add Variable({Expr(NameExpr(AsColumn(new_col))), Role(Expr(role))});
));
wait(0);
gb << update window;
return(1);
);
nw = new window("demo",
clb = Col List Box(Datatable(dt), width(250), maxSelected(1),
<< Set Function(function({this},
replace_role_column(cur_report, this << get selected, "Color");
));
)
);
clb << Set Items(dt << Get Column Names("String"));
創建更好的一個需要一些時間,我可能在周末有足夠的時間來創建一個(它與我的列快速交換器非常相似 - 在圖形生成器中輕鬆更改多個 Y 和 X 軸列)
我確實為名為 Role Switcher 的新增切換器建立了願望清單項目。目前我認為這將需要腳本解決方案,如果它僅限於圖形生成器和顏色角色,那麼創建起來會更容易(當我有時間時,我很可能會為此創建加載項)。
「列切換器的唯一「問題」是您不能同時在多個角色中擁有同一列。」:不幸的是,這正是我所需要的。
這不正是列切換器的作用嗎?列切換器的唯一“問題”是您不能同時在多個角色中擁有同一列。
嗨,Jarmo,這是真的,但顯然我必須更精確:列切換器只需要影響顏色列,而不是 x 或 y 列。