여러 열 리스트박스(Multicolumn Listbox)로 Pass/Fail 나타내기

    반응형

    안녕하세요. 지지비입니다.
    이번 포스팅에서는 여러 열 리스트박스를 이용하여 양불 판정을 색깔로 나타내는 방법에 대해서 알아보도록 하겠습니다. 결론적으로, 아래와 같은 프로그램을 만들게 됩니다. 

    목차

      1. 프로그램 설명

      먼저, 프로그램은 기준값(최대,최소)을 가지고 측정 결과를 Pass 또는 Fail로 판단하도록 하였습니다. 그 결과는 여러 열 리스트박스에 들어가도록 하였고, 양불 판정의 결과를 색깔과 문자열로 나타내도록 했습니다. 

      여기서 여러 열 리스트박스를 사용하는 이유는 특정한 셀의 속성(색깔)을 변경하기 위해서입니다. 배열은 원소가 모두 같은 속성을 갖게 되기 때문에, 특정 원소만 배경색을 변경할 수 없습니다. 측정 결과는 아래와 같이 여러 열 리스트박스로 들어가게 되며, 여러 열 리스트박스에 들어가는 데이터는 모두 문자열입니다.

       

      프로그램은 기본적으로 상태머신 구조를 기반으로 만들어져 있습니다. 대기 이벤트 케이스에서 결과 확인하기 버튼에 따라 상태를 변경해 가면서 프로그램을 실행합니다. 포스팅 맨 마지막에 예제 파일을 올려놓았으니 확인해 보시기 바랍니다.

       

      2. 양불 판정하기 (측정결과 비교하기)

      측정 결과를 기준값과 비교하는 것은 각 배열의 원소를 가져와 최댓값과 최솟값을 비교하는, 비교적 간단한 코드로 적용할 수 있습니다. 아래 코드는 기준값 배열과 측정값 배열의 원소를 For 루프를 사용하여 비교하는 코드입니다. 

      비교할 때 사용한 함수는 범위내 확인과 강제변환(In Range and Coerce) 함수입니다. 이 함수는 입력값이 최솟값과 최댓값보다 작은지 확인하는 출력이 있습니다. 이 출력 터미널을 이용합니다. 배열 오토인덱스에 대한 내용은 이전 포스팅 [LabVIEW 랩뷰/Labview 랩뷰 강의] - 루프와 함께 배열 다루기 를 확인해 주세요.

       

      3. 여러 열 리스트박스에 값 넣기

      여러 열 리스트박스에 값을 집어넣는 부분은 아래 블록 다이어그램에서 빨간색 박스로 나타낸 부분입니다.

      ① 기준값 배열과 측정 결과 배열은 숫자형 배열이므로 여러 열 리스트박스에 넣기 위해서는 문자열로 변경이 필요합니다. 각 배열을 숫자를 소수점형 문자열로(Number To Fractional String) 함수를 이용하여 문자열로 변경해 줍니다. 정밀도(Precision)에 2라고 연결해 놓은 것은 숫자를 문자열로 변경할 때 소수점을 몇째 자리까지 나타내는가를 정해주는 것으로, 2라고 입력하면 소수점 둘째 자리까지 나타냅니다. (숫자 5 --> 문자열 5.00로 변경)

      ② 그리고 양불 판정 결과를 불러와 참이면 Pass 문자열을, 거짓이면 Fail 문자열을 출력하도록 합니다.

      ③ 각각의 문자열 배열을 배열에 삽입(Insert Array)함수를 이용하여 포맷에 맞도록 문자열 배열을 만들고, 여러 열 리스트박스의 ItemNames 프로퍼티에 넣어줍니다. 여러 열 리스트박스에서 디스플레이되는 문자를 변경하기 위해서는 ItemNames 프로퍼티를 꼭 사용해야 합니다. 프로퍼티 노드 사용법은 이전 포스팅 [LabVIEW 랩뷰/Labview 랩뷰 강의] - 프로퍼티 노드를 확인해 주세요.

       

      4. 여러 열 리스트박스를 색칠하기

      여러 열 리스트박스에 양불 판정에 따라 초록색/빨간색 배경을 색칠하는 코드는 아래 파란색 박스로 표기된 부분입니다. 마찬가지로 여러 열 리스트박스의 프로퍼티 노드를 사용해서 배경색을 색칠합니다. 먼저 이해해야 할 부분은 활성 셀(Active Cell)에 대한 내용입니다. 

      여러 열 리스트박스에서 특정 셀의 배경색이나 속성을 변경하기 위해서는 아래와 같은 순서가 되어야 합니다.

      ① 특정 셀을 선택한다 : ActiveCell 프로퍼티 노드를 사용
      ② 셀의 속성을 변경한다 : 배경색 변경 등

      위 예제 코드에서는 여러 열 리스트박스의 3열에 있는 셀의 배경색을 순서대로 변경하기 위해서 For 루프를 사용했습니다. 즉, 아래와 같은 순서로 배경색이 변경됩니다.

       (0,3) 셀을 선택한다 → (0,3) 셀의 배경색을 Pass/Fail에 따라 녹색 또는 빨간색으로 변경
       (1,3) 셀을 선택한다 → (1,3) 셀의 배경색을 Pass/Fail에 따라 녹색 또는 빨간색으로 변경
       (2,3) 셀을 선택한다 → (2,3) 셀의 배경색을 Pass/Fail에 따라 녹색 또는 빨간색으로 변경

      프론트 패널에서는 셀 3개를 변경하는 시간이 아주 작기 때문에 한 번에 변경되는 것처럼 보이지만, 실제로는 셀 하나씩 색칠해 나가고 있는 것입니다. 따라서 지금은 셀이 3개밖에 없으니까 상관없지만 셀이 엄청나게 많아지는 경우 PC 사양에 따라서 색칠하는 데에만 시간이 오래 걸릴 수도 있습니다.

       

      5. 여러 열 리스트박스 초기화하기

      리스트박스 초기화는 아래와 같은 코드로 작성하였습니다. 여기서 여러 열 리스트박스의 배경색을 한 번에 변경하기 위하여 활성 셀(ActiveCell)의 숫자가 -2, -1 등으로 입력되어 있습니다. 아래에 계속 설명하도록 하겠습니다.

      ① ItemNames 프로퍼티에 빈 문자열 배열을 넣습니다. 보여지는 문자열을 모두 초기화하기 위함입니다.
      ② 활성 셀에 (-2,-2) 를 입력합니다. (-2, -2)는 여러 열 리스트박스의 행과 열을 모두 선택하는 입력 값입니다. 또한 행 헤더와 열 헤더도 모두 선택됩니다.
      ③ 흰색으로 배경색을 변경합니다. 이 때, ②에서 열 헤더와 행 헤더도 모두 선택되기 때문에 헤더도 모두 흰색으로 색이 변경되는 문제가 있습니다.
      ④ 활성 셀에 (-1,-2) 를 입력합니다. (-1, -2)는 모든 열 헤더를 선택하는 입력 값입니다. 행 헤더의 색깔을 기본색(회색)으로 변경하기 위해서 행 헤더를 선택하는 것입니다.
      ⑤ 회색으로 배경색을 변경합니다. 행 헤더의 색이 회색이 됩니다.
      ⑥ 활성 셀에 (-2,-1) 을 입력합니다. (-2, -1)는 모든 행 헤더를 선택합니다.
      ⑦ 회색으로 배경색을 변경합니다. 열 헤더의 색이 회색이 됩니다.

       

      예제 파일을 첨부로 넣어 드리니 도움이 되시면 좋겠습니다. 

      Multicolumn Listbox Example.vi
      0.03MB

      댓글

      Designed by JB FACTORY