Transcript IT COOKBOOK
IT COOKBOOK
Chap 4. 컨트롤 배우기 2
한빛미디어㈜
-1-
ehanbit.net
IT COOKBOOK
01. Shape 컨트롤/ Line 컨트롤
02. 수직/수평 스크롤바 컨트롤
03. 타이머 컨트롤
04. 이미지 컨트롤과 픽처박스 컨트롤
05. 파일 시스템 컨트롤
06. 컨트롤 배열
한빛미디어㈜
-2-
ehanbit.net
Shape 컨트롤과 Line 컨트롤
IT COOKBOOK
Shape 컨트롤
특징
다양한 종류의 다각형을 보여주는 단지 시각적인 효과를 주기
위해 사용되는 컨트롤
포커스를 가질 수 없음
6가지 형태의 다각형을 그릴 수 있음
주요 속성
한빛미디어㈜
-3-
ehanbit.net
IT COOKBOOK
Shape 속성에서 사용하는 비주얼 베이직 상수
Shape 속성으로 그릴 수 있는 다각형
한빛미디어㈜
-4-
ehanbit.net
IT COOKBOOK
FillStyle 속성에서 사용하는 비주얼 베이직 상수
채색 무늬 종류
한빛미디어㈜
-5-
ehanbit.net
IT COOKBOOK
BorderStyle 속성에서 사용하는 비주얼 베이직 상수
테두리 선의 종류
한빛미디어㈜
-6-
ehanbit.net
[실습하기] 도형의 모양 변경하기
IT COOKBOOK
폼에 컨트롤 추가하기
11
한빛미디어㈜
-7-
ehanbit.net
IT COOKBOOK
각 컨트롤의 속성 설정
한빛미디어㈜
-8-
ehanbit.net
IT COOKBOOK
cmdDisp 버튼의 Click 이벤트 핸들러 작성
Form_Load 이벤트 핸들러
Private Sub Form_Load()
cboShape.AddItem "사각형"
cboShape.AddItem "정사각형"
cboShape.AddItem "타원형"
cboShape.AddItem "원형"
cboShape.AddItem "둥근사각형"
cboShape.AddItem "둥근정사각형"
cboShape.ListIndex = 0
cboFillColor.AddItem "빨간색"
cboFillColor.AddItem "파랑색"
cboFillColor.AddItem "초록색"
cboFillColor.AddItem "다홍색"
cboFillColor.AddItem "노랑색"
cboFillColor.ListIndex = 0
cboBorder.AddItem "투명"
cboBorder.AddItem "단색"
cboBorder.AddItem "대시"
cboBorder.AddItem "점"
cboBorder.AddItem "대시-점"
cboBorder.AddItem "대시-점-점"
cboBorder.AddItem "내부단색"
cboBorder.ListIndex = 0
cboFillStyle.AddItem "단색"
cboFillStyle.AddItem "투명"
cboFillStyle.AddItem "수평선"
cboFillStyle.AddItem "수직선"
cboFillStyle.AddItem "상향대각선"
cboFillStyle.AddItem "하향대각선"
cboFillStyle.AddItem "교차"
cboFillStyle.AddItem "대각선교차"
cboFillStyle.ListIndex = 0
한빛미디어㈜
End Sub
-9-
ehanbit.net
IT COOKBOOK
도형의 종류를 선택하는 이벤트 핸들러
Private Sub cboShape_Click()
Shape1.Shape = cboShape.ListIndex
End Sub
채색 무늬를 선택하는 Click 이벤트 핸들러
Private Sub cboFillStyle_Click()
Shape1.FillStyle = cboFillStyle.ListIndex
End Sub
테두리 선의 종류를 변경하는 Click 이벤트 핸들러
Private Sub cboBorder_Click()
Shape1.BorderStyle = cboBorder.ListIndex
End Sub
한빛미디어㈜
- 10 -
ehanbit.net
IT COOKBOOK
채색 무늬를 선택하는 Click 이벤트 핸들러
Private Sub cboFillColor_Click()
Select Case cboFillColor.ListIndex
Case 0
Shape1.FillColor = vbRed
Case 1
Shape1.FillColor = vbBlue
Case 2
Shape1.FillColor = vbGreen
Case 3
Shape1.FillColor = vbMagenta
Case 4
Shape1.FillColor = vbYellow
End Select
End Sub
한빛미디어㈜
- 11 -
ehanbit.net
IT COOKBOOK
종료 버튼의 이벤트 핸들러
Private Sub cmdExit_Click()
End
End Sub
프로그램 실행
한빛미디어㈜
- 12 -
ehanbit.net
IT COOKBOOK
01. Shape 컨트롤/ Line 컨트롤
02. 수직/수평 스크롤바 컨트롤
03. 타이머 컨트롤
04. 이미지 컨트롤과 픽처박스 컨트롤
05. 파일 시스템 컨트롤
06. 컨트롤 배열
한빛미디어㈜
- 13 -
ehanbit.net
수직/수평 스크롤바
IT COOKBOOK
스크롤바
특징
종류 : 수평 스크롤 바(HScrollBar)와 수직 스크롤 바(VScrollBar)
스크롤바의 속성
한빛미디어㈜
- 14 -
ehanbit.net
[실습하기] 도형 색 바꾸기
IT COOKBOOK
폼에
컨트롤추가하기
한빛미디어㈜
11
- 15 -
ehanbit.net
IT COOKBOOK
스크롤바의 Change 이벤트 핸들러 작성
Private Sub hsbRed_Change()
shpRect.FillColor = RGB(hsbRed.Value, hsbGreen.Value, hsbBlue.Value)
lblRedValue.Caption = hsbRed.Value
End Sub
Private Sub hsbGreen_Change()
shpRect.FillColor = RGB(hsbRed.Value, hsbGreen.Value, hsbBlue.Value)
lblGreenValue.Caption = hsbGreen.Value
End Sub
Private Sub hsbBlue_Change()
shpRect.FillColor = RGB(hsbRed.Value, hsbGreen.Value, hsbBlue.Value)
lblBlueValue.Caption = hsbBlue.Value
End Sub
한빛미디어㈜
- 16 -
ehanbit.net
IT COOKBOOK
프로그램 실행
RGB 함수
Red 성분, green 성분, blue 성분을 조합하여 색상을 설정하는 함수
색 성분은 0에서 255 사이의 범위를 지정하여 사용
형식 : RGB(Red 성분, Green 성분, Blue 성분)
반환값 : RGB 색 값을 나타내는 long형 정수 반환
한빛미디어㈜
- 17 -
ehanbit.net
IT COOKBOOK
01. Shape 컨트롤/ Line 컨트롤
02. 수직/수평 스크롤바 컨트롤
03. 타이머 컨트롤
04. 이미지 컨트롤과 픽처박스 컨트롤
05. 파일 시스템 컨트롤
06. 컨트롤 배열
한빛미디어㈜
- 18 -
ehanbit.net
타이머 컨트롤(Timer Control)
IT COOKBOOK
타이머 컨트롤
특징
규칙적으로 타이머(Timer) 이벤트를 발생시켜 일정한 간격으
로 설정된 내용을 반복 실행할 수 있도록 하기 위해 사용되는
컨트롤
폼에 배치하면 아이콘 모양으로 표시되지만 실행하면 폼에 보
이지 않게 됨.
타이머 컨트롤
폼에 추가된 타이머 컨트롤
한빛미디어㈜
- 19 -
ehanbit.net
IT COOKBOOK
타이머의
한빛미디어㈜
중요 속성
속성
설명
interval
타이머 이벤트의 실행 간격 사이의 값을 밀리세컨드(1/1000초)
로 반환하거나 설정.
설정 값이 1000이면 1초 의미
최고값은 65535.
Enabled
타이머 이벤트의 수행을 실행하거나 중지할 수 있음.
True인 경우 interval 값의 간격으로 타이머 이벤트 발생.
- 20 -
ehanbit.net
[실습하기] 카운트하기
IT COOKBOOK
폼에 컨트롤 추가하기
한빛미디어㈜
- 21 -
ehanbit.net
IT COOKBOOK
컨트롤의 이벤트 핸들러 작성
Form_Load 이벤트 핸들러
Dim Time_Count As Long
Private Sub Form_Load()
lblCount.Caption = "00:00"
Time_Count = 0
End Sub
커맨드 버튼 이벤트 핸들러
Private Sub cmdCount_Click()
Timer1.Enabled = True
End Sub
한빛미디어㈜
- 22 -
ehanbit.net
IT COOKBOOK
타이머 이벤트 핸들러
Private Sub Timer1_Timer()
Dim Min, Sec As Integer
Dim Min_str, Sec_str As String
Dim View_Count As String
Min = Time_Count / 60
Sec = Time_Count Mod 60
Min_str = Format(Str(Min), "00")
Sec_str = Format(Str(Sec), "00")
‘분을 만듬
‘초를 만듬
View_Count = Min_str + ":" + Sec_str
' 분,초를 나타내는 시간 형식 문자열로 바꿈
lblCount.Caption = View_Count
Time_Count = Time_Count + 1
End Sub
한빛미디어㈜
- 23 -
ehanbit.net
IT COOKBOOK
프로그램 실행
한빛미디어㈜
- 24 -
ehanbit.net
IT COOKBOOK
01. Shape 컨트롤/ Line 컨트롤
02. 수직/수평 스크롤바 컨트롤
03. 타이머 컨트롤
04. 이미지 컨트롤과 픽처박스 컨트롤
05. 파일 시스템 컨트롤
06. 컨트롤 배열
한빛미디어㈜
- 25 -
ehanbit.net
이미지 컨트롤과 픽처박스 컨트롤
IT COOKBOOK
이미지 컨트롤(Image Control)
특징
원하는 그림을 읽어오는 시각적인 컨트롤
이미지 컨트롤에서 읽어올 수 있는 그림의 종류
비트맵(Bitmap), 아이콘(Icon), 메타 파일, JPEG, GIF
이미지 컨트롤
폼에 추가된 이미지 컨트롤
한빛미디어㈜
- 26 -
ehanbit.net
IT COOKBOOK
체크박스 컨트롤과 옵션버튼 컨트롤의 특징
자주 사용하는 속성
한빛미디어㈜
- 27 -
ehanbit.net
[실습하기] 그림 읽어오기
IT COOKBOOK
폼에 컨트롤 추가하기
폼
Name 속성 : Form1
한빛미디어㈜
이미지 컨트롤
Name 속성 : Image1
- 28 -
ehanbit.net
IT COOKBOOK
Picture 속성 오른쪽에 있는 버튼( )을 눌러 그림 로드
대화상자를 표시하고 그림 선택
그림 로드 대화상자
한빛미디어㈜
- 29 -
ehanbit.net
IT COOKBOOK
그림을 선택하면 이미지가 삽입되고 속성 창의 Picture
속성에는 (비트맵)이라고 표시
이미지 컨트롤에 삽입된 그림
한빛미디어㈜
- 30 -
ehanbit.net
[실습하기] LoadPicture 함수 이용하기
IT COOKBOOK
폼에 컨트롤 추가하고 속성 설정
컨트롤의 속성
한빛미디어㈜
- 31 -
ehanbit.net
IT COOKBOOK
버튼 컨트롤의 이벤트 핸들러 작성
Private Sub cmdImageLoad_Click()
imgLoad.Picture = LoadPicture("e:\vb_image\2부\4장\4장3절\wflower.gif")
End Sub
프로그램 실행
실행 결과
한빛미디어㈜
- 32 -
ehanbit.net
IT COOKBOOK
Stretch 속성 이용하기
이미지 컨트롤의 크기에 맞게 이미지의 크기를 재조정하기 위
해서 사용
Stretch = True
Stretch = False
한빛미디어㈜
- 33 -
ehanbit.net
IT COOKBOOK
SavePicture 함수를 사용하여 그림 저장하기
이미지 컨트롤에서 읽어온 이미지를 파일로 저장
비트맵, 메타 파일, 아이콘 등은 동일한 파일 형태로 저장
GIF와 JPEG 파일은 저장할 때는 비트맵(bmp)으로만 저장
구문 형식
savePicture 이미지 컨트롤(또는 픽처박스 컨트롤), 파일 이름
사용 예
Private Sub cmdSave_Click()
SavePicture Image1, "e:\vb\vb_image\2부\4장\4장3절\girl.bmp"
End Sub
이미지 컨트롤 이름
한빛미디어㈜
- 34 -
저장할 파일 이름
ehanbit.net
IT COOKBOOK
픽처박스 컨트롤(Picture Control)
특징
이미지 컨트롤과 마찬가지로 그림을 읽어오는 컨트롤
컨테이너의 기능을 가지고 있어서 다른 컨트롤들을 픽처박스
컨트롤 안에 포함시킬 수 있음
픽처박스 컨트롤
폼에 추가된 픽처박스 컨트롤
한빛미디어㈜
- 35 -
ehanbit.net
IT COOKBOOK
픽처박스 컨트롤에 포함된 컨트롤
주요 속성
한빛미디어㈜
- 36 -
ehanbit.net
IT COOKBOOK
Autosize 속성
컨트롤의 크기가 이미지의 크기에 맞춰짐
AutoSize = False
AutoSize = True
AutoSize 속성에 따른 그림 출력
AutoSize 속성이 True이면 실제 이미지와 동일한 크기로 컨트롤의 크기가 변경되어 출력된
다. AutoSize의 속성이 False일 때 컨트롤의 크기보다 큰 이미지를 읽어오면 이미지가 잘려서
출력된다
한빛미디어㈜
- 37 -
ehanbit.net
IT COOKBOOK
픽처박스에서 사용할 수 있는 메소드
Print 메소드 : PictureBox 컨트롤에 문자열을 출력
Circle, Line, Point, Pset 메서드 : PictureBox에 그림을 그리는 데
사용
PaintPicture 메서드 : PictureBox 컨트롤 내로 이미지를 옮기
고 여러 가지 서로 다른 이미지를 신속하게 바꾸어 애니메이
션을 만들 수도 있음.
DrawWidth, FillColor, FillStyle 속성 : 그림의 모양 정의
그래픽 관련 메서드
한빛미디어㈜
- 38 -
ehanbit.net
IT COOKBOOK
그래픽 메소드
Circle 메소드
원, 타원, 아크(호)를 그리기 위해 사용
구문 형식
Circle(x, y), 반지름, [색, 시작, 끝, 옵션]
x, y : 중심 좌표
반지름 : 원의 반지름
[색] : 원의 테두리 선 색을 나타내고, [색]이 생략된 경우 ForeColor
속성에 설정된 값으로 대치
[시작]과 [끝] : 아크의 시작 위치와 아크의 끝 위치를 설정하는 항
목
[옵션] : 원의 가로와 세로의 비율 값을 지정하기 위해 사용
한빛미디어㈜
- 39 -
ehanbit.net
IT COOKBOOK
예
Private Sub cmdDraw_Click()
Picture1.Circle (1200, 1100), 600, vbRed
Picture1.Circle (3200, 1100), 600, vbRed, , , 0.7
End Sub
Circle 메소드를 사용하여 원 그리기
한빛미디어㈜
- 40 -
ehanbit.net
IT COOKBOOK
Line 메소드
수직선, 수평선, 사각형, 색칠된 사각형을 그릴 수
구문 형식
Line(x1, y1)-(x2, y2), [선색], [B][F]
x1, y1 : 시작 좌표
x2, y2 : 끝 좌표
[선색] : 그려지는 선의 색상 설정, [선색]을 생략한 경우는
ForeColor 속성에 설정되어 있는 값으로 대치
BF를 사용하면 색칠된 사각형이 그려지고, B를 사용하면 좌표에 해
당하는 사각형이 그려짐
한빛미디어㈜
- 41 -
ehanbit.net
IT COOKBOOK
예
Line 메서드를 사용한 선 그리기
Picture1.Line (100, 2000)-(3000, 2500), vbBlue
Picture1.Line (100, 2600)-(3000, 3100), vbBlue, BF
한빛미디어㈜
- 42 -
ehanbit.net
IT COOKBOOK
Pset(x, y) 메소드
점을 출력하기 위해 사용하는 메소드
구문 형식
PSet (x, y), [색]
x, y : 점을 출력할 좌표
[색] : 출력할 점의 색 표시
예
한빛미디어㈜
점 출력
Private Sub cmdDraw_Click()
Picture1.PSet (1200, 1100), vbRed
End Sub
선 출력
Private Sub cmdDraw_Click()
For i=600 to 3000
Picture1.PSet (i, 1100), vbBlue
Next
End Sub
- 43 -
ehanbit.net
IT COOKBOOK
점 출력
Pset 메소드를 사용한
선 출력
한빛미디어㈜
- 44 -
ehanbit.net
IT COOKBOOK
01. Shape 컨트롤/ Line 컨트롤
02. 수직/수평 스크롤바 컨트롤
03. 타이머 컨트롤
04. 이미지 컨트롤과 픽처박스 컨트롤
05. 파일 시스템 컨트롤
06. 컨트롤 배열
한빛미디어㈜
- 45 -
ehanbit.net
파일시스템 컨트롤
IT COOKBOOK
파일시스템 컨트롤
드라이브 리스트박스 컨트롤
드라이브명을 지정
디렉토리 리스트박스 컨트롤
드라이브 리스트박스에서 설정된 드라이블의 디렉토리 표시
파일 리스트박스 컨트롤
디렉토리 리스트박스 컨트롤에서 설정된 디렉토리에 있는 파
일 표시
한빛미디어㈜
- 46 -
ehanbit.net
드라이브리스트박스 컨트롤(DriveListBox
Control)
IT COOKBOOK
드라이브리스트박스 컨트롤
특징
시스템의 모든 드라이브의 정보를 콤보박스 컨트롤의 목록에
자동으로 등록
콤보 텍스트에 현재 드라이브가 초기 설정
프로그램 실행 중에 드라이브를 선택 가능
선택된 드라이브는 ListIndex 속성을 사용하여 위치를 알아내
거나 List 속성을 이용하여 선택한 문자열을 알아낼 수 있음
디렉토리 리스트박스와 연결하여 주로 사용하며드라이브 리
스트박스의 드라이브가 변경되면 디렉토리 리스트박스의 내
용이 자동으로 변경
한빛미디어㈜
- 47 -
ehanbit.net
IT COOKBOOK
자주 사용하는 속성
드라이브 리스트박스 컨트롤과 디렉터리 리스트박스
컨트롤 연결
Dir1.Path=Drive1.Drive
한빛미디어㈜
- 48 -
ehanbit.net
[실습하기] 드라이브 명 표시하기
IT COOKBOOK
폼에 컨트롤 추가하고 속성 설정
컨트롤의 속성 설정
한빛미디어㈜
- 49 -
ehanbit.net
IT COOKBOOK
선택한 드라이브에 대한 내용이 레이블 컨트롤에 표시
되도록 이벤트 핸들러 작성
Private Sub Drive1_Change()
Label1.Caption = Drive1.List(Drive1.ListIndex)
End Sub
프로그램 실행
한빛미디어㈜
- 50 -
ehanbit.net
디렉터리 리스트박스 컨트롤(DirListBox
Control)
IT COOKBOOK
디렉터리 리스트 박스 컨트롤
특징
현재 드라이브의 디렉토리 구조를 리스트박스에 표시
다른 드라이브의 디렉토리 구조를 보고 싶으면 Drive 속성을
변경
파일 리스트박스, 드라이브 리스트박스 컨트롤과 함께 사용
디렉터리 리스트박스 컨트롤
한빛미디어㈜
폼에 추가된 디렉터리 리스트 박스 컨트롤
- 51 -
ehanbit.net
IT COOKBOOK
주요 속성
한빛미디어㈜
- 52 -
ehanbit.net
[실습하기] 디렉터리 표시하기
IT COOKBOOK
폼에 컨트롤 추가하기
각 컨트롤의 속성 설정
한빛미디어㈜
- 53 -
ehanbit.net
IT COOKBOOK
드라이브를 변경하면 변경된 드라이브의 디렉토리 구조
를 보여줄 수 있도록 이벤트 핸들러 작성
Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub
프로그램 실행
한빛미디어㈜
- 54 -
ehanbit.net
파일 리스트 박스 컨트롤
IT COOKBOOK
파일 리스트 박스 컨트롤(FileListBox Control)
특징
현재 선택되어 있는 디렉토리의 파일 목록을 출력해 주는 컨
트롤
디렉토리 리스트 박스 컨트롤, 드라이브 리스트 박스 컨트롤
과 함께 사용
해당 디렉토리에 있는 파일이 보이도록 하려면 Path 속성을
이용하여 디렉토리 리스트박스와 파일 리스트박스 컨트롤을
연결
구문 형식
File1.Path = Dir1.Path
한빛미디어㈜
- 55 -
ehanbit.net
IT COOKBOOK
주요 속성
한빛미디어㈜
- 56 -
ehanbit.net
IT COOKBOOK
Pattern 속성
파일 리스트박스 컨트롤에 표시되는 파일의 조건을 와일드 카
드(*)를 사용하여 설정하기 위해 사용
특정 확장자를 가진 파일만을 표시하거나, 여러 조건을 한꺼
번에 설정 가능
특정 확장자를 가진 파일을 표시
File1.Pattern = "*. wmf"
여러 확장자를 가진 파일을 표시
File1.Pattern = "*. wmf ; *.ico ; *.jpg"
한빛미디어㈜
- 57 -
ehanbit.net
IT COOKBOOK
MultiSelect 속성
파일 리스트박스에 있는 파일 목록 중에서 여러 개의 파일을
선택할 수 있도록 하기 위해 사용
MultiSelect 속성의 값
0- 없음, 1- 단순형, 2- 확장형 사용
MultiSelect 속성을 사용한
파일 선택
한빛미디어㈜
- 58 -
ehanbit.net
[실습하기] 그래픽 뷰어 만들기
11
12
추가하기
폼에
컨트롤
12
11
IT COOKBOOK
드라이브 리스트 박스: Drive1
디렉토리 리스트박스: Dir1
한빛미디어㈜
- 59 -
ehanbit.net
IT COOKBOOK
이벤트 핸들러 작성
드라이브 리스트박스를 변경했을 경우 디렉토리 리스트박스의 내용이
변경되도록 이벤트 핸들러
Private Sub Drive1_Change()
Dir1.Path = Drive1.Drive
End Sub
디렉토리 리스트박스의 정보를 파일 리스트박스로 전송하도록 이벤트 핸들러
Private Sub Dir1_Change()
File1.Path = Dir1.Path
End Sub
한빛미디어㈜
- 60 -
ehanbit.net
IT COOKBOOK
Form_Load 이벤트 핸들러
Private Sub Form_Load()
cboExtend.AddItem "GIF 파일(*.gif)", 0
cboExtend.AddItem "JPG 파일(*.jpg)", 1
cboExtend.AddItem "아이콘 파일(*.wmf *.ico)", 2
cboExtend.AddItem "모든 파일(*.*)"
cboExtend.ListIndex = 0
optStretch.Value = True
End Sub
한빛미디어㈜
- 61 -
ehanbit.net
IT COOKBOOK
콤보 박스 이벤트 핸들러
Private Sub cboExtend_Click()
Select Case cboExtend.ListIndex
Case 0
File1.Pattern = "*.gif"
Case 1
File1.Pattern = "*.jpg"
Case 2
File1.Pattern = "*.wmf*.ico"
Case 3
File1.Pattern = "*.*"
End Select
End Sub
한빛미디어㈜
- 62 -
ehanbit.net
IT COOKBOOK
파일 리스트박스에서 파일을 선택한 경우 선택된 그림 표시
Private Sub File1_Click()
If optStretch.Value = True Then
Image1.Stretch = True
Else
Image1.Stretch = False
End If
If (Right(Dir1.Path,1) =“\” Then
Image1.Picture = LoadPicture(File1.Path & File1.FileName)
Else
Image1.Picture = LoadPicture(File1.Path & "\" & File1.FileName)
End If
End Sub
종료 버튼 이벤트 핸들러
Private Sub cmdExit_Click()
End
End Sub
한빛미디어㈜
- 63 -
ehanbit.net
IT COOKBOOK
프로그램 실행
한빛미디어㈜
- 64 -
ehanbit.net
IT COOKBOOK
01. Shape 컨트롤/ Line 컨트롤
02. 수직/수평 스크롤바 컨트롤
03. 타이머 컨트롤
04. 이미지 컨트롤과 픽처박스 컨트롤
05. 파일 시스템 컨트롤
06. 컨트롤 배열
한빛미디어㈜
- 65 -
ehanbit.net
컨트롤 배열
IT COOKBOOK
컨트롤 배열
특징
이름과 형식 뿐 아니라 이벤트 핸들러도 공유하는 컨트롤의
그룹
컨트롤 배열에는 하나 이상의 요소가 있고 시스템 리소스와
메모리가 허용하는 한계에서 요소를 계속 추가할 수 있다.
컨트롤 배열의 크기는 각 컨트롤에 필요한 메모리와 윈도우
리소스의 양에 따라 달라짐
컨트롤 배열에서 사용할 수 있는 최대 배열 인덱스는 32,767
컨트롤 배열에 있는 각 요소는 자신의 속성을 갖음
컨트롤 배열을 사용하는 이유
- 컨트롤 배열로 컨트롤을 추가하면 디자인 모드 같은 유형의 컨트롤을 여러 개 폼에 추가
하는 것보다 리소스를 적게 사용한다.
- 컨트롤 배열은 다중 컨트롤이 코드를 공유하도록 할 때 유용하다
한빛미디어㈜
- 66 -
ehanbit.net
IT COOKBOOK
디자인 모드에서 컨트롤 배열 작성하기
컨트롤 배열 작성 방법
1. 하나 이상의 컨트롤에 같은 이름을 지정하기.
2. 기존의 컨트롤을 복사한 다음 폼에 붙여넣기
3. 컨트롤의 Index 속성을 Null 이외의 값으로 설정.
한빛미디어㈜
- 67 -
ehanbit.net
[실습하기] 같은 이름 사용하여 컨트롤 배열
작성
IT COOKBOOK
폼에 컨트롤 추가하고 첫 번째 배열의 Name 속성 설정
한빛미디어㈜
- 68 -
ehanbit.net
IT COOKBOOK
두 번째 컨트롤의 Name 속성을 첫 번째 컨트롤의
Name 이름 속성과 동일하게 설정
두 번째 컨트롤의 이름 설정
한빛미디어㈜
컨트롤 배열 작성 메시지 상자
- 69 -
ehanbit.net
IT COOKBOOK
동일한 이름을 가진 컨트롤이 컨트롤 배열로 생성됨
컨트롤 배열로 생성된 첫 번째 컨트롤과 두 번째 컨트롤
한빛미디어㈜
- 70 -
ehanbit.net
[실습하기] 컨트롤을 복사하여 컨트롤 배열
생성
IT COOKBOOK
폼에 컨트롤 추가하기
컨트롤을 선택하고 [편집]->[복사], [편집]->[붙여넣
기] 메뉴 실행하여 컨트롤 배열 메시지 상자 표시
한빛미디어㈜
- 71 -
ehanbit.net
IT COOKBOOK
Yes를 선택하면 컨트롤의 인덱스가 1로 설정됨
한빛미디어㈜
- 72 -
ehanbit.net
IT COOKBOOK
실행 모드에서 컨트롤 배열 생성하기
특징
Load와 Unload 문을 사용하여 실행 모드에서 컨트롤 배열에
컨트롤을 추가/삭제 가능
구문 형식
Load 컨트롤 이름(index)
Unload
컨트롤 이름(index)
로드된 컨트롤의 속성은?
-컨트롤 배열의 새 요소를 로드하면 대부분의 속성 설정이 배열에서 가장 인덱스 번호가 작은
요소로부터 복사(예를 들어 인덱스 값이 0인 요소).
-컨트롤의 속성 중 Visible, Index, TabIndex 속성 설정은 컨트롤 배열의 요소에 자동으로 복
사되지 않으므로 필요하면 새로이 설정해야 함.
한빛미디어㈜
- 73 -
ehanbit.net
[실습하기] 실행 모드에서 옵션 버튼 추가하기
IT COOKBOOK
폼에 컨트롤 추가하기
한빛미디어㈜
- 74 -
ehanbit.net
IT COOKBOOK
각 컨트롤의 속성 설정
한빛미디어㈜
- 75 -
ehanbit.net
IT COOKBOOK
이벤트 핸들러 작성
옵션버튼 컨트롤의 이벤트 핸들러
Dim MaxId As Integer
'Click 이벤트 프로시저는 모든 옵션 단추가 공유.
Private Sub optButton_Click(Index As Integer)
picDisplay.BackColor = QBColor(Index + 1)
End Sub
삭제 버튼 컨트롤의 이벤트 핸들러
'삭제 명령 단추에 대한 Click 이벤트 프로시저로 옵션 단추가 삭제.
Private Sub cmdDelete_Click()
If MaxId <= 1 Then Exit Sub
Unload optButton(MaxId)
MaxId = MaxId - 1
optButton(0).SetFocus
End Sub
한빛미디어㈜
' 처음 두 단추를 유지.
' 마지막 단추를 삭제.
' 단추 수를 감소.
' 단추 선택 재설정.
- 76 -
ehanbit.net
IT COOKBOOK
추가 버튼 컨트롤의 이벤트 핸들러
'추가 명령 단추에 대한 Click 이벤트 프로시저를 사용하여 새 옵션 단추
‘추가.
'Load 문을 실행하기 전에 10개 이하의 옵션 단추를 로드했는지 확인하고
‘컨트롤을 로드하면 Visible 속성이 True로 설정.
Private Sub cmdAdd_Click()
If MaxId = 0 Then MaxId = 1
If MaxId > 8 Then Exit Sub
'
MaxId = MaxId + 1
Load optButton(MaxId)
optButton(0).SetFocus
' 전체 옵션 단추는 그대로 둔다.
' 10개의 단추만 허용
' 단추 수를 증가.
' 새 단추를 작성.
' 단추 선택을 재설정.
' 이전 단추 아래에 새 단추를 설정.
optButton(MaxId).Top = optButton(MaxId - 1).Top + 200
optButton(MaxId).Visible = True
' 새 단추 표시
optButton(MaxId).Caption = "QBColor(" & MaxId + 1 & ")"
End Sub
한빛미디어㈜
- 77 -
ehanbit.net
IT COOKBOOK
종료 버튼 컨트롤의 이벤트 핸들러
'닫기 단추 Click 이벤트가 응용 프로그램을 종료.
Private Sub cmdClose_Click()
Unload Me
End Sub
프로그램 실행
한빛미디어㈜
- 78 -
ehanbit.net