본문 바로가기

정리중인 카테고리/전공 기술

[비주얼 베이직] 내가만든 스톱워치, 2009년 04월 26일.



코드 작성자 강필구. 코드 작성일 09년 04월 26일 오후 7시 38분

 

소스 코드:

 

'사용한 폰트: digital-7

'폰트 출처: http://www.styleseven.com

Dim ss As Integer   '10분의1초를 저장하는 변수

Dim s As Integer    '초를 저장하는 변수

Dim m As Integer    '분을 저장하는 변수

Dim h As Integer    '시간을 저장하는 변수

'RESET 버튼을 눌렀을 때 모두 0으로 만드는 부분

Private Sub Command3_Click()

    Label1(0).Caption = "00 hour"   '시간 초기화

    Label1(1).Caption = "00 minute" '분 초기화

    Label1(2).Caption = "00 second" '초 초기화

    Label1(3).Caption = "00"        '10분의1초 초기화

    

    Timer1.Enabled = False  '리셋버튼을 누름과 동시에 타이머중지

        

    ss = 0  '10분의1초를 저장하는 변수 초기화

    s = 0   '초를 저장하는 변수 초기화

    m = 0   '분을 저장하는 변수 초기화

    h = 0   '시를 저장하는 변수 초기화

        

End Sub

'CLOSE 버튼을 눌렀을 때 프로그램 닫는 부분

Private Sub Command4_Click()

    End '단어 그대로의 끝이라는 뜻이다.

End Sub

'START 누르면 타이머 시작

Private Sub Command1_Click()

    Timer1.Enabled = True   '타이머작동

    

End Sub

'일시정지를 누르면 타이머가 작동을 일시정지한다

Private Sub Command2_Click()

    Timer1.Enabled = False  '타이머중지

    

End Sub

'10분의1초 ss가 10을 넘으면 0으로 만들고 초를 1로 만들고

'초 s가 60을 넘으면 0으로 만들고 분 m을 1로 만들고

'분 m이 60을 넘으면 시간 h를 1로 만드는 부분

Private Sub Timer1_Timer()

    ss = ss + 1

    

    '10분의1초 ss가 10을 넘으면 0을 만들고 초를 1로 만드는 부분

    If ss >= 60 Then

        ss = 0      '10분의1초 ss 초기화

        s = s + 1   '초 s를 1로 만드는 부분

    End If

    

    '초 s가 60을 넘으면 0으로 만들고 분 m을 1로 만드는 부분

    If s >= 60 Then

        s = 0       '초 s를 초기화

        m = m + 1   '분 m을 1로 만드는 부분

    End If

    

    '분 m이 60을 넘으면 시간 h를 1로 만드는 부분

    If m >= 60 Then

        m = 0       '분 m을 초기화

        h = h + 1   '시간 h를 1로 만드는 부분

    End If

    

    '해당 레이블에 진행상황 출력을 위한 ShowTime 프로시져의 호출

    Call ShowTime

    

End Sub

'타이머 작동과 동시에 레이블 캡션에 증가 값 출력 부분

'시간,분,초,10분의1초가 한자리이면 앞에 0을 붙이고

'시간,분,초,10분의1초가 두자리이면 앞에 0을 안붙이는 부분

'Timer1_Timer 프로시져에서 연동됨

Private Sub ShowTime()

    

    '10분의1초와 관련된 부분

    If Len(CStr(ss)) = 1 Then

        Label1(3).Caption = 0 & ss  '10분의1초가 한자리수 이면 앞에 0붙이는 부분

    ElseIf Len(CStr(ss)) = 2 Then

        Label1(3).Caption = ss      '10분의1초가 두자리수 이면 앞에 0안붙이는 부분

    End If

    

    '초와 관련된 부분

    If Len(CStr(s)) = 1 Then

        Label1(2).Caption = 0 & s & " second"   '초가 한자리수 이면 앞에 0붙임

    ElseIf Len(CStr(ss)) = 2 Then

        Label1(2).Caption = s & " second"       '초가 두자리수 이면 앞에 0안붙임

    End If

    

    '분과 관련된 부분

    If Len(CStr(m)) = 1 Then

        Label1(1).Caption = 0 & m & " minute"   '분이 한자리수 이면 앞에 0붙임

    ElseIf Len(CStr(m)) = 2 Then

        Label1(1).Caption = m & " minute"       '분이 두자리수 이면 앞에 0안붙임

    End If

    

    '시간과 관련된 부분

    If Len(CStr(h)) = 1 Then

        Label1(0).Caption = 0 & h & " hour"     '시간이 한자리수 이면 앞에 0붙임

    ElseIf Len(CStr(h)) = 2 Then

        Label1(0).Caption = ss & " hour"        '시간이 두자리수 이면 앞에 0안붙임

    End If

    

End Sub