이름은 기본적으로 Here(1); // 콤보 상자 초기화 init_dt_list = Get Data Table List() << Get Name; If(N Items(init_dt_list) == 0, Throw("열려 있는 테이블이 없습니다"); ); dt = Current Data Table(); init_dt_idx = Contains(init_dt_list, dt << get name()); nw = 새 창("test", window:dt = dt; H 목록 상자( 라인업 상자(N Col(2), window:cb_table = 콤보 상자(init_dt_list, << Set(init_dt_idx), << Set Function(function({this}, // 열린 테이블이 없는 경우 복구하려면 이렇게 해야 합니까? If((this << get selected) != "(SELECT TABLE)", all_items = this << get items; If(Contains(all_items, "(SELECT TABLE)"), this << Remove Item(Contains(all_items, "(SELECT TABLE)")); ); window:dt = Datatable((this << get selected)); // 필터 다시 실행 col 선택기(window:ob_column_selection << child) << Delete Box(); Eval(EvalExpr(nw:ob_column_selection << Append(V 목록 상자( window:fcs = 필터 Col Selector(Datatable(Expr(Datatable(window:dt))), << Set N Lines(5)), window:fcs[IfBox(1)] << Set(1); )))); ); )), << Set Tip("데이터 테이블") ), window:btn_table = Button Box("", << Set Function(function({this}, window:dt = Datatable(window:cb_table << 선택됨); window:dt << 창을 앞으로 가져오기; )), << Set Icon("ActivateDataTable"), << Set Tip("데이터 테이블 보기") ) ), window:ob_column_selection = Outline Box("열 선택기", V List Box( // 필터 열 선택기 업데이트를 더 쉽게 하기 위한 필수 요소 window:fcs = Filter Col Selector(Datatable(dt), << Set N Lines(5)), window:fcs[IfBox(1)] << Set(1) ) ) ) ); // 데이터 테이블 목록의 다양한 변경에 대한 함수 Eval(EvalExpr(f_open = function({dtab}, cur_dts = Reverse(Get Data Table List() << Get Name); cur_dt = Expr(nw:cb_table) << Get Selected; If(cur_dt == "(no tables)", nw:dt = Datatable(dtab); ); Expr(nw:cb_table) << Set Items(cur_dts); Expr(nw:cb_table) << Set(Contains(cur_dts, cur_dt)); If(N items(cur_dts) == 1, // 빈 테이블 상황에서 복구하기 위해 (SELECT TABLE) 임시 항목을 추가합니다. Expr(nw:cb_table) << Append Item("(SELECT TABLE)"); Expr(nw:cb_table) << Set(2, Run Script(0)); ); ))); Eval(EvalExpr(f_rename = function({dtab, b}, cur_dts = Reverse(데이터 테이블 목록 가져오기() << 이름 가져오기); cur_dt = Expr(nw:cb_table) << 선택 가져오기; Substitute Into(cur_dts, b, (dtab << 이름 가져오기)); If(cur_dt == b, cur_dt = dtab << 이름 가져오기; ); Expr(nw:cb_table) << 항목 설정(cur_dts); Expr(nw:cb_table) << 설정(cur_dts, cur_dt)); ))); Eval(EvalExpr(f_close = function({dtab}, cur_dts = Reverse(데이터 테이블 목록 가져오기() << 이름 가져오기); Cur_dts에서 제거, Cur_dts, dtab에서 포함(cur_dts, dtab << 이름 가져오기)); cur_dt = Expr(nw:cb_table) << 선택 가져오기; Cur_dt == dtab << 이름 가져오기(), cur_dt = 현재 데이터 테이블() << 이름 가져오기; ); nw:cb_table << 항목 설정(cur_dts); Expr(nw:cb_table) << 항목 설정(cur_dts, cur_dt)); N 항목(cur_dts) == 0, nw:cb_table << 항목 설정({"(테이블 없음)"}); ); ))); // 데이터 테이블 목록 구독 aSub = 데이터 테이블 목록 구독(, OnOpen(f_open)); Eval(EvalExpr(데이터 테이블 List(Expr(aSub), On Rename(f_rename) 구독))); Eval(EvalExpr(데이터 테이블 List(Expr(aSub), OnClose(f_close) 구독))); // 구독을 제거하려면 Eval(EvalExpr(nw << On Close(데이터 테이블 List(Expr(aSub), "ALL") 구독 취소); )));