프로젝트의 기한을 지키는 것은 중요한 것이다. 기한 안에 하지 못하면, 실패하거나 영원히 하지 못하게 될 수 있다.
데이트 피커의 적용으로 훨씬 편리한 기한 입력이 가능해 졌다.
이제 그 날짜를 통해 남은 날을 계산하는 알고리즘을 설계할 차례이다.
-----------캘린더 포지션 --------------
Sub SetPicCalPos(ctrl As Control)
Dim newTop As Integer, newLeft As Integer
'캘린터 컨트롤의 최상위 값을 계산
If Screen.Height - (ctrl.Top + ctrl.Height) >= piccal.Height Then
newTop = ctrl.Top + ctrl.Height
Else
newTop = ctrl.Top - piccal.Height
End If
'캘린터 컨트롤의 왼쪽 값 계산
If ctrl.Left + ctrl.Width >= piccal.Width Then
newLeft = (ctrl.Left + ctrl.Width) - piccal.Width
Else
newLeft = ctrl.Left
End If
piccal.Move newLeft, newTop
End Sub
------------타이머 부분------------------
Private Sub TimerYear_Timer()
Select Case ButtonDirection
Case ButtonDirectionUp
stDate = DateAdd("yyyy", 1, stDate)
drawmonthname stDate
Case ButtonDirectiondn
stDate = DateAdd("yyyy", -1, stDate)
drawmonthname stDate
End Select
End Sub
--------------캘린더 오픈 클로즈 ---------------
Sub OpenCloseCalendar(dtInitial As Date, ctrlContainer As Control)
Dim i As Integer
If Me.piccal.Visible = False Then
stDate = dtInitial
SetPicCalPos ctrlContainer
prevX = 0
prevY = 0
Me.piccal.FillColor = vbWhite
Me.piccal.DrawLine 0, HeaderDaysH + HeaderMonthH, piccal.ScaleWidth, piccal.ScaleHeight, vbBlack, True, False
drawmonthname stDate
Me.lblMonth.Top = Me.piccal.Top + 30
Me.lblMonth.Left = Me.piccal.Left + lButRight + 15
Me.lblMonth.Width = upButLeft - lButRight - 30
Me.piccal.Visible = True
Me.lblMonth.Visible = True
Me.piccal.ZOrder vbBringToFront
Me.lblMonth.ZOrder vbBringToFront
FillArrayMonth stDate
Me.piccal.SetFocus
Else
Me.lblMonth.Visible = False
Me.piccal.Visible = False
End If
End Sub
데이트 피커의 적용으로 훨씬 편리한 기한 입력이 가능해 졌다.
이제 그 날짜를 통해 남은 날을 계산하는 알고리즘을 설계할 차례이다.
-----------캘린더 포지션 --------------
Sub SetPicCalPos(ctrl As Control)
Dim newTop As Integer, newLeft As Integer
'캘린터 컨트롤의 최상위 값을 계산
If Screen.Height - (ctrl.Top + ctrl.Height) >= piccal.Height Then
newTop = ctrl.Top + ctrl.Height
Else
newTop = ctrl.Top - piccal.Height
End If
'캘린터 컨트롤의 왼쪽 값 계산
If ctrl.Left + ctrl.Width >= piccal.Width Then
newLeft = (ctrl.Left + ctrl.Width) - piccal.Width
Else
newLeft = ctrl.Left
End If
piccal.Move newLeft, newTop
End Sub
------------타이머 부분------------------
Private Sub TimerYear_Timer()
Select Case ButtonDirection
Case ButtonDirectionUp
stDate = DateAdd("yyyy", 1, stDate)
drawmonthname stDate
Case ButtonDirectiondn
stDate = DateAdd("yyyy", -1, stDate)
drawmonthname stDate
End Select
End Sub
--------------캘린더 오픈 클로즈 ---------------
Sub OpenCloseCalendar(dtInitial As Date, ctrlContainer As Control)
Dim i As Integer
If Me.piccal.Visible = False Then
stDate = dtInitial
SetPicCalPos ctrlContainer
prevX = 0
prevY = 0
Me.piccal.FillColor = vbWhite
Me.piccal.DrawLine 0, HeaderDaysH + HeaderMonthH, piccal.ScaleWidth, piccal.ScaleHeight, vbBlack, True, False
drawmonthname stDate
Me.lblMonth.Top = Me.piccal.Top + 30
Me.lblMonth.Left = Me.piccal.Left + lButRight + 15
Me.lblMonth.Width = upButLeft - lButRight - 30
Me.piccal.Visible = True
Me.lblMonth.Visible = True
Me.piccal.ZOrder vbBringToFront
Me.lblMonth.ZOrder vbBringToFront
FillArrayMonth stDate
Me.piccal.SetFocus
Else
Me.lblMonth.Visible = False
Me.piccal.Visible = False
End If
End Sub
댓글 달기