2008. 4. 24. 21:42

CVI Control Modes for Generating Events



CVI로 이런 저런 프로그래밍을 하는 도중 늘 궁금한게 하나 있었다.
말이 그렇지 하나 뿐만이 아니고 아주 아주 많이있다..... -_-

그러던 도중 오늘 드디어 궁금증을 하나 풀어낸 것이 있으니..  바로 "컨트롤 모드(control mode)"에 관련된 것이다.
각 컨트롤마다 Edit 창을 열어 속성을 정하거나 하는데.. 중간에 보면 꼭 Control Mode라는 것이 있는 것이다. 내용도 'Hot', 'Normal', Indicator', 'Validate'등 다양하게 있는데 뭔뜻인지.. ^^;

CVI정보나눔의 질문답변란에서 그 정답을 찾았다.

> 안녕하세요...
> cvi를 시작한지 얼마 안 된 학생 입니다.
> hot와 validate의 차이점에 관해 좀 알려 주시면 감사 하겠습니다.
> 수고하세요...
>

CVI 도움말의 다음 항목에서 잘 설명해 주고 있습니다.
Control Modes for Generating Events

아래는 제가 공부삼아 번역해본 내용입니다.

---------------------------------------------------------
이벤트 발생에 대한 Control Mode

여러분은 control에 의해 발생되는 이벤트의 type을 match시키기 위해 control의 mode를 Normal, Indicator, Hot 혹은 Validate mode로 설정할 수 있습니다.

- Value Changed event는 GUI의 사용자가 control의 설정값을 수정할 때 발생되는 이벤트입니다. 즉, slide control의 slider를 마우스로 드래그 한다든지, string control에다 문자를 입력할 때 발생됩니다.

- Commit event는 GUI의 사용자가 동작을 실제로 완료할 때 발생됩니다. 즉, menu를 선택한다든지, 숫자를 입력하고 Enter키를 누른다든지, 혹은 slide control에서 slider를 드래그한 후에 마우스 버튼을 놓을 때 말입니다.

여러분이 control을 만들 때, 아래의 control mode 중에서 하나를 지정할 수 있습니다.
control mode는 control이 이벤트를 어떻게 발생시킬지, 사용자가 조작할 수 있는 범위를 어떻게 정할지를 결정합니다.

- Normal: 이 모드에서는 사용자가 control을 조작할 수 있게 하고, 또 control이 commit 이벤트를 제외한 모든 이벤트를 발생시킬 수 있습니다.

- Indicator: 이 모드에서는 사용자가 control을 조작할 수가 없고, 또 control이 commit나 value changed event를 발생시키지 않습니다.

- Hot: 보통 Default로 설정되어 있습니다. 이 모드는 Normal과 거의 같은데, 사용자가 어떤 동작을 수행했을 때, control이 commit 이벤트를 발생시킵니다. 통상적으로 hot control은 상태가 변경되었을 때 commit event를 발생합니다. 예를 들면, 사용자가 binary switch를 off에서 on으로 드래그하고, 마우스 버튼을 놓으면, commit event가 발생됩니다. 아래의 control type에 대한 설명은 commit event가 어떻게 발생되는지에 대해 확실한 규칙을 보여줍니다.

   o Hot numeric, string, 그리고 text box control은 값을 control에 입력한 후, Enter나 Tab을 눌렀을 때,
     또는 값을 입력한 후 마우스를 다른 곳 아무데나 클릭했을 때, commit event를 발생합니다.

   o Hot list box control은 check mode가 아닐 때, 사용자가 control이 active 되어 있는 동안 Enter를 누른
     다든지, list item을 더블클릭했을 때 commit event를 발생합니다.

   o Hot list box control은 check mode일 때, 사용자가 control이 active되어 있는 동안 스페이스바를 누른
     다거나, list item을 더블클릭했을 때 commit event를 발생합니다.

   o Hot graph control은 사용자가 화살표 키와 함께 커서를 이동할 때나, 사용자가 커서를 옮긴 후에 마우
     스 버튼을 놓으면, commit event를 발생시킵니다.

   o Hot table control은 사용자가 numeric 혹은 string cell에다 값을 입력한 후 active cell을 변경할 때,
     commit event를 발생시킵니다.

- Validate: 이 모드는 Hot 모드와 한가지 점만 빼고는 동일합니다.
commit event가 발생되기 전에 프로그램은 range-checking 속성이 Notify로 되어 있는 panel상의 모든 numeric control을 유효화(validate)시키게 됩니다. Notify 설정은 LabWindows/CVI가 미리 지정된 range를 벗어나는 control값을 체크하도록 합니다. 만약 range를 벗어나는 무효한 조건이 발견된다면, LabWindows/CVI는 control을 활성화시키고, Out of Range 라는 이름의 notification box를 표시합니다. 그리고, validate control은 사용자가 모든 control에 대해 유효한 새 값을 입력할 때까지는 commit event를 발생시키지 않습니다.
이런 과정은 GUI가 commit event를 발생시키기 전에 모든 numeric/scalar control의 값을 유효한지를 분명하게 해줍니다.
---------------------------------------------------------

쉽게 말해서,
Hot control은 숫자 컨트롤의 값이 range를 벗어나더라도 commit event가 발생되는 것이고,

Validate control은 숫자 컨트롤의 값이 range를 벗어나면,
유효한 새 값이 입력되기 전까지 commit event가 발생되지 않는 모드입니다. 즉, 숫자 컨트롤에 range를 설정한다면, Validate 모드로 하는 것이 더 적절하겠습니다.

그럼, 좋은 하루되세요.
2003-02-13 18:49:09
출처 : CVI 정보나눔(질문답변 게시판)

헐... 2003년 게시글이다... -_-
오래도 됐건만.. 난 이제서야 이런걸 찾고 하고 있다네.. ㅋㅋ

위의 내용은 'LabWindows/CVI Help'에서 'Control Modes for Generating Event(Library Reference > User Interface > Using a Graphical User > Control Modes for Generating Event)'라는 이름으로 찾을 수 있다.

'Programmings > CVI' 카테고리의 다른 글

CVI Serial통신 관련 함수  (0) 2008.04.21
CVI 시리얼 통신 예제  (0) 2008.04.16
CVI Ring control의 간단한 예  (0) 2008.04.11
CVI에서 Dynamic Link Library(DLL) 만들기  (0) 2008.02.01
CVI에서 Static Library 만들기  (0) 2008.02.01