Εμφάνιση ενός μόνο μηνύματος
  #8  
Παλιά 18-03-13, 15:05
Το avatar του χρήστη Tasos
Tasos Ο χρήστης Tasos δεν είναι συνδεδεμένος
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.011
Προεπιλογή

Καλησπέρα!

Ο κώδικας του συμβάντος Form_Timer() στη φόρμα " frmBg" ελέγχει
ποιο παράθυρο έχει την εστίαση και κάνει τις ανάλογες ενέργειες.

Πιο αναλυτικά:

Κώδικας:
' frmName = Μεταβλητή τύπου "String". περιέχει το όνομα της αναδυόμενης φόρμας.
' WHandle = Μεταβλητή τύπου "Long" παίρνει που επιστρέφει η GetActiveWindow()
' frmHandle = Μεταβλητή τύπου "Long" ; το νούμερο του παραθύρου της αναδυόμενης φόρμας

Private Sub Form_Timer()
' έχει ρυθμιστεί να εκτελείται κάθε 50 χιλιοστά του δευτερολέπτου.

    On Error Resume Next
    If Not IsOpen(frmName) Then
        ' Αν η αναδυόμενη φόρμα δεν βρίσκεται σε κανονική προβολή τότε...

        DoCmd.Close acForm, Me.Name
        '...Κλείνει την ημιδιαφανή φόρμα "frmBg" (αυτή τη φόρμα)

        DoCmd.Close acForm, frmName
        '...Κλείνει την αναδυόμενη φόρμα

        Exit Sub
        '...Εξοδος από τη διαδικασία

    End If

    WHandle = GetActiveWindow()
    ' GetActiveWindow() = συνάρτηση  API που επιστρέφει το νούμερο του
    ' εστιασμένου παραθύρου. Θα μπορούσε κανείς να χρησιμοποιήσει την
    ' Screen.ActiveForm της Access. Δεν λειτουργεί σωστά σε παλαιότερες εκδόσεις Access


    If WHandle <> frmHandle Then
        ' Αν το νούμερο του εστιασμένου παραθύρου είναι διαφορετικό από το νούμερο
        'της αναδυόμενης φόρμας....

        If GetActiveWindow = Me.hWnd Then
            '...και εάν το νούμερο του εστιασμένου παραθύρου είναι διαφορετικό
            ' από το νούμερο αυτής της φόρμας που σημαίνει ότι ο χρήστης έχει
            ' εστιάσει κάποιο παράθυρο έκτός της εφαρμογής τότε...

            DoCmd.Close acForm, Me.Name
            ' Κλείνει την ημιδιαφανή φόρμα "frmBg" (αυτή τη φόρμα)

            DoCmd.Close acForm, frmName
            ' Κλείνει την αναδυόμενη φόρμα

        End If
    End If
End Sub
Φιλικά

Τάσος
__________________
Ms-Office Development Team
Ανάπτυξη επαγγελματικών εφαρμογών
Απάντηση με παράθεση