테이블 상자에서 사용자가 여러 셀을 선택하거나 선택한 것처럼 보이게 하는 방법이 있나요? 아니면 다른 개체를 사용해야 할까요? 예를 들어, 사용자가 아래 이미지의 2행부터 시작하여 왼쪽 테이블의 펌프 태그를 오른쪽으로 이동하려고 한다고 가정해 보겠습니다. 이 경우 사용자가 복사할 셀 블록을 선택하고 붙여넣으려면 어떻게 해야 할까요?

더 보기...
New Window( "Editing a data table",
Show Menu( 0 ), Show Toolbars( 0 ),
h list box(
Table Box(
String Col Edit Box( "PI Point", Repeat( { "" }, 5 ) || Transform Each({v},as list(transpose(1::15)),"Pump1-" || char(v)) ),
String Col Edit Box( "Friendly Name", Repeat( { "" }, 5 ) || Transform Each({v},as list(transpose(1::15)),"Name " || char(v)) )
),
spacer box(20,20),
Table Box(
String Col Edit Box( "PI Point", {"sinusoid"} || Repeat( { "" }, 14 ) || {"Valve1", "Valve2", "Valve3"} ),
String Col Edit Box( "Friendly Name", Repeat( { "" }, 15) || {"Inlet", "Outlet", "Recirc"} )
)
)
);
값을 복사하고 붙여넣는 스크립트를 작성하는 것은 간단하지만, 사용자는 데이터를 어디에서 가져오고 어디에 붙여넣을지 지정해야 합니다.
실제 사용 사례
GitHub 이슈에서 논의된 바와 같이, Had/OSISoft PI 도구 추가 기능의 태그 및 사용자 친화적 이름 입력란을 데이터 테이블로 대체하여 인터페이스를 개선하고 싶습니다. 사용자들은 종종 JMP 테이블이나 스프레드시트에 태그 목록을 가지고 있으며, 이를 추가 기능 사용자 인터페이스에 빠르게 복사/붙여넣기하기를 원합니다. 테이블 전체를 한 번에 복사하는 것은 쉽지만, 변경이 필요한 경우 목록의 일부만 바꾸고 싶을 수도 있습니다.
Table Box 객체를 사용하면 사용자가 여러 셀을 선택할 수 없는 것 같은데, 다른 방법이 있을까요? 예전에 사용자 정의 창 안에 전체 데이터 테이블 창을 포함할 수 있다고 생각했던 것 같은데, 제가 잘못 기억하고 있는 걸까요?
지금까지 제가 생각해낸 가장 좋은 방법은 마우스 오버 시 '선택된' 셀 위에 사각형을 그리는 로직을 구현하는 것이지만, 더 간단한 해결책이 있는지 먼저 확인하고 싶습니다.
명령어는 <<새 데이터 상자:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
new window("data box", dt << new data box)
@hogi님, 감사합니다! 바로 그거예요!!
제 생각엔 이것들은 꽤 괜찮은 사용자 경험을 제공합니다.

재현 코드:
더 보기...
names default to here(1);
dt1 = New Table( "dt1", invisible,
Add Rows( 20 ),
New Column( "PI Point", Character, "Nominal", Set Values(
Repeat( { "" }, 5 ) || Transform Each({v},as list(transpose(1::15)),"Pump1-" || char(v))
) ),
New Column( "Friendly Name", Character, "Nominal", Set Values(
Repeat( { "" }, 5 ) || Transform Each({v},as list(transpose(1::15)),"Name " || char(v))
) )
);
dt2 = New Table( "dt1", invisible,
Add Rows( 20 ),
New Column( "PI Point", Character, "Nominal", Set Values(
{"sinusoid"} || Repeat( { "" }, 14 ) || {"Valve1", "Valve2", "Valve3"}
) ),
New Column( "Friendly Name", Character, "Nominal", Set Values(
Repeat( { "" }, 15) || {"Inlet", "Outlet", "Recirc"}
) )
);
new window("data box",
Show Menu( 0 ), Show Toolbars( 0 ),
h list box(
ntb1 = dt1 << New Data Box;
ntb1 << close side panels;
ntb1 << Set Row ID Width( 50 );
ntb1 << Set Width(200);
ntb1 << Set Height(450);
ntb1,
spacer box( Size( 20, 20 )),
ntb2 = dt2 << New Data Box;
ntb2 << close side panels;
ntb2 << Set Row ID Width( 50 );
ntb2 << Set Width(200);
ntb2 << Set Height(450);
ntb2
),
<< On close(
try( dt1 << Close Window );
try( dt2 << Close Window );
)
);
저는 아직 이 중 몇 가지 부분을 해결하려고 노력 중입니다. 예를 들어 표가 그려진 후 상자 안의 열 너비를 어떻게 조정하는지 같은 부분인데, 그건 나중에 다시 다루도록 하겠습니다!