我正在尝试从GUI调用“菜单移动所选列”。
在此代码调用它的同时,它不会重新组织表(可能是由于MoveSelectedColumns的错误使用...)
MoveButtonPress=Function({this},
// colListData is a Filter Col Selector in a GUI
selectedElements = colListData << GetSelected;
DataTable1 << move selected columns(selectedElements, after()); // TODO fix this
colListData << Reset; //refresh selector
colListData << NameContains (" "); // reactivates filter
);
我对代码进行了一些更改,以使用“ GetSelectedColumns”而不是“ Get Selected”。请让我知道这是否适合您吗?
DataTable1=Open("$SAMPLE_DATA/Big Class.jmp");
nw=New Window("Move Selected Columns button",
Button Box("Move Selected Columns",
selectedElements = DataTable1 << GetSelectedColumns;
DataTable1 << move selected columns(selectedElements, after(:name));
)
);我相信您会收到“无法识别的关键字”错误,因为“移动选定的列”功能需要将列引用作为输入,而不是列名。 请看下面的代码。 我添加了一些功能,包括在何处选择“之后”列的功能。 这有帮助吗?
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
nw = New Window( "Move Selected Columns button",
H List Box(
V List Box(
Text Box( "Select Columns to Move" ),
columns_to_move = Col List Box( Data Table( dt ), all )
),
V List Box(
Text Box( "Before Before or After Selected Column" ),
after_column_list = Col List Box( Data Table( dt ), all )
)
),
H List Box(
Button Box( "Move To First",
MoveColumns = columns_to_move << GetSelected;//Get List Of Column Names
dt << Select Columns( MoveColumns );//Select Columns
colList = {};//List to hold Column References
For( i = 1, i <= N Items( MoveColumns ), i++,
colList[i] = Column( dt, MoveColumns[i] )//For-loop used to convert list of Column Names to Column References
);
dt << move selected columns( colList, To First );//Move Columns to First
),
Button Box( "Move To Last",
MoveColumns = columns_to_move << GetSelected;//Get List Of Column Names
dt << Select Columns( MoveColumns );//Select Columns
colList = {};//List to hold Column References
For( i = 1, i <= N Items( MoveColumns ), i++,
colList[i] = Column( dt, MoveColumns[i] )
);
dt << move selected columns( colList, To Last );//Move Columns to First
),
Button Box( "Move After Column",
MoveColumns = columns_to_move << GetSelected;//Get List Of Column Names
dt << Select Columns( MoveColumns );//Select Columns
aftercol_string = after_column_list << GetSelected;//Get Column to move after
aftercol_ref = Column( dt, aftercol_string[1] );//Column reference - only first item in case someone chose more than one
colList = {};//List to hold Column References
For( i = 1, i <= N Items( MoveColumns ), i++,
colList[i] = Column( dt, MoveColumns[i] )
);
dt << move selected columns( colList, after( aftercol_ref ) );
)
)
);