테이블 상자의 행 블록 음영 처리<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕,
나는 각각 3행의 블록으로 자연스럽게 그룹화되는 많은 수의 행을 포함하는 테이블 상자가 있습니다(행 1~3은 한 화합물과 관련되고, 4~6행은 다른 화합물과 관련되고, 7~9행은 세 번째 행과 관련되기 때문입니다. , 등등).화합물 블록을 시각적으로 더 쉽게 구별할 수 있도록 행을 음영 처리하고 싶습니다. 따라서 1~3행을 음영 처리한 다음 4~6행을 흰색으로, 7~9행을 음영 처리한 다음 10~12행을 그대로 둡니다. 흰색 등 (한 번에 3개의 행을 음영 처리해야 한다는 요구 사항은 "<< 대체 행 음영" 속성을 사용할 수 없다는 것을 의미합니다.)
"<< set selected rows()" 속성을 사용하여 세 행의 모든 대체 블록을 미리 선택할 수 있지만 사용자가 이후에 행 중 하나를 클릭하거나 선택/선택 취소하면 해당 색상 패턴이 손실됩니다. .따라서 "<< set row change function" 속성 내에서 동일한 속성을 적용했습니다. 따라서 사용자가 테이블의 아무 곳이나 클릭하면 음영이 즉시 다시 적용됩니다.나는 다음과 같이 끝납니다.
이름 목록 = 반복({"A"}, 3) || 반복({"B"}, 3) || 반복({"C"}, 3) || 반복({"D"}, 3) || 반복({"E"}, 3) || 반복({"F"}, 3) || 반복({"G"}, 3) || 반복({"H"}, 3);
threeList = {1, 2, 3, 7, 8, 9, 13, 14, 15, 19, 20, 21};
tb = 테이블 상자(
문자열 열 상자("이름", nameList),
숫자 열 상자("첫 번째", index(1, 24)),
숫자 열 상자("초", index(25, 48)),
번호 열 상자("세 번째", 인덱스(49, 72)),
<< 선택한 행 색상 설정("청록색"),
<< 선택한 행 설정(threeList),
<< 행 변경 기능 설정(tb << 선택한 행 설정(threeList)),
<< 스크롤 가능(1) 설정,
<< 열 테두리 설정(1),
<< 밑줄 제목 설정(1)
);
new window("내 창", tb);
이것은 작동하지만 약간 복잡해 보입니다.누구든지 그것을 할 수있는 더 쉬운 방법을 제안 할 수 있습니까?
감사합니다.
Re: 테이블 상자에서 행 블록 음영 처리새 데이터 보기 사용에 대한 몇 가지 우려 사항을 해결하기 위해:
사용자 작업을 처리하기 위해 수행해야 하는 모든 작업은 행 상태 처리기를 추가하는 것입니다.변경 사항을 감지하고 프로그래밍 방식으로 문제를 해결할 수 있는 기능으로 분기합니다.이 경우 보기가 정렬된 경우 셀 색상을 새 순서로 재설정할 수 있습니다.
에프 = 기능 ({ ㅏ } ,< 셀 색상 재설정 > ) ;
RS = dt << 행 상태 처리기 만들기 ( 에프 ) ;
Re: 테이블 상자에서 행 블록 음영 처리모두에게 감사드립니다. 모든 면에서 매우 도움이 되었습니다. 이제 원래 쿼리를 해결할 수 있을 만큼 충분하므로 문제가 해결된 것으로 표시하겠습니다.
필요한 선택으로 테이블 상자를 만든 후 "<< set selectable rows(0)" 속성을 설정하라는 Vince의 제안을 시도했지만 불행히도 이렇게 하면 실제로 적용되기 전에 선택이 지워지는 것 같습니다.
나는 항상 eval(), 대체() 및 expr() 구성의 조합 구문에 어려움을 겪고 적응할 작업 예제가 있으면 삶이 훨씬 쉬워지기 때문에 Jim의 스크립트 사본을 가져왔습니다!내가 만들고 있는 보고서의 구조가 해당 출력 형식에 더 적합하기 때문에 적어도 당분간은 Table Box를 사용하겠습니다. 하지만 New Data Box 경로는 이전에 고려하지 않았던 것입니다. , 그리고 미래에 유용할 수 있습니다.
또한 개인 통신에서 사용자가 나중에 테이블 상자를 열 중 하나로 정렬하려고 시도하는 내 솔루션에 미치는 영향을 고려해야 할 수도 있다고 지적했습니다(오른쪽 클릭으로 쉽게 수행할 수 있음) .실제로 이것은 이 경우에 문제가 되지 않을 것입니다. 테이블 상자는 더 이상 정렬해도 유용한 목적이 없는 최종 보고서의 일부이기 때문입니다.
마지막으로 "<< set row change function()" 속성이 실제로 일하다 "<< set selected rows()" 속성에 의해 하나 이상의 행이 명시적으로 선택되지 않았거나 "<< set selectable rows(1)" 속성이 속성 설정 목록에 포함된 경우는 예외입니다.작은 일이지만 내가 하려고 하는 일을 하기 전에 이 중 적어도 하나가 필요하다는 것을 깨달을 때까지 혼란스러웠습니다.
다시 한 번, 많은 분들께 감사드립니다.
Re: 테이블 상자에서 행 블록 음영 처리이것을 처리하는 방법은 New Data Box() 함수를 사용하고 Table Box()가 아닌 데이터 테이블을 사용하는 것입니다.이를 통해 셀 등의 색상을 지정하고 데이터 테이블의 모든 편집 기능을 최대한 활용할 수 있습니다.
다음은 내가 말하는 내용을 설명하는 스크립트입니다.
이름 기본값은 여기 ( 1 ) ;
dt = 열려 있는 ( "$SAMPLE_DATA/빅 클래스.jmp" , 보이지 않는 ) ;
// 3행의 그룹 선택
을 위한 ( 케이 = 1 , 케이 <= 삼 , 케이 ++,
을 위한 ( 나 = 케이 , 나 <= N 행 ( dt ) , 나 = 나 + 6 ,
행 상태 ( 나 ) = 선택된 상태 ( 1 )
)
) ;
목록 = 목록으로 ( dt << 선택한 행 가져오기 ) ;
dt << 선택 지우기 ;
// 모든 열을 반복하고 셀 색상을 설정합니다.
콜리스트 = dt << 열 이름 가져오기 ( "끈" ) ;
을 위한 ( 나 = 1 , 나 <= N 항목 ( 콜리스트 ) , 나 ++,
평가 (
대리자 (
특급 (
열 ( dt , 콜리스트 [ 나 ] ) << 컬러 셀 ( { "빨간색" , _목록_ } )
) ,
특급 ( _목록_ ) , 목록
)
)
) ;
// 디스플레이 창 설정
Nw = 새창 ( "표시하다" ,
V 목록 상자 (
결핵 = 텍스트 상자 ( "예시" ) ,
vlb = V 목록 상자 ()
)
) ;
ndb = dt << 새 데이터 상자 () ;
vlb << 추가 ( ndb ) ;
ndb << 측면 패널 닫기 ( 1 ) ;
결핵 << 글꼴 크기 설정 ( 20 ) ;
다음과 같은 디스플레이 창을 생성합니다.

Re: 테이블 상자에서 행 블록 음영 처리이런 식으로 할 수 있습니다.
인덱스 = 1 :: 99 ;
새창 ( "창문" , TB = 테이블박스 ( NumberColBox ( "열" , 인덱스)));
n= 삼 ; //이를 그룹의 숫자로 변경할 수 있습니다.
행 = 위치 ( 모드 ( 바닥 ((인덱스- 1 )/N), 2 ) ); // n 버스트의 교대 그룹을 함께 제공합니다.
티비 << 선택한 행 설정 (행);
도움이 되었기를 바랍니다.건배.
*편집* 이것은 당신이 아마도 질문한 부분이 아니라는 것을 깨달았습니다.죄송합니다.
행을 선택한 다음 선택할 수 없도록 만들 수 있습니까?
tb << 선택 가능한 행 설정(0);