หากมีคำถาม ขอให้ไปโพสต์ลง เว็บบอร์ดจีทูจีเน็ตดอตคอม ตัวใหม่แทนน่ะครับ

หรือติดต่อเข้ามาทาง Inbox ที่ เฟซบุ๊ค ผมครับ

หน้าหลัก
ข่าวสาร - บทความ ทั้งหมด
VB 6/VB.Net
ASP/ASP.Net
จับฉ่ายคอมพิวเตอร์
เรียนรู้ผ่าน Flash Movie
บทความที่มีผู้ตอบล่าสุด  
 RSS Feeds
 ดาวน์โหลดโปรแกรม RSS Reader ได้ที่นี่ ...   Download โปรแกรม RSS Reader

Forum - www.g2gnet.com
Webmaster - www.g2gnet.com
Visitors - Session views
 5 3 5 7 7 4 2

7 ธันวาคม พ.ศ.2549
221 Users On-Line.
Visitors - Page views
 8 6 9 4 0 5 4
1 กุมภาพันธ์ พ.ศ.2551

Google   
เว็บ g2gnet.com
ขนาดตัวอักษร:  

โปรแกรมการนับเวลาถอยหลัง - Count Down Timer

Category »  VB 6/VB.Net
โดย : Webmaster เมื่อ 23/2/2552   เวลา: 14:49
(อ่าน : 48811) 
ระยะนี้เป็นช่วงระยะอันตรายของน้องๆนักศึกษาหลายต่อหลายคน เพื่อเร่งผลิตงานโปรเจคอย่างขมีขมัน ไม่เช่นนั้นก็จะจบไปไม่ทันเพื่อนๆเขา ... ส่วนตัวผมเองก็เริ่มที่จะต้องมองหาแหล่งกบดานใหม่ เพื่อหลีกลี้ หนีภัย อันเกิดมาจากการร้องขอความช่วยเหลือ จากลูกๆหลานๆผู้หลัก ผู้ใหญ่ที่ผมให้ความเคารพ รวมไปถึงเหล่าบรรดากิ๊กของเพื่อน ของรุ่นพี่ๆผม ... ที่มักชอบจะยัดเยียด ข่มขืนจิตใจ ให้ผมต้องมาช่วยแก้ปัญหาในงานโปรเจคเด็กฝาก ตามที่ผมกล่าวมาแล้วข้างต้น ... 55555+ ... เอาล่ะครับมาว่าถึงประโยชน์ของบทความง่ายๆชิ้นนี้ ที่นึกๆได้เวลานี้ก็ เช่น จับเวลาในการทำข้อสอบผ่านคอมพิวเตอร์ การทำระบบอินเทอร์เน็ตคาเฟ่ การสั่งรีเฟรช หรือ แสดงผลข้อมูลใหม่ตามเวลาที่กำหนด โอ้ย ... เยอะแยะไปครับ ... พี่น้อง
กระบวนการแนวคิด
ให้ Timer ถูกกระตุ้นการทำงาน (ศัพท์แสงภาษาของผมทางอิเล็กทรอนิกส์เรียกว่า Trigger) ทุกๆ 1 วินาที หรือ 1000 มิลลิวินาที (ค่าโดยประมาณ) เพื่อให้เกิดการนับถอยหลังลงไปครั้งละ 1 วินาที จนกว่าจะครบ 60 วินาที (60,000 มิลลิวินาที) แล้วก็ลบออก 1 จากจำนวนนาทีที่ตั้งค่าเอาไว้ หากการลบแล้วไม่ได้ค่าเป็น 0 ให้วนกลับมาทำงานต่อ แต่หากลบออกแล้วเหลือ 0 ก็จบกระบวนการทำงาน
ดาวน์โหลด
ดาวน์โหลด Source Code สำหรับ MS Visual Basic 6.0 - Service Pack 6
 ดาวน์โหลด Visual Basic 6.0 SP5: Run-Time Redistribution Pack
 ดาวน์โหลด Microsoft Data Access Object (MDAC) และ Jet 4.0 Update
 ดาวน์โหลด Microsoft Visual Basic Service Pack 6
เริ่มต้นกระบวนการทำงาน

Design Time


Run Time
มาดูโค้ดกันเถอะ ...

Option Explicit

' ตัวแปรในการนับเวลาถอยหลังทุกๆ 1 นาที
Dim CountOneMin As Long ' ให้เป็น Integer ได้หรือไม่ ... 55555+

Private Sub Form_Load()
    ' Run Time
    lblTimeNow.Caption = "" ' แสดงเวลาปัจจุบัน
    lblMinute.Caption = 1 ' ตั้งเวลาไว้ที่ ... นาที
    lblCountDown.Caption = "" ' แสดงเวลาการนับถอยหลัง
    
    ' Timer จะถูกกระตุ้น (Trigger) การทำงานทุกๆ 1 วินาที (1000 millisecond)
    Timer1.Interval = 1000
    Timer1.Enabled = True
    
    ' ตั้งนับถอยหลัง 1 นาที (60 x 1000 ได้หน่วยนับมิลลิวินาที)
    CountOneMin = 60000

End Sub

' ส่วนของ Timer จะถูกกระตุ้น (Trigger) การทำงานทุกๆ 1 วินาที
Private Sub Timer1_Timer()
    ' แสดงเวลาปัจจุบัน
    lblTimeNow.Caption = Format(Time$, "hh:mm:ss AMPM")
    
    ' เริ่มการลดค่าครั้งละ 1 วินาที (1000 millisecond)
    CountOneMin = CountOneMin - 1000
    
    ' ============================ แสดงผลเวลาการนับถอยหลัง =========================
    ' แสดงผลเวลาเป็นวินาที เช่น 59, 58, 57, ... ไปจนถึง 10 วินาที
    If CountOneMin >= 10000 Then
        
        ' เวลาจะเป็น Millisecond เช่น 59000 ให้นับ 2 ตัวหน้าไว้เพื่อแสดงผล
        lblCountDown.Caption = Val(lblMinute.Caption) - 1 & " : " & Mid(CountOneMin, 1, 2) & " นาที"
        
    ' น้อยกว่า 10 วินาที เช่น 9000 ... ให้เอาตัวหน้าสุดตัวเดียวเรียงต่อจาก 0 เช่น  09, 08, 07 ... 01
    Else
        lblCountDown.Caption = Val(lblMinute.Caption) - 1 & " : 0" & Left(CountOneMin, 1) & " นาที"
    End If
    ' ========================================================================
    
    ' ตรวจสอบว่านับถอยหลังครบ 1 นาที (60000 millisecond) หรือไม่
    ' กรณีนี้ครบแล้ว
    If CountOneMin = 0 Then
    
        ' ให้ตรวจสอบอีกว่านับเวลาครบตามจำนวนนาทีที่ตั้งไว้แล้วหรือไม่
        ' กรณีจริง ... แสดงว่าครบแล้ว
        If Val(lblMinute.Caption) - 1 = 0 Then
            lblMinute.Caption = Val(lblMinute.Caption) - 1
            lblCountDown.Caption = "หมดเวลา/Logout Time"
            ' ปิดการทำงานของ Timer
            Timer1.Enabled = False
            MsgBox "หมดเวลาในการทำข้อสอบ.", vbOKOnly + vbExclamation, "หมดเวลา"
            End
            
        ' ยังนับเวลาตามจำนวนนาทีที่ตั้งไว้ไม่ครบ
        Else
            ' ทำการลดค่าเวลาลงไป 1 นาที เช่นเดิมตั้งไว้ 3 นาที ก็จะเหลือ 2 นาที แล้วเริ่มต้นกระบวนการนับเวลาถอยหลังอีกครั้ง
            lblMinute.Caption = Val(lblMinute.Caption) - 1
            
            ' ให้ตั้งค่าการนับถอยหลังในทุกๆ 1 นาทีใหม่อีกครั้ง
            CountOneMin = 60000
        End If
    End If
End Sub
Conclusion:
นี่ก็เป็นโจทย์ง่ายๆอีกตัวหนึ่ง ผมก็หวังว่าจะเป็นประโยชน์ต่อพี่น้องบ้างไม่มากก็น้อย ... พยายามหางานง่ายๆใกล้ๆตัวเพื่อหัดคิด หัดฝึก หัดทำ แล้วพี่น้องจะได้เรียนรู้จักกับคำว่า ... เราศึกษาเพื่อ ... เขียนโปรแกรม หรือ ใช้โปรแกรม ... กันแน่ ... เอิ๊กๆๆๆๆ

จี ทู จี เน็ต ดอต คอม - g2gNet Dot Com
เลขทะเบียนพาณิชย์อิเล็กทรอนิกส์ 0407314800231
CopyLeft © 2004 - 2099 g2gNet.Com All rights reserved.
Email: [email protected] หรือ โทร. 08-6862-6560