Θέμα: Φόρμες docmd.maximize

Εμφάνιση ενός μόνο μηνύματος
  #2  
Παλιά 16-02-14, 09:57
Το avatar του χρήστη Tasos
Tasos Ο χρήστης Tasos δεν είναι συνδεδεμένος
Διαχειριστής
Όνομα: Τάσος Φιλοξενιδης
Έκδοση λογισμικού Office: Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική, Γερμανική
 
Εγγραφή: 21-10-2009
Μηνύματα: 2.035
Προεπιλογή

Καλημέρα Θοδωρή!

Κανονικά δεν συμβαίνει κάτι τέτοιο εκτός και αν η ιδιότητα "Στυλ περιγράμματος" μιας αναδυόμενης φόρμας έχει οριστεί σε "Κανένα".

Ή λοιπόν αλλάζεις το στυλ περιγράμματος της φόρμας για να λειτουργήσει σωστά η μακροεντολή
ή χρησιμοποιείς συναρτήσεις των Windows API κατά τη φόρτωση της φόρμας για να μην καλύψει
ή να μην καλυφθεί από την μπάρα εργασίας του λειτουργικού.

Ο κώδικας VBA σ΄αυτή την περίιπτωση είναι:


Κώδικας:
Option Compare Database
Option Explicit

Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private Declare Function SystemParametersInfo Lib "user32" Alias _
    "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByRef _
    lpvParam As RECT, ByVal fuWinIni As Long) As Long
    
Private Declare Function MoveWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal _
    x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal _
    bRepaint As Long) As Long
    
Private Const SPI_GETWORKAREA = 48

' Private Sub cmdClose_Click()
     ' DoCmd.Close acForm, Me.Name
' End Sub

Private Sub Form_Load()
    Dim oRect As RECT
    Dim ret As Long
    ret = SystemParametersInfo(SPI_GETWORKAREA, 0, oRect, 0)
    If ret <> 0 Then
        ret = MoveWindow(Me.hwnd, oRect.Left, oRect.Top, (oRect.Right - oRect.Left), (oRect.Bottom - oRect.Top), 1)
    End If
End Sub
Καλή συνέχεια!

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