Итак, у меня есть приложение Access, и я бы хотел, чтобы некоторые формы были максимальными при открытии, а другие - среднего размера при открытии. Однако, если я попробую что-то вроде этого:
Private Sub Form_Activate()
DoCmd.Maximize
End Sub
или же
Private Sub Form_Activate()
DoCmd.Restore
End Sub
он имеет эффект максимизации или восстановления каждого открытого окна, а это не то, что я ищу.
Есть ли способ обойти это?
Я использую Access 2003.





Access - это приложение MDI (Multiple Document Interface), и они работают следующим образом: либо все подокна развернуты, либо нет ни одного.
Что вам нужно сделать, так это найти способ узнать размеры окна приложения Access, а затем программно установить свойства формы .InsideWidth и .InsideHeight. У объекта Application есть hwndAccessApp, который, вероятно, можно использовать с некоторым вызовом Windows API, чтобы узнать его ширину и высоту.
Благодаря Филипп Грондье за поиск подходящего образца кода, общая идея образец кода такова:
struct Rect (Type Rect… в VBA)const SW_SHOWNORMAL = 1 (для ShowWindow)GetParent (получив hwnd, получить hwnd его родителя)GetClientRect (получить позицию и размер из hwnd)IsZoomed (логический; истина, если окно развернуто)ShowWindow (изменить состояние окна)MoveWindow (для изменения положения и размера окна)IsZoomed(frm.hWnd) = True), то восстановите ее (ShowWindow frm.hWnd, SW_SHOWNORMAL)GetClientRect GetParent(frm.hWnd, rect))MoveWindow frm.hWnd, 0, 0, rect.x2-rect.x1, rect.y2-rect.y1)(Вышеупомянутое - это в основном объяснение примера кода; я не копировал и вставлял код, потому что не был уверен, разрешил ли это автор).
Вы можете использовать MoveSize:
DoCmd.MoveSize 100,100
Дополнительная информация: http://msdn.microsoft.com/en-us/library/aa141514(office.10).aspx
ΤΖΩΤΖΙΟΥ на 100% прав, когда говорит, что либо все развернуты, либо нет. Если вы действительно хотите решить эту проблему, вам придется немного прочитать здесь (посмотрите на предложенный код и способ его вызова), понять, что делается, и в конечном итоге создать собственное решение в зависимости от ваших потребностей.
Здесь есть несколько вариантов: http://www.jamiessoftware.tk/articles/resolution.html
Раньше я использовал ADHResize, и он выполнил свою работу.