좋은 프로그램이 갖추어야 할 덕목 중 하나는 사용자를 배려하는 것입니다.
가령 사용자가 어떤 데이터를 입력하기 전까지는 폼의 일부 컨트롤을 비 활성화시켜 두는 것입니다.
(사용자는 어린 애와 같아서 무슨 짓(?)을 할지 모르죠)
가령 다음과 같은 사용자 정의 폼이 있다고 가정합니다.
만드는 사람은 사용자가 텍스트 상자에 입력을 하리라 예상 할 것입니다. 그러나 아무 입력 없이
OK버튼을 클릭할 수 도 있겠죠. 이런 가능성에 대비하여 만드는 사람은 TextBox컨트롤의
Text값의 길이를 검사하는 코드를 넣습니다.
If Len(TextBox1.Value) =0 Then Exit Sub
또 다른 방법은 사용자가 TextBox에 무언가를 입력하기 전까지 ‘OK’라는
CommandButton컨트롤을 비 활성화 시켜 두는 겁니다.
TextBox에 입력을 하게 되면 내부적으로 Change이벤트가 발생합니다. Change 이벤트를
이용하여 사용자가 무엇을 입력하고 있는지를 검사할 수 있습니다.
TextBox컨트롤의 Change이벤트를 다음과 같이 작성합니다.
Private Sub TextBox1_Change()
CommandButton1.Enabled = CBool(Len(TextBox1.Value))
End Sub
TextBox1 컨트롤에 아무 것도 입력되지 않는다면 Len()함수는 0을 돌려줄 것입니다. 그리고
CBool()함수는 0을 False값으로 돌려줍니다.
따라서 CommandButton1의 Enabled속성은 False값을 가져 비 활성화됩니다.
그러나 TextBox1 컨트롤에 무언가 입력된다면 Len()함수는 입력된 문자의 개수를 돌려줄
것입니다. 그리고 CBool()함수는 0이 아닌 값을 True값으로 변경합니다. 따라서
CommandButton1의 Enabled속성은 True값을 가져 활성화됩니다.
두 가지의 방법 중 어느 것을 선택할지는 만드는 사람 마음입니다. 그러나 두 번째 방법은 사용자가
텍스트 상자에 무언가를 입력해야 하겠구나 하는 느낌을 줍니다. (이것은 생각해서가 아니라 다른
프로그램을 통해 얻은 학습의 결과겠죠)
그래서 두 번째 방법이 첫번째 방법보다는 나으리라 봅니다.
|