BÀI TẬP TẠO ĐỒNG HỒ CHẠY TRONG POWER POINT. Ý tưởng: Đối tượng Shape có thuộc tính Rotation, thuộc tính này mang giá trị từ (0- 360), cho phép Shape quay xung quanh điểm giữa của Shape. Nhờ đặc điểm này ta dùng để thực hiện bài tập này. Hướng dẫn chi tiết: Bước 1: Vẽ 1 hình tròn làm khung đồng hồ. Bước 2: Tạo kim đồng hồ. Vì Shape chỉ quay quanh tâm của nó nhưng kim đồng hồ lại không quay quanh tâm. Chính vì vậy ý tưởng đơn giản nhất là group kim đồng hồ với một hình tròn có kích thước bằng hình tròn ở bước 1. Cần chú ý bỏ đường viền và cho hình tròn này trong suốt trước khi group. Lần lượt tạo ra kim giờ, kim phút và kim giây. (Chú ý nên làm kim đứng thẳng xem như đang ở 0 độ). Bước 3: Lần lượt đặt tên cho các group là KimGio, KimPhut, KimGiay. Đặt tên cho Slide là clock. Tạo Button đặt tên là btnStart để bật/tắt đồng hồ. Bước 4: Cần lưu ý 1 phút tương đương với 6 độ, 1 giây tương đương với 6 độ, 1 giờ tương ứng với 30 độ (vì vậy phải sử dụng hàm làm tròn). Chính vì vậy nếu có được giây hiện tại ta cho KimGiay quanh 1 góc (SoGiay*6), tương tự cho kim phút, riêng kim giờ ngoài việc quay 1 góc (giờ*30) còn phải cộng thêm một góc do phút tạo ra (SoPhut/2) (vì 1 giờ tương đương 30 độ, cũng có nghĩa 60 phút tương đương 30 độ vì vậy mới có kết quả là SoPhut/2). Bước 5: Khi người dùng bật đồng hồ, cứ mỗi giây ta cập nhật lại góc quay của các kim. Ở đây có sử dụng vòng lặp dạng While {các lệnh} Wend. Có nghĩa là trong khi đúng sẽ thực hiện các lệnh. Vì việc cập nhật giờ bao gồm nhiều lệnh trong đó nên ta viết riêng một thủ tục CapNhatGio để cập nhật lại góc của các kim đồng hồ. Sub CapNhatGio() Dim gio, phut, giay As Integer gio = Hour(Now) Mod 12 phut = Minute(Now) giay = Second(Now) '1 giay tuong duong voi 6 do ActivePresentation.Slides("user").Shapes("KimGiay").Rotation = giay * 6 '1 phut tuong duong voi 6 do ActivePresentation.Slides("user").Shapes("KimPhut").Rotation= phut * 6 '1h tuong duong voi 30 do ActivePresentation.Slides("user").Shapes("KimGio").Rotation=gio*30+Round(phut/2) End Sub Private Sub btnStart_Click() If (btnStart.Caption = "Run Clock") Then btnStart.Caption = "Stop Clock" Else btnStart.Caption = "Run Clock" End If While (btnStart.Caption = "Stop Clock") CapNhatGio Dim PauseTime, Start, Finish ' Gán thoi gian cho la 1 giay PauseTime = 1 'Lay thoi diem hien tai Start = Timer 'Tao vong lap trong khi chua het thoi gian cho Do While Timer < Start + PauseTime ' Chuyen quyen quan ly cho he thong trong khi lap DoEvents Loop Wend End Sub
Tài liệu đính kèm: