Forum

Forum (https://www.ms-office.gr/forum/)
-   Access - Ερωτήσεις / Απαντήσεις (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/)
-   -   [ Φόρμες ] Χρονόμετρο αντίστροφης μέτρησης (https://www.ms-office.gr/forum/access-erotiseis-apantiseis/552-xronometro-antistrofis-metrisis.html)

dimitris p 17-04-10 20:22

Χρονόμετρο αντίστροφης μέτρησης
 
Καλησπέρα σε όλους τους φίλους του forum.

Γνωρίζει κάποιος πως μπορώ να φτιάξω σε μια φόρμα ένα χρονόμετρο αντίστροφης μέτρησης.
Δηλαδή σε μια φόρμα να υπάρχει ένα πλαίσιο κειμένου που θα λειτουργεί ως χρονόμετρο αντίστροφης μέτρησης.
Να μπορώ να ορίσω το χρόνο από τον οποίο θα ξεκινά η αντίστροφη μέτρηση (πχ 2:30 δύο λεπτά και 30 δεύτερα) καθώς επίσης να υπάρχουν και τρία κουμπιά με τα οποία θα μπορώ να σταματάω το χρονόμετρο, να το ξαναξεκινάω και να το μηδενίζω.

Ευχαριστώ, φιλικά Δημήτρης.

Tasos 19-04-10 18:21

Καλησπέρα σε όλους!
Δημήτρη, σε μια φόρμα βάλε τα εξής:

  • Πλαίσιο κειμένου με όνομα: txtDuration με την ιδιότητα ενεργοποιημένο στο Όχι
    και με μάσκα εισαγωγής: 00:00:00;0;_
  • Πλαίσιο κειμένου με όνομα: TimeShow
  • Κουμπί με όνομα: cmdSetTimer με λεζάντα " > Start"
  • Κουμπί εναλλαγής με όνομα: cmdPause με λεζάντα " II Pause"
  • Κουμπί με όνομα: cmdStop με λεζάντα " [ ] Stop"
Ο κώδικας πίσω από τη φόρμα είναι ο παρακάτω:

Κώδικας:

  Option Compare Database
Option Explicit
Private Const FormatTime = "hh:mm:ss"
Dim Duration As Date, ZeroTime As Date, SeqTime As Date, IsPaused As Boolean

Private Sub cmdPause_Click()
    IsPaused = Me.cmdPause
    If IsPaused Then
        Me.cmdPause.Caption = "> Resume"
    Else
        Me.TimerInterval = 1000
        Me.cmdPause.Caption = "II Pause"
    End If
End Sub

Private Sub cmdSetTimer_Click()
    If IsNull(Me.txtDuration) Then
        Me.txtDuration.Locked = False
        Me.txtDuration.SetFocus
        Exit Sub
    End If
    If IsPaused Then
        IsPaused = False
    Else
        Me.txtDuration.Locked = True
        Duration = Me.txtDuration
        Me.TimeShow = Format(Duration, FormatTime)
        ZeroTime = TimeSerial(0, 0, 0)
        SeqTime = TimeSerial(0, 0, 1)
    End If
    Me.TimerInterval = 1000
End Sub

Private Sub cmdStop_Click()
    Me.TimerInterval = 0
    Me.txtDuration.Locked = False
End Sub

Private Sub Form_Load()
    Me.txtDuration.Locked = False
End Sub

Private Sub Form_Timer()
    If IsPaused Then
        Me.TimerInterval = 0
        Exit Sub
    End If
    Duration = Duration - SeqTime
    If Duration <= ZeroTime Then
        Me.TimeShow = Format(0, FormatTime)
        Me.TimerInterval = 0
        Me.txtDuration.Locked = False
        MsgBox "End of time!"
        Exit Sub
    End If
    Me.TimeShow = Format(Duration, FormatTime)
End Sub

Φρόντισε να συνδέσεις τα κουμπιά με τα αντίστοιχα συμβάντα που αναγράφονται στον παραπάνω κώδικα.(Ιδιότητες > συμβάν > με το κλικ > Διαδικασία συμβάντος).

Καλή συνέχεια!

Τάσος

dimitris p 20-04-10 08:52

Καλημέρα σε όλα τα μέλη.
Τάσο ευχαριστώ για την άμεση ανταπόκριση στο μήνυμά μου.
Έφτιαξα τη φόρμα όπως είπες και λειτουργεί σωστά εκτός από το κουμπί Pause.
Όταν το πατάω βγάζει το εξής μήνυμα.

Run time error 438
Object doesn't support this property or method

Το χρονόμετρο βέβαια συνεχίζει να λειτουργεί μέχρι να μηδενιστεί.

Private Sub cmdPause_Click()
IsPaused = Me.cmdPause 'Σε αυτό το σημείο σταματά ο κώδικας
If IsPaused Then
Me.cmdPause.Caption = "> Resume"
Else
Me.TimerInterval = 1000
Me.cmdPause.Caption = "II Pause"
End If
End Sub


Φιλικά Δημήτρης

Tasos 20-04-10 22:24

Δημήτρη καλησπέρα!

Χρησιμοποίησα λάθος έκφραση στο μήνυμα μου!

Το cmdPause δεν είναι κουμπί απλό, αλλά κουμπί εναλλαγής.

Αντικατέστησε το κουμπί cmdPause μέ ένα κουμπί εναλλαγής, δώσε του το όνομα cmdPause και σύνδεσε το με το αντίστοιχο συμβάν στη VBA.

Καλή συνέχεια

Τάσος

dimitris p 21-04-10 08:51

Καλημέρα σε όλους...

Τάσο ευχαριστώ για τον χρόνο σου.
Έκανα την αλλαγή όπως είπες και το πρόβλημα λύθηκε.

Φιλικά Δημήτρης

Αναστάσιος Αναγνωστάκης 29-11-12 13:09

Χρονόμετρο αντίστροφης μέτρησης
 
Παράθεση:

Αρχική Δημοσίευση από Tasos (Μήνυμα 2477)
Καλησπέρα σε όλους!
Δημήτρη, σε μια φόρμα βάλε τα εξής:

  • Πλαίσιο κειμένου με όνομα: txtDuration με την ιδιότητα ενεργοποιημένο στο Όχι
    και με μάσκα εισαγωγής: 00:00:00;0;_
  • Πλαίσιο κειμένου με όνομα: TimeShow
  • Κουμπί με όνομα: cmdSetTimer με λεζάντα " > Start"
  • Κουμπί εναλλαγής με όνομα: cmdPause με λεζάντα " II Pause"
  • Κουμπί με όνομα: cmdStop με λεζάντα " [ ] Stop"
Ο κώδικας πίσω από τη φόρμα είναι ο παρακάτω:

Κώδικας:

  Option Compare Database
Option Explicit
Private Const FormatTime = "hh:mm:ss"
Dim Duration As Date, ZeroTime As Date, SeqTime As Date, IsPaused As Boolean

Private Sub cmdPause_Click()
    IsPaused = Me.cmdPause
    If IsPaused Then
        Me.cmdPause.Caption = "> Resume"
    Else
        Me.TimerInterval = 1000
        Me.cmdPause.Caption = "II Pause"
    End If
End Sub

Private Sub cmdSetTimer_Click()
    If IsNull(Me.txtDuration) Then
        Me.txtDuration.Locked = False
        Me.txtDuration.SetFocus
        Exit Sub
    End If
    If IsPaused Then
        IsPaused = False
    Else
        Me.txtDuration.Locked = True
        Duration = Me.txtDuration
        Me.TimeShow = Format(Duration, FormatTime)
        ZeroTime = TimeSerial(0, 0, 0)
        SeqTime = TimeSerial(0, 0, 1)
    End If
    Me.TimerInterval = 1000
End Sub

Private Sub cmdStop_Click()
    Me.TimerInterval = 0
    Me.txtDuration.Locked = False
End Sub

Private Sub Form_Load()
    Me.txtDuration.Locked = False
End Sub

Private Sub Form_Timer()
    If IsPaused Then
        Me.TimerInterval = 0
        Exit Sub
    End If
    Duration = Duration - SeqTime
    If Duration <= ZeroTime Then
        Me.TimeShow = Format(0, FormatTime)
        Me.TimerInterval = 0
        Me.txtDuration.Locked = False
        MsgBox "End of time!"
        Exit Sub
    End If
    Me.TimeShow = Format(Duration, FormatTime)
End Sub

Φρόντισε να συνδέσεις τα κουμπιά με τα αντίστοιχα συμβάντα που αναγράφονται στον παραπάνω κώδικα.(Ιδιότητες > συμβάν > με το κλικ > Διαδικασία συμβάντος).

Καλή συνέχεια!

Τάσος

Καλησπέρα,


έβαλα τον κώδικα και έκανα, ( ελπίζω ), :032: ότι γράφεις, αλλά μου βγάζει το παρακάτω μνμ...

Compile error:
Method or data member not found

το εμφανίζει μόλις πατήσω start, και με πάει στην γραμμή κώδικα που έχω βάλει με κόκκινο.


Private Sub cmdSetTimer_Click()
If IsNull(Me.txtDuration) Then
Me.txtDuration.Locked = False
Me.txtDuration.SetFocus
Exit Sub
End If
If IsPaused Then
IsPaused = False
Else
Me.txtDuration.Locked = True
Duration = Me.txtDuration
Me.TimeShow = Format(Duration, FormatTime)
ZeroTime = TimeSerial(0, 0, 0)
SeqTime = TimeSerial(0, 0, 1)
End If
Me.TimerInterval = 1000
End Sub

ευχαριστώ...


Η ώρα είναι 14:08.

Ms-Office.gr - ©2000 - 2026, Jelsoft Enterprises Ltd.


Search Engine Optimization by vBSEO 3.3.2