3. Visual BASIC 기본 컨트롤 |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
작성자 | 컴샘 | 등록일 | 19.09.18 | 조회수 | 207 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
3. Visual BASIC 기본 컨트롤
1. Label 컨트롤
Label 컨트롤은 사용자가 직접 변경할 수 없는 텍스트를 표시하기 위해 사용하는 그래픽 컨트롤이다. 실행 모드에서 이벤트에 응답하여 Label 컨트롤에 표시되는 텍스트를 변경하는 코드를 작성할 수 있다. 예를 들어, 사용 중인 응용 프로그램이 변경 사항을 수행하는데 수 분이 소요된다면, Label에 진행 과정에 대한 메세지를 표시할 수 있다. 또한 Label 을 사용하여 자체에 Caption 속성이 없는 TextBox와 같은 컨트롤을 식별할 수 있다. 여러 줄의 행이나 길이가 다양한 행을 나타내는 Label을 원하는 경우 AutoSize와 WordWrap 속성을 설정하면 된다. UseMnemonic 속성을 True로 설정하면 Label의 Caption 속성에 있는 문자를 선택키로 지정할 수 있다. Label 컨트롤에 선택키가 정의되어 있을 때 <Alt+지정한 키>를 누르면 탭 순서에 따라서 Label 다음 컨트롤로 포커스가 이동한다.
Label 컨트롤의 주요 속성
Label 컨트롤의 사용 Label 컨트롤은 텍스트를 표시하기 위해 사용되고 사용자가 편집할 수 없다. 폼에 있는 개체를 식별하기 위해 사용되고 특정 컨트롤을 눌렀을 때 수행하는 동작에 대한 설명을 제공한다. 예를 들어 실행 모드에서 응용 프로그램에서 이벤트 또는 프로세스에 대한 응답으로 정보를 표시할 수 있다. 많은 경우에 여러 용도로 레이블을 사용하는데, 가장 일반적인 경우는 자신의 Caption 속성이 없는 컨트롤에 레이블을 붙이기 위해 사용된다. 예를 들어 Label 컨트롤을 사용하여 설명적인 레이블을 입력란, 목록 상자, 콤보 상자 등에 추가할 수 있다. 또한 설명적인 텍스트를 폼에 추가하여 사용자에게 도움말 정보를 제공할 수도 있다. 실행 모드에서 이벤트에 대한 응답으로 Label 컨트롤이 표시하는 텍스트를 변경하는 코드를 작성할 수도 있다. 예를 들어 응용 프로그램이 변경 사항을 처리하는데 시간이 걸리면 레이블에 처리 상태 메시지를 표시할 수 있다. Label 컨트롤은 포커스를 갖지 않으므로 다른 컨트롤에 대한 선택키를 작성할 때 사용할 수도 있다.
레이블 제목 설정 Label 컨트롤에 표시되는 텍스트를 변경하려면 Caption 속성을 사용한다. 디자인 모드에서 컨트롤의 속성 창에서 선택하여 이 속성을 설정할 수 있다.
Caption 속성의 길이를 최대 1,024바이트까지 설정이 가능하다.
텍스트 맞춤 Alignment 속성을 사용하면 Label 컨트롤에 있는 텍스트의 맞춤을 왼쪽 맞춤(0, 기본), 가운데 맞춤(2), 오른쪽 맞춤(1)으로 설정할 수 있다.
크기 자동 조정 및 단어 보호 속성 기본적으로 Caption 속성에 입력한 텍스트가 컨트롤 너비를 초과하면 텍스트는 다음 행으로 넘어한다. 컨트롤의 높이를 초과하면 텍스트가 잘린다.
컨트롤이 자동으로 내용의 크기를 조정하도록 하려면 AutoSize 속성을 True로 설정하면 된다. 컨트롤이 가로로 확장되어 Caption 속성의 전체 내용을 맞춘다. 내용이 아래로 단어 보호되고 세로로 확장하려면 WordWrap 속성을 True로 설정하면 된다.
레이블을 사용하여 선택키 작성 레이블의 Caption 속성에 있는 문자를 선택키로 정의하려면 UseMnemonic 속성을 True로 설정하면 된다. Label 컨트롤에서 선택키를 정의할 때 <Alt>키를 누른 상태에서 지정할 문자를 눌러 탭 순서에 따라 다음 컨트롤로 포커스를 옮기면 된다. 선택키로 사용할 문자 앞에 앰퍼샌드(&)를 추가하여 Caption 속성이 있는 다른 컨트롤에 선택키를 작성할 수도 있다. 제목이 없는 컨트롤에 선택키를 지정하려면 컨트롤이 있는 레이블을 사용하면 된다. 레이블은 포커스를 가질 수 없으므로 탭 순서에 따라 다음 컨트롤로 포커스가 이동된다. 입력란, 그림 상자, 콤보 상자, 목록 상자, 드라이브 목록 상자, 모눈 및 이미지에 선택키를 지정하려면 이 기법을 사용하면 된다.
레이블이 있는 컨트롤에 선택키를 지정하려면 1) 레이블을 먼저 그린 다음 컨트롤을 그린다. 또는, 원하는 순서대로 컨트롤을 그리고 레이블의 TabIndex 속성을 컨트롤보다 하나 작게 설정한다.
2) 레이블에 선택키를 지정하려면 레이블의 Caption 속성에서 앰퍼샌드(&)를 사용한다. Label 컨트롤에서 앰퍼샌드를 표시하려면 UseMnemonic 속성을 False로 설정한다.
Lable 컨트롤의 예제 앞에 설명한 Label 사용 설명에 해당하는 예제를 모두다 포함하는 프로그램을 작성해보자. 먼저 위와 같이 화면을 디자인한다.
이 프로그램은 제목 설정을 누르면 내용이 바뀌고 Text 맞춤에 마우스 왼쪽 버튼을 누르면 가운데 정렬, 오른쪽 버튼을 누르면 오른쪽 정렬을 하고, 세 번째 Label을 누르면 AutoSize 속성이 설정되고, 마지막으로는 선택키를 설정하는 것인데 Alt를 누른 상태에서 1을 누르면 Text1로 2를 누르면 Text2로 포커스가 이동하는 프로그램이다.
코딩 전에 미리 설정되어 있어야 하는 것이 있는데 Label3는 WordWrap 속성이 True로 설정되어 있어야 하며 TextBox1과 TextBox2의 TabIndex 속성은 해당 label의 바로 다음 인덱스 번호를 가지고 있어야 한다.
Label 컨트롤 예제에 대한 코드 작성은 다음과 같다.
Private Sub Label1_Click() Label1.Caption = "Label 제목설정 예제" End Sub Private Sub Label2_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) If Button = 1 Then Label2.Alignment = 2 ElseIf Button = 2 Then Label2.Alignment = 1 End If End Sub
Private Sub Label3_Click() Label3.AutoSize = True End Sub
실행시켜서 마우스를 조작한 결과 화면은 아래와 같다.
2. TextBox
편집 필드 또는 편집 컨트롤이라 부르기도 하는 TextBox 컨트롤은 디자인 모드에서 사용자가 직접 입력한 정보를 표시하거나 실행 모드에서 사용자가 입력한 코드의 내용 즉, Text 속성에서 기술한 내용을 출력하는 일을 한다. TextBox 컨트롤에 있는 여러 행의 텍스트를 표시하려면 MultiLine 속성을 True로 설정한다. 여러 행을 갖는 TextBox에 수평 스크롤 막대가 없으면 TextBox의 크기가 재조정되어도 텍스트는 자동 줄바꿈하여 표시된다. TextBox의 스크롤 막대 결합을 사용자 정의하려면 ScrollBars 속성을 설정한다. MultiLine 속성을 True로 설정하면 TextBox의 텍스트 정렬을 설정하기 위해 Alignment 속성을 사용할 수 있다. 기본값으로 텍스트는 왼쪽으로 정렬된다. MultiLine 속성이 False으로 설정되면 Alignment 속성은 효과가 없다.
TextBox 컨트롤의 사용 TextBox 컨트롤은 실행 모드에서 사용자가 입력한 정보나 디자인 모드 또는 실행 모드에서 컨트롤의 Text 속성에 지정한 정보를 표시하는데 사용된다. 일반적으로, TextBox 컨트롤은 편집 가능한 텍스트에 사용해야 하지만 Locked 속성을 True로 설정하여 읽기 전용으로 만들 수 있다. 입력란에서 여러 줄을 표시할 수 있다. 그러면 컨트롤의 크기에 맞게 문자열을 다음 행으로 넘기고 기본 서식을 지정할 수 있다.
Text 속성 TextBox 컨트롤에 입력한 텍스트는 Text 속성에 포함된다. 기본적으로 입력란에 최대 2,048문자를 입력할 수 있다. 컨트롤의 MultiLine 속성을 True로 설정하면 32K까지 텍스트를 입력할 수 있다.
텍스트 서식 지정 텍스트가 컨트롤 경계를 초과하면 MultiLine 속성을 True로 설정하고 수평 스크롤 막대나 수직 스크롤 막대 또는 둘 다를 추가하도록 ScrollBars 속성을 설정하여 스크롤 막대를 추가할 수 있다. 그러면 컨트롤이 자동으로 텍스트를 다음 행으로 넘긴다. 그러나 스크롤 막대가 표시되어 가로 편집 영역이 증가되어 수평 스크롤 막대를 추가할 경우 자동 텍스트 보호 기능을 사용할 수 없다. MultiLine 속성이 True로 설정되면 텍스트를 왼쪽 맞춤, 가운데, 오른쪽 맞춤으로 정렬할 수도 있다. 기본으로 텍스트는 왼쪽 맞춤된다. MultiLine 속성이 False로 설정될 경우 Alignment 속성은 무시된다.
텍스트 선택 SelStart, SelLength 및 SelText 속성을 사용하여 입력란에 있는 삽입점 및 선택 동작을 제어할 수 있다.
암호 입력란 작성 암호 상자는 입력란으로서 사용자가 암호를 입력할 수 있다. 그러면 별표와 같은 문자가 나타난다. Visual Basic의 문자열 속성 중 두 가지 PasswordChar와 MaxLength를 사용하여 암호 입력란을 쉽게 작성할 수 있다. PasswordChar는 입력란에 표시되는 문자를 지정한다. 예를 들어 암호 상자에 별표를 표시하려면 속성 창의 PasswordChar 속성에 *를 지정한다. MaxLength를 사용하여 입력란에 입력할 수 있는 문자 수를 결정한다. MaxLength를 초과하면 시스템은 소리를 내고 입력란은 더 이상 문자를 받아들이지 않는다.
입력란에서 키 입력 취소 KeyPress 이벤트를 사용하여 문자의 입력을 제한하거나 변형할 수 있다. KeyPress 이벤트는 인수인 keyascii를 사용한다. 이 인수는 입력란에 입력한 문자에 해당하는 숫자(ASCII)를 나타내는 정수이다. 다음 예제는 입력한 키 입력을 취소하는 방법을 보여준다. 입력한 문자가 지정한 범위 내에 있지 않으면 프로시저는 KeyAscii를 0으로 설정하여 문자 입력을 취소한다. 이 예제에 대한 입력란의 이름은 txtEnterNums이고 프로시저는 입력란이 숫자 이외의 문자를 받지 않도록 한다.
KeyAscii를 문자의 ASCII 값과 직접 비교한다.
Private Sub EnterNumtxt_KeyPress (KeyAscii As Integer) If KeyAscii < Asc("0") Or KeyAscii > Asc("9") Then KeyAscii = 0 '문자를 취소 Beep '오류 알림을 소리로 End If End Sub
읽기 전용 입력란 작성 Locked 속성을 사용하여 사용자가 입력란에 있는 내용을 편집하지 못하도록 할 수 있다. 변경하지 않고 입력란에 있는 내용을 이동하거나 강조 표시하려면 Locked 속성을 True로 설정한다. Locked 속성을 True로 설정하면 복사 명령이 입력란에서 작동되지만 잘라내기와 붙여넣기 명령은 사용할 수 없다. Locked 속성은 실행 모드에서 사용자 상호 작용에만 영향을 준다.
입력란의 Text 속성을 변경하여 실행 모드에서 입력란의 내용을 프로그램에 따라 변경할 수 있다.
TextBox 컨트롤의 주요 속성
TextBox 컨트롤 사용 예제
아래의 예제는 위의 사용 방법 중에서 텍스트 서식 지정 및 텍스트 선택에 관한 예제이다. 먼저 왼쪽과 같은 폼을 만든다. 이 예제는 먼저 프로그램이 시작될 때부터 Text를 출력하고 사용자가 버튼을 누를 때마다 각각의 속성을 설정하는 프로그램이다. 그리고 (숫자로 변환)버튼을 누르면 현재 입력한 내용이 숫자인지를 작은 TextBox에 출력하고, (날짜로 변환) 버튼을 누르면 현재 입력한 내용이 날짜로 변환 될 수 있는지를 작은 TextBox에 출력한다. (전체 선택 후 변환)버튼을 누르면 현재 출력된 텍스트를 전부 선택하여 반전시키는 프로그램이다.
먼저 설정해 놓아야 할 것은 첫 번째 TextBox (Intxt)의 MultiLine 속성을 True로 해 놓아야 한다는 것이다. 이 속성은 읽기 전용 속성이다. 즉, 디자인 모드에서만 변형할 수 있다. 그리고 ScrollBars 속성을 "양방향-2"로 미리 설정한다.
이제 다음과 같이 코딩을 하면 된다.
Private Sub 전체선택cmd_Click() '문자열 선택을 위해서는 반드시 해당 컨트롤을 활성화시켜야 한다. Intxt.SetFocus Intxt.SelStart = 0 Intxt.SelLength = Len(Intxt.Text) End Sub Private Sub 날짜cmd_Click() If IsDate(Intxt.Text) Then Resulttxt.Text = "날짜로 변형될 수 있습니다." Else Resulttxt.Text = "날짜로 변형될 수 없습니다." End If End Sub Private Sub cmdNumeric_Click() If IsNumeric(txtInput.Text) Then txtIsResult.Text = "숫자로 변형 가능." Else txtIsResult.Text = "숫자로 변형 불가능." End If End Sub Private Sub Form_Load() Intxt.Text = "동해물과 백두산이 마르고 닳도록" + _ "하느님이 보우하사 우리 나라 만세" + _ vbCrLf + " 무궁화 삼천리 화려 강산 " + _ "대한 사람 대한으로 길이 보전하세" End Sub
위 소스 코드에서 사용된 함수의 기능은 다음과 같다.
3. CommandButton 컨트롤
컴퓨터의 시작, 중단, 종료 시 CommandButton 컨트롤을 사용한다. CommandButton이 선택된 경우 눌러진 상태로 표시된다. 그래서 누름 단추 또는 커맨드 버튼이라고도 부른다. CommandButton 컨트롤에 텍스트를 표시하려면 Caption 속성을 설정하고, 마우스를 눌러 CommandButton을 선택할 수 있다. <Enter>키를 눌러 버튼을 선택하려면 Default 속성을 True로 설정하고 <Esc>키를 눌러 단추를 선택하려면 CommandButton의 Cancel 속성을 True로 설정한다.
CommandButton 컨트롤의 주요 속성
CommandButton 예제 컨트롤 예제를 사용자가 아이디와 패스워드를 입력해서 승인을 받을 수 있는 사용자 인증 프로그램을 작성해 보자. ID는 "liguy"로 하고 패스워드를 "VBasic"이라고 했을 때 사용자가 이를 정확히 입력하면 "올바른 아이디와 패스워드입니다."라는 메세지를 출력하고 3번 이상 틀리면 "다시 한번 확인하시고 시도하세요."라는 메세지를 출력하고 프로그램을 종료하는 프로그램을 만든다.
화면 디자인하기 위 그림과 같이 디자인하고 지시되어 있는 대로 속성을 설정하면 된다.
CommandButton에 아이콘을 넣으려면 Style -> 1-그래픽 Picture -> 아이콘을 찾아서 선택
구현하기 위에 그림처럼 설정을 하고 일단 실행시켜 보고 확인 단추를 누른다. 그럼 누르는 순간 그림이 바뀌는 것을 알 수 있다. 이것은 DownPicture 속성에 그림을 다른 것으로 설정했기 때문이다. 그리고 버튼의 속성 중 확인 버튼에 Default 속성을 True로 해주고 취소 버튼에 Cancel 속성을 True로 해주고 나서 Enter키를 누르면 확인 버튼에 기술된 이벤트 코드를 실행하고 Esc키를 누르면 취소 버튼에 기술된 이벤트 코드를 실행하게 된다. 그리고 한 가지 더 TextBox 중 Password를 입력받는 TextBox는 글자가 보이면 안 되는데 그럴 때에는 속성 중 PasswordChar에 '*'라고 써넣는다. 그렇게 하면 패스워드에 "*"표만 찍힌다.
위에서 설명한 기능을 구현해 보면 다음과 같다. 소스코드보기
' 입력 횟수를 세기 위한 변수 Dim Cnt As Integer Private Sub 취소cmd_Click() Unload Me End Sub Private Sub 확인cmd_Click() If IDtxt.Text = "liguy" And Passtxt.Text = "VBasic" Then ' 입력한 아이디와 패스워드를 확인 ' 메세지 박스 출력 MsgBox "입력한 정보가 정확합니다.", vbOKOnly, "입력 확인" Else ' 틀린 메세지 출력 MsgBox "입력한 정보가 틀렸습니다.", vbOKOnly, "입력 확인" ' 카운트를 증가시킨다. Cnt = Cnt + 1 ' 카운트가 3인지를 검사하여 3이면 메세지를 출력하고 ' 프로그램을 종료한다. If Cnt >= 3 Then MsgBox "다시 한번 확인하시고 시도하세요", vbOKOnly, "프로그램 종료" Unload Me End If IDtxt.Text = " " ' 이미 입력한 정보를 지우고 새로 입력받는다. Passtxt.Text = " " IDtxt.SetFocus End If End Sub
실행 결과 보기
|
다음글 | 2. Visual Basic의 기본 조작 |
---|