• Xây dựng đồng hồ đếm ngược
  • Xây dựng đồng hồ đếm ngược

    Noname > 02-07-11, 11:37 AM

    [Hình: donghodemnguoc.png]

    Ứng dụng này dùng trong các bài thi hay tương tự...

    Thuật toán như sau:
    Đầu tiên ta nhập vào thời gian để đếm ngược. Trong ví dụ này ta sẽ xem xét là số phút.
    Số giây (s)= số phút (t) x 60

    Số giờ hiển thị H1=lấy phần nguyên(số giây/ 3600 )
    Số phút hiển thị T1= lấy phần nguyên(lấy phần lẻ (số giây/3600)/60)
    Số giây hiển thị: S1= lấy phần lẻ (số giây/60)
    Sau mỗi giây, ta sẽ trừ số giây đi 1. Và tính lại.

    Tạo 1 form mới, trên form vẽ 2 textbox, 1 đặt tên là txtThoigian, 1 đặt tên là txtDongho
    Tạo 1 nút nhấn, đặt tên là cmdBatdau
    Ta cần đặt một số biến:
    Mã:
    Dim sogiay As Long
    Dim H1 As Integer
    Dim T1 As Integer
    Dim S1 As Integer


    Code cho sự kiện cmdBatdau như sau:
    Mã:
    Private Sub cmdBatDau_Click()
    sogiay = txtThoigian * 60
    Me.TimerInterval = 1000
    End Sub

    Đồng thời, ở sự kiện timer của form, ta làm như sau:
    Mã:
    Private Sub Form_Timer()
    txtDongho = dongho(sogiay)
    sogiay = sogiay - 1

    If sogiay < 0 Then
    Me.TimerInterval = 0
    End If

    End Sub

    Đồng thời xây dựng 1 function hiển thị đồng hồ:
    Mã:
    Function dongho(giay As Long) As String
    H1 = Int(giay / 3600)
    T1 = Int((giay Mod 3600) / 60)
    S1 = giay Mod 60
    dongho = Format(H1, "00") & ":" & Format(T1, "00") & ":" & Format(S1, "00")
    End Function
    Vậy là ta có một đồng hồ đếm ngược rồi.
    Giờ mở form lên, nhập vào thời gian muốn tính ngược (giả sử 90), và nhấn bắt đầu. Rồi xem thành quả nhé!
    Xem demo
  • RE: Xây dựng đồng hồ đếm ngược

    quanghoasla > 02-07-11, 05:56 PM

    cảm ơn bác noname nhiều nhé. bài viết này rất hữu ích cho em và mọi người. Peacerock on!beehappy
  • RE: Xây dựng đồng hồ đếm ngược

    DoquangLam > 02-07-11, 10:25 PM

    Có cách nào, khi đóng forms lại thì đồng hồ ngưng lại, đến khi mình mở forms lên thì nó tiếp tục chạy được không. Cám ơn.
  • RE: Xây dựng đồng hồ đếm ngược

    quanghoasla > 02-07-11, 10:53 PM

    (02-07-11, 10:25 PM)DoquangLam Đã viết: Có cách nào, khi đóng forms lại thì đồng hồ ngưng lại, đến khi mình mở forms lên thì nó tiếp tục chạy được không. Cám ơn.

    anh noname nên tạo sự kiện mờ đi . và hiện 1 cmdstop thì hay hơn. tránh cho người dùng ấn đi ấn lại cái nút đó nhiều lần. đồng hồ sẽ tự đếm lại.
  • RE: Xây dựng đồng hồ đếm ngược

    Noname > 03-07-11, 08:27 AM

    Các bạn chịu khó đọc code. Dòng này khi gọi sẽ khiến đồng hồ ngừng lại:
    Mã:
    Me.TimerInterval = 0

    Việc làm một đối tượng mờ đi, ta cho thuộc tính enable của đối tượng đó là no.
    Việc làm một đối tượng ẩn đi, ta cho thuộc tính visible của đối tượng đó là no.
    Những ý tưởng riêng lẽ các bạn nên tự mình phát triển lấy, ở đây mình chỉ nêu ra thủ thuật làm 1 đồng hồ thế nào thôi!
  • RE: Xây dựng đồng hồ đếm ngược

    paulquocdung > 13-08-11, 12:09 PM

    Anh Noname ơi giúp em với,
    Vấn Đề :
    Em muốn xuất ra trên Form hoặc Report 6 dòng 8 cột trên một trang, dữ liệu lấy từ 1 table
    VD : table co 240 dòng thì sẽ xuất ra 5 trang (6*8=48*5=240)
    Làm hoài mà ko đuợc huhu Cry_smile
  • RE: Xây dựng đồng hồ đếm ngược

    Noname > 13-08-11, 01:03 PM

    (13-08-11, 12:09 PM)paulquocdung Đã viết: Anh Noname ơi giúp em với,
    Vấn Đề :
    Em muốn xuất ra trên Form hoặc Report 6 dòng 8 cột trên một trang, dữ liệu lấy từ 1 table
    VD : table co 240 dòng thì sẽ xuất ra 5 trang (6*8=48*5=240)
    Làm hoài mà ko đuợc huhu Cry_smile

    Bạn vui lòng post câu hỏi đúng topic, nếu không có topic nào cùng chủ đề thì tạo topic mới cho vấn đề này. Chú ý đặt tiêu đề!
  • RE: Xây dựng đồng hồ đếm ngược

    ledungddk001 > 17-03-15, 04:57 PM

    Khi giữ click chuột vào Form thì đồng hồ sẽ ngưng đếm ngược. Trường hợp này xử lý thế nào được nhỉ ??/