Проблема при скрытии окна Access

Илья Прокофьев
Дата: 26.01.2016 16:59:30
Доброго времени суток.Ситуация следующая, хочу при запуске БД сразу открыть форму и скрыть основное окно Access, ситуация так скажем банальная и заезженная, и все вроде бы работает идеально, пока в настройке "Вид формы" стоит "Простая форма", как только значение этого параметра меняется на "Разделенная форма" начинается печаль, окно Access скрывается вместе с формой и что бы я не делал, Разделенная форма показываться самостоятельно, без основного окна никак не хочет..

PS: Способ использую следующий, возможно тут есть ошибка..

1.Установил в свойствах формы "всплывающее окно" и "модальное окно" - да
2.В модуле прописал
Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
Public Const SW_HIDE =0
Public Const SW_NORMAL =1
3.В модуле самой формы, на Открытие формы прописал строку
ShowWindow Application.hWndAccessApp, SW_HIDE

Напоминаю, что как бы коряво, как может показаться некоторым эстетам, это не выглядело, для "Простой" формы работает безотказно, при "Разделенной" нет..
guest_rusimport
Дата: 26.01.2016 21:01:23
Илья Прокофьев,
проверить не могу (есть только access 2003), попробуйте в модуль формы загнать такой код и проверить сами
Option Compare Database
Private X As Long, Y As Long
Private Declare Function GetSystemMetrics Lib "user32.dll" (ByVal nIndex As Long) As Long
Private Declare Function apiGetDeviceCaps Lib "gdi32" Alias "GetDeviceCaps" (ByVal hdc As Long, ByVal nIndex As Long) As Long
Private Declare Function apiGetDC Lib "user32" Alias "GetDC" (ByVal hWnd As Long) As Long
Private Declare Function SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hwndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, _
ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long

Private Const SM_CXSCREEN = 0, SM_CYSCREEN = 1
Private Const TwipsPerInch = 1440
Private Const LOGPIXELSY = 90
Private Const LOGPIXELSX = 88
Private Const SWP_NOSIZE = &H1

Private Sub Form_Load()
    X = (GetSystemMetrics(SM_CXSCREEN)) / 2 - (Me.WindowWidth / (TwipsPerInch / apiGetDeviceCaps(apiGetDC(0&), LOGPIXELSX))) / 2
    Y = (GetSystemMetrics(SM_CYSCREEN)) / 2 - (Me.WindowHeight / (TwipsPerInch / apiGetDeviceCaps(apiGetDC(0&), LOGPIXELSX))) / 2
    ShowWindow Application.hWndAccessApp, SW_HIDE
    ShowWindow Me.hWnd, SW_NORMAL
    z = SetWindowPos(Me.hWnd, 0, X, Y, 0, 0, SWP_NOSIZE)
End Sub