Контроль размера форм

Итак, у меня есть приложение Access, и я бы хотел, чтобы некоторые формы были максимальными при открытии, а другие - среднего размера при открытии. Однако, если я попробую что-то вроде этого:

Private Sub Form_Activate()
  DoCmd.Maximize
End Sub

или же

Private Sub Form_Activate()
  DoCmd.Restore
End Sub

он имеет эффект максимизации или восстановления каждого открытого окна, а это не то, что я ищу.

Есть ли способ обойти это?

Я использую Access 2003.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
13 175
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Access - это приложение MDI (Multiple Document Interface), и они работают следующим образом: либо все подокна развернуты, либо нет ни одного.

Что вам нужно сделать, так это найти способ узнать размеры окна приложения Access, а затем программно установить свойства формы .InsideWidth и .InsideHeight. У объекта Application есть hwndAccessApp, который, вероятно, можно использовать с некоторым вызовом Windows API, чтобы узнать его ширину и высоту.

добавление

Благодаря Филипп Грондье за поиск подходящего образца кода, общая идея образец кода такова:

  • объявить следующие элементы Win32 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)
  • получить область клиентов MDI из hWnd вашей формы (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, и он выполнил свою работу.

Другие вопросы по теме