본문 바로가기

Window Programming/VB

탭 대화상자

ssTab컨트롤은 한 개의 탭이 다른 컨테이너로 작용할 뿐만 아니라, 화면공간을 최대한 절약할 수 있기 때문에 최근에 가장 유용하게 쓰이는 컨트롤 중의 하나이다.

ssTab컨트롤의 추가

  1. 도구상자의 팝업메뉴를 호출, [구성요소]를 선택하거나 [프로젝트]메뉴의 [구성요소]를 선택한다.
  2. 구성요소 대화상자의 [컨트롤]탭 리스트에서 Microsoft Tabbed Dialog Control6.0항목을 체크하면 도구상자에 컨트롤이 추가된다.

ssTab의 속성

[일반]탭에서는 다음과 같은 것들을 결정할 수 있다.

  • Current Tab : 탭의 인덱스를 의미한다. 실제 탭을 구분할 때 쓰인다. 디폴트는 0이다.
  • Tab Caption : 현재 탭(index)에 나타난 탭의 제목을 설정한다.
  • Tab Count : 탭의 갯수를 결정한다. 디폴트는 3으로 되어있기 때문에, 폼에 추가될 때 3개의 탭만 보인다.
  • Tabs Per Row : 한 행에 배열될 탭의 수를 결정한다. 마찬가지로 디폴트는 3으로 되어있다.
  • Style : 두 가지의 속성이 있다. 0-ssStyleTabedDialog는 일반ssTab의 스타일이고 1-ssStylePropertyPage의 형태는 주로 속성을 결정하기 위해 마련된 속성페이지 대화상자를 만들 때 주로 사용된다.
  • Picture : 탭에 그림을 넣을 때 사용한다.

ssTab을 이용한 학적정보입력 프로그램 예제이다.

속성설정
form1
└ name : frmTabDialog
└ caption : tab 대화상자

label1
└ name : lblTitle
└ caption : 학생 인사기록

command1
└ name : cmdOk
└ caption : 확인(&O)

command2
└ name : cmdCancel
└ caption : 취소(&C)

ssTab
└ name : mstPerson
└ tab Count : 4
└ style : 0-ssStyleTabedDialog
└ TabsPerRow : 4
   └ 탭0.caption : 이름
      └  text1.name : txtNamek
      └   text2.name : txtNameE
      └  label1.caption : 한글
      └  label2.caption : 영문
   └  탭1.caption : 소속
      └  option1.name : optHuman
      └  option1.caption : 인문대
      └  option2.name : optEngineer
      └  option2.caption : 공대
      └  combo1.name : cmbSosuck
      └  combo1.enabled : false
      └  combo1.sorted : true
   └  탭2 caption : 상태
      └  option1.name : optAttend
      └  option1.caption : 재학
      └  option2.name : optTemp
      └  option2.caption : 휴학
      └  option3.name : optQuit
      └  option3.caption : 제적
   └  탭3 caption : 학번
      └  label1.name : lblNumber
      └  label1.caption : 학번
      └  text1.name : txtNumber

소스코드
Private Sub cmdOk_Click()
    Dim msg
    msg = "이름 : " & txtNameK & "(" & txtNameE & ")" & Chr(10)
    msg = msg & "소속 : " & cmbSosuck & Chr(10)

    If optAttend Then
        msg = msg & "상태 : 재학" & Chr(10)
    ElseIf optTemp Then
        msg = msg & "상태 : 휴학" & Chr(10)
    ElseIf optQuit Then
        msg = msg & "상태 : 제적" & Chr(10)
    End If

    msg = msg & "학번 : " & txtNumber
    MsgBox msg, vbOKOnly, "입력사항"
End Sub

Private Sub Form_Load()
    txtNameK = ""
    txtNameE = ""
    txtNumber = ""
    Frame1.Caption = ""
    Frame2.Caption = ""
End Sub

Private Sub optEngineer_Click()
    cmbSosuck.Enabled = True
    cmbSosuck.Clear
    cmbSosuck.AddItem "전기공학"
    cmbSosuck.AddItem "건축공학"
    cmbSosuck.AddItem "컴퓨터공학"
    cmbSosuck.AddItem "산업공학"
End Sub

Private Sub optHuman_Click()
    cmbSosuck.Enabled = True
    cmbSosuck.Clear
    cmbSosuck.AddItem "법학"
    cmbSosuck.AddItem "무역학"
    cmbSosuck.AddItem "행정학"
    cmbSosuck.AddItem "국문학"
    cmbSosuck.AddItem "경영정보학"
End Sub

실행모드시, [ctrl+tab]키를 누르면 탭사이를 이동할 수 있다.