18-03-13, 15:05
|
| Διαχειριστής Όνομα: Τάσος Φιλοξενιδης Έκδοση λογισμικού 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 Ανάπτυξη επαγγελματικών εφαρμογών |