5 장비주얼베이직을이용한 기본프로그래밍 Ⅱ
Timer 보통일정한시간만큼을지연시킨후어떤작업을하려고할때사용되는컨트롤 Timer 이벤트프로시저에하려고하는작업의내용을기술 Interval 속성에지정된일정한시간만큼을기다렸다가 Timer 이벤트프로시져의내용을수행 일단시작되면프로그램에다른기능들이작동하더라도독립적이고영속적으로계속수행 ( 즉, 멀티태스킹작업을한다 ) 실습 5-1 다음이미지를타이머에설정해놓은시간만큼지연시킨후일정한위치로이동시키는프로그램을실습
실습 5-1 실행방법 프로그램이실행되면이미지는좌측상단에위치 타이머에지정된시간이될때마다일정한위치만큼씩이미지가이동
실습 5-1 실행방법 이미지가폼의오른쪽끝까지이동하면다시폼의왼쪽상단에위치
실습 5-1 TIMER 프로그램에사용된컨트롤
실습 5-1 속성표 컨트롤이름 컨트롤종류 사용된속성 frmtimer 폼 (Name) = frmtimer Caption = TIMER imgplane 이미지 (Name) = imgplane Picture = ( 아이콘 ) trmplane 타이머 (Name) = trmplane Interval = 100
실습 5-1 코드프로시져작성 폼이로드될때 Private Sub Form_Load() ' 이미지를폼의좌측상단에위치시킴 imgplane.left = 0 imgplane.top = 0 End Sub 타이머가가동될때 Private Sub tmrplane_timer() ' 이미지를오른쪽으로 100, 아래쪽으로 50 트윕씩이동 imgplane.left = imgplane.left + 100
실습 5-1 코드프로시져작성 타이머가가동될때 imgplane.top = imgplane.top + 50 ' 만일이미지가폼의맨아래쪽에오면 If imgplane.top > frmtimer.scaleheight Then ' 이미지를폼의좌측상단에위치시킴 imgplane.left = 0 imgplane.top = 0 End If End Sub
실습 5-2 을이용해서현재의날짜와시간을표시하는기능을하는프로그램을실습 시계 프로그램에사용된컨트롤
실습 5-2 속성표 컨트롤이름 컨트롤종류 사용된속성 frmclock 폼 (Name) = frmclock Caption = 시계 lblclock 라벨 (Name) = lblclock Alignment = 2 - 가운데맞춤 BackColor = 짙은파랑 Caption = "" Font = 굵게, 20 ForeColor = 노랑 tmrclock 타이머 (Name) = tmrclock Interval = 1
실습 5-2 코드프로시져작성 타이머가가동될때 Private Sub tmrclock_timer() ' 라벨에년, 월, 일그리고시간을표시 lblclock.caption = Format(Now, yyyy 년 m 월 d 일 AMPM h:mm:ss ) End Sub
실습 5-3 다음의그래픽처리된옵션버튼을선택하여스톱워치를작동시키는프로그램을실습 시분초 1/10 초
실습 5-3 실행방법 프로그램이실행되면 STOP 그림의옵션버튼이선택된상태로시간은표시되지않는다. 타이머 그림의옵션버튼을선택하면스톱워치가작동한다.
실습 5-3 실행방법 STOP 그림의옵션버튼을선택하면스톱워치는더이상시간이증가하지않고멈춘다. 타이머 그림의옵션버튼을선택하면스톱워치가다시시작된다.
실습 5-3 STOP WATCH 프로그램에사용된컨트롤
실습 5-3 속성표 컨트롤이름 컨트롤종류 사용된속성 frmstopwatch 폼 (Name) = frmstopwatch Caption = STOP WATCH optstart 옵션버튼 (Name) = optstart Caption = Style = 1 - 그래픽 Picture = Timer01.ICO oprstop 옵션버튼 (Name) = optstop Caption = Style = 1 - 그래픽 Picture = Trffc14.ICO TabIndex = 0 Label1 라벨 Caption = Font(Size) = 28 Timer1 타이머 Interval = 100
실습 5-3 속성표 옵션버튼에그림을삽입하려면 Style 속성을 1- 그래픽 으로설정하고삽입하려는그림의경로를 Picture 속성에설정 설정된옵션버튼은명령버튼과유사한모양을가짐 프로그램이시작될때는하나의옵션버튼이선택된상태로표시되는데이때특정옵션버튼을선택된상태로시작하고싶을때는그옵션버튼의 TabIndex 속성을옵션버튼들중에서가장적은숫자로설정
실습 5-3 코드프로시저작성 일반선언부 ' 스톱워치의작동유무를설정하는변수 Dim start As Integer ' 시, 분, 초, 1/10 초각단위의값을저장 Dim msec As Integer Dim sec As Integer Dim min As Integer Dim hour As Integer 타이머 그림의옵션버튼을선택했을때 Private Sub optstart_click() ' 스톱워치를작동 start = 1 End Sub
실습 5-3 코드프로시저작성 타이머가가동될때 Private Sub Timer1_Timer() ' 시작옵션버튼이선택되면 If start = 1 Then '1/10 초단위의값을증가 msec = msec + 1 ' 만약 1초가되면 1/10초단위의값은다시 0으로설정하고 _ 초단위의값을 1 증가 If msec = 10 Then msec = 0 sec = sec + 1 End If ' 만약 1분이되면초단위의값은 0으로설정하고분단위의값을 1증가 If sec = 60 Then sec = 0 min = min + 1 End If
실습 5-3 코드프로시저작성 타이머가가동될때 ' 만약 1 시간이되면분단위의값은 0 으로설정하고시단위의값을 1 증가 If min = 60 Then min = 0 hour = hour + 1 End If '00:00:00:0 의서식으로출력하기위해분단위와초단위를두자리로설정 frmsec = Format(sec, "00") frmmin = Format(min, "00") ' 현재가지는각단위의값들을하나의문자열로조합 times = Str(hour) + frmmin + frmsec + Str(msec) ' 조합된문자열을숫자형으로변환한후서식을설정하여표시 Label1.Caption = Format(Val(times), "00:00:00:0") End If End Sub
실습 5-3 코드프로시저작성 STOP 그림의옵션버튼을선택했을때 Private Sub optstop_click() ' 스톱워치의작동을멈추고시간을 0 으로초기화 start = 0 msec = 0 sec = 0 min = 0 hour = 0 End Sub
파일시스템관련컨트롤 새로운드라이브를선택하거나디렉토리를표시하거나파일의목록을보기위해파일시스템컨트롤을사용 파일시스템컨트롤은기본컨트롤으로크게 DriveListBox, DirListBox, FileListBox 세가지 DriveListBox 는드라이브를선택할수있는컨트롤이며 DirListBox 는 Directory 를, FileListBox 는파일목록을보여주는컨트롤
파일시스템관련컨트롤 컨트롤의속성 DriveListBox 의속성 주로이름에 drv 를붙임 가장중요한속성은 Drive 속성 ( 현재 DriveListBox 컨트롤에서선택되어있는현재드라이브를가짐 ) DirListBox 의속성 주로이름에 dir 를붙임 가장중요한속성은 Path 속성 ( 현재 DriveListBox 컨트롤에서선택되어있는현재디렉토리를가짐 ) FileListBox 의속성 주로이름에 fil 을붙임 가장중요한속성은 Pattern, Path, FileName
파일시스템관련컨트롤 컨트롤의속성 Pattern 속성 FileListBox 에어떤파일들을보여줄것인지결정 도스에서사용했던와일드카드문자를지원하며 *,? 가있음 *? WildCard 문자 여러문자를의미하는와일드카드이다. 예를들면 a*z.jpg 라는와일드카드를사용하면 a 로시작하여 z 로끝나는 jpg 확장자를가진모든파일을의미한다. 한글자를의미하는와일드카드이다. 예를들면 a?z.jpg 라는와일드카드를사용하면 a 로시작하여 z 로끝나는 jpg 확장자를가진파일중에서가운데한글자가포함된모든파일을의미한다. 여러개의 Pattern 을등록하고싶을경우에는세미콜론 (;) 으로구분가능 Pattern 속성에다음과같이입력하면 FileListBox 는 jpg 와 gif 확장자를가진모든파일을출력함 *.jpg; *.gif
파일시스템관련컨트롤 컨트롤의속성 Path 속성 파일리스트를보여주고자하는디렉토리를갖고있음 Path 속성에정확한디렉토리를설정하면 FileListBox 는해당디렉토리안의파일목록을출력 FileName 속성 FileListBox 에서파일이선택되었을때, 파일이름을갖고있음 다음은파일에관련된세개의컨트롤들이차지하는영역을도식화하여나타낸그림
파일시스템관련컨트롤 실습 5-4 파일리스트박스를선택해서비트맵파일과아이콘파일을오른쪽이미지에로드시키며, 그파일의경로를하단의텍스트박스에출력시켜는프로그램을실습
파일시스템관련컨트롤 실습 5-4 실행방법 프로그램이실행되면현재의드라이브와디렉토리경로를줌
파일시스템관련컨트롤 실습 5-4 실행방법 드라이브리스트박스에서는드라이브를변경할수있으며디렉토리리스트박스에서는선택된드라이브안의디렉토리를변경가능
파일시스템관련컨트롤 실습 5-4 실행방법 드라이브변경시만약드라이브가준비되지않았을경우에는에러메시지를표시
파일시스템관련컨트롤 실습 5-4 실행방법 디렉토리리스트박스에서비트맵이나아이콘파일이들어있는디렉토리를선택하면그파일리스트를파일리스트박스에나타냄
파일시스템관련컨트롤 실습 5-4 실행방법 파일리스트박스에서나타난그림파일을선택하면그림이오른쪽이미지에로드되며하단의텍스트박스엔선택된파일의경로를표시
파일시스템관련컨트롤 실습 5-4 FILE 프로그램에사용된컨트롤 그림삽입해야함!!!
파일시스템관련컨트롤 실습 5-4 속성표 컨트롤이름 컨트롤종류 사용된속성 frmfile 폼 (Name) = frmfile Caption = FILE drvfile 드라이브리스트박스 (Name) = drvfile dirfile 디렉토리리스트박스 (Name) = dirfile filfile 파일리스트박스 (Name) = filfile Pattern = *.ico;*.bmp imgfile 이미지 (Name) = imgfile BorderStyle = 1 - 단일고정 stretch = True txtfile 텍스트박스 (Name) = txtfile Text = 파일리스트박스의 Pattern 속성은디렉토리안의파일리스트를나타낼때이속성에설정된패턴의파일리스트만을표시한다 예로 *.EXE 로설정하면확장자가 EXE 인파일만을표시하고, 세미콜론으로분리해서여러가지의패턴을설정할수도있다.
파일시스템관련컨트롤 실습 5-4 코드프로시저작성 드라이브가변경되었을때 Private Sub drvfile_change() ' 만일드라이브가준비되지않았으면 Err 로분기 On Error GoTo Err ' 드라이브를변경함 ChDrive drvfile.drive ' 변경된드라이브의디렉토리를표시 dirfile.path = drvfile.drive ' 에러없이성공적으로드라이브가변경되면 Exit Sub ' 에러가발생했을경우 Err: MsgBox 드라이브가준비되지않았습니다., vbexclamation, 오류 drvfile.drive = dirfile.path End Sub
파일시스템관련컨트롤 실습 5-4 코드프로시저작성 디렉토리가변경되었을때 Private Sub dirfile_change() ' 변경된디렉토리의파일리스트를표시 filfile.path = dirfile.path End Sub 파일을선택했을때 Private Sub filfile_click() ' 파일이름을포함하지않은경로를넘김 DirPath = filfile.path ' 파일이름까지포함한경로를넘김 FilePath = DirPath & "\" & filfile.filename ' 그림파일을실행함 imgfile.picture = LoadPicture(FilePath) ' 그파일의전체경로를텍스트박스에표시 txtfile.text = FilePath End Sub