- Tham gia
- 5/6/08
- Bài viết
- 30,703
- Được thích
- 53,952
Với sự trợ giúp của hàm API, tôi đã tạo ra được 1 cái đồng hồ quả lắc!
Code như sau:
1> Trong Module
2> Code cho CommandButton trên sheet
Code chạy ổn định nhưng còn 1 vấn đề nhỏ nhờ các cao thủ trợ giúp
Đoạn màu đỏ dùng để điều khiển quả lắc ---> Biết rằng đấy là hàm SIN theo thời gian nhưng tôi chẳng biết phải tinh chỉnh thế nào để bảo đảm quả lắc ấy hoạt động chính xác theo chu kỳ 1 giây ----> Ai có kinh nghiệm xin góp ý giúp tôi với (chỉ cái quả lắc thôi)
(hiện tại đang tạm chỉnh bằng thí nghiệm trực tiếp nhưng không chính xác lắm)
Code như sau:
1> Trong Module
PHP:
Private Declare Function SetTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Private Declare Function KillTimer Lib "user32" (ByVal hWnd As Long, ByVal nIDEvent As Long) As Long
Public iCycle As Long, sHour As Long
PHP:
Sub StartTimer()
StopTimer
SetTimer Application.hWnd, 1, 25, AddressOf TimeProc
End Sub
PHP:
Sub StopTimer()
KillTimer Application.hWnd, 1
End Sub
Mã:
Private Function TimeProc(ByVal H As Long, ByVal nMSG As Long, ByVal nID As Long, ByVal nTsys As Long)
Dim sTotal As Double, hPos As Double, mPos As Double, sPos As Double
On Error Resume Next
sTotal = Hour(Time) * 3600 + Minute(Time) * 60 + Second(Time)
sPos = sTotal * 6 Mod 360
mPos = (sTotal / 10) Mod 360
hPos = (sTotal / 120) Mod 360
With Sheet1
.Shapes("sec").Rotation = sPos
.Shapes("min").Rotation = mPos
.Shapes("hrs").Rotation = hPos
[COLOR=Red][B].Shapes("Grp").Rotation = (Sin(WorksheetFunction.Radians(45) * (iCycle) / 4 + Atn(1) * 2)) * 20[/B][/COLOR]
iCycle = iCycle + 1
End With
If sPos = 0 And mPos = 0 Then
sHour = 1 * Left(Format(Time, "hh:mm:ss AM/PM"), 2)
Call PlaySound.Main
End If
End Function
PHP:
Private Sub CommandButton1_Click()
iCycle = 0
With Sheet1.CommandButton1
Run IIf(.Caption = "Start", "StartTimer", "StopTimer")
.Caption = IIf(.Caption = "Start", "Stop", "Start")
End With
End Sub
Đoạn màu đỏ dùng để điều khiển quả lắc ---> Biết rằng đấy là hàm SIN theo thời gian nhưng tôi chẳng biết phải tinh chỉnh thế nào để bảo đảm quả lắc ấy hoạt động chính xác theo chu kỳ 1 giây ----> Ai có kinh nghiệm xin góp ý giúp tôi với (chỉ cái quả lắc thôi)
(hiện tại đang tạm chỉnh bằng thí nghiệm trực tiếp nhưng không chính xác lắm)