Добавление или удаление заголовка, примечания и колонтитулов отчета
Выберите в меню ВидкомандуЗаголовок/примечание отчетаилиКолонтитулы.
Заголовок и примечание, а также верхний и нижний колонтитулы, можно добавлять только парами. Если какой-либо из этих разделов не нужен, установите его свойство Вывод на экран (Visible)в значениеНет. Можно также удалить из этого раздела все элементы управления и изменить его размер до нулевой высоты (или установить его свойствоВысота (Height)в значение0).
При удалении заголовка, примечаний или колонтитулов, будут удалены все содержащиеся в них элементы управления.
Отобразите данные, текст и итоги в отчете
Создание присоединенного текстового поля
Откройте форму в режиме конструктора формы, отчет в режиме конструктора отчета или страницу доступа к данным в режиме конструктора страницы.
Нажмите кнопку Список полейа панели инструментов. Появится список полей. Если в форме или отчете список полей недоступен, необходимо присоединить форму или отчет к источнику записей. Если список полей на странице доступа к данным пуст, нужно подключить страницу к базе данных.
Выполните одно из следующих действий.
Выберите одно или несколько полей в списке полей формы или отчета.
Группа соседних полей
Выберите первое поле группы, нажмите клавишу SHIFT и, удерживая ее, выберите последнее поле группы.
Произвольная группа полей
Нажмите клавишу CTRL и, удерживая ее, выберите нужные поля.
Дважды щелкните заголовок списка полей.
Выделите поле, таблицу или запрос в списке полей на странице доступа к данным.
Таблица или запрос
Нажмите кнопку Мастера на панели элементов, если она еще не нажата, и щелкните таблицу или запрос.
Выполните одно из следующих действий.
Перетащите поле (поля) из списка полей в форму или отчет.
Перетащите поле, таблицу или запрос из списка полей на страницу доступа к данным. В диалоговом окне Мастер макетавыберите переключательОтдельные элементы.
Примечание.Поле или поля нужно именно перетаскивать из списка полей. Если выбрать поле или поля в списке полей, а затем щелкнуть форму, отчет или страницу доступа к данным, Microsoft Access не создаст элемент управления.
Для каждого выбранного в списке полей поля Access создает текстовое поле в форме, отчете или на странице доступа к данным. Каждое текстовое поле присоединено к одному полю базового источника записей. Каждое текстовое поле по умолчанию имеет присоединенную подпись.
Измените размер поля в соответствии с размером отображаемых в нем данных.
Измените при необходимости текст подписи.
Переключитесь в режим формы, режим таблицы, режим страницы или режим предварительного просмотра, чтобы протестировать работу элемента управления.
Примечание.Для текстовых полей формы, содержащих большое число строк текста, можно добавить вертикальную полосу прокрутки.
Следующие действия используются для создания отдельной надписи (не присоединенной к другому элементу управления). Чтобы создать надпись, присоединенную к элементу управления, просто создайте этот элемент управления. Microsoft Access автоматически присоединяет надпись к элементу во время его создания.
Откройте форму в режиме конструктора формы, отчет в режиме конструктора отчета или страницу доступа к данным в режиме конструктора страницы.
Нажмите кнопку Надписьа панели элементов.
В форме, отчете или на странице доступа к данным выберите место, где должна располагаться надпись, и введите ее текст.
Чтобы разместить текст надписи на нескольких строках в форме или отчете, измените размер надписи после ввода всего текста или нажмите в конце первой строки текста клавиши CTRL+ENTER для ввода символа возврата каретки. Если введен символ возврата каретки, последующие строки текста будут переноситься автоматически по мере ввода. Чтобы вручную вставить символ окончания строки в любой последующей строке, снова нажмите клавиши CTRL+ENTER. Максимальная ширина надписи определяется длиной первой строки текста.
Чтобы включить в текст надписи в форме или отчете символ амперсанда (&), нужно ввести два амперсанда. Это обусловлено тем, что Microsoft Access использует символы амперсанда в надписях и кнопках для определения клавиш доступа.
Откройте отчет в режиме конструктора.
Добавьте в область данных вычисляемое поле.
Чтобы открыть окно свойств поля, убедитесь, что нужное поле выбрано, и нажмите кнопку Свойстваа панели инструментов.
Введите выражение в ячейку свойства Данные (ControlSource).
Совет.В базе данных Microsoft Access (.mdb) можно нажать кнопкупостроителя, чтобы создать выражение с помощью построителя выражений.
Если отчет основан на запросе, можно поместить выражение в базовый запрос отчета. Это может повысить производительность отчета и, если требуется вычислять итоговые значения по группам записей, позволяет использовать имя вычисляемого поля в статистической функции.
Как убрать заголовок формы access
Как убрать заголовок у UserForm VBA
Иногда при разработке интерфейсов программы с помощью форм пользователя(UserForm) бывает необходимо запретить закрытие формы крестиком. Причин много: например на форме много элементов выбора и пользователь не должен просто закрывать форму крестиком, не выбрав что-то конкретное. Или может форма должна висеть постоянно на листе до тех пор, пока программа не сделает все необходимые действия и т.д.
Варианта два
Вариант 1
Можно просто запретить закрывать форму. Это значит, что после нажатия на крестик ничего не произойдет. Для этого надо перейти в модуль формы и на событие QueryClose прописать такой код:
P rivate Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = 0 Then ‘CloseMode = 0 — попытка закрыть форму крестиком Cancel = True ‘даем VBA понять, что надо отменить закрытие формы End If End Sub
P rivate Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then ‘CloseMode = 0 — попытка закрыть форму крестиком
Cancel = True ‘даем VBA понять, что надо отменить закрытие формы
данный код не даст закрыть форму нажатием на крестик, но если форма выгружается другими методами(вроде Unload) — форма закроется. За это отвечает параметр CloseMode, который может принимать следующие значения:
- 0 или vbFormControlMenu — попытка закрытия формы пользователем через элемент управления крестик
- 1 или vbFormCode — закрытие формы через выгрузку методом Unload
- 2 или vbAppWindows — завершение сеанса Windows(в кодах VBA практически не используется)
- 3 или vbAppTaskManager — завершение программы через диспетчер задач(в кодах VBA практически не используется)
Можно(скорее даже нужно!) дать понять пользователю, что он должен сделать что-то конкретное для закрытия формы и что крестиком это сделать нельзя, чтобы он не нервничал и не пытался завершить работу Excel через Clt + Alt + Delete ;
P rivate Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer) If CloseMode = 0 Then ‘CloseMode = 0 — попытка закрыть форму крестиком MsgBox "Вы должны нажать на кнопку в центре, чтобы закрыть форму", vbInformation, "www.excel-vba.ru" Cancel = True ‘даем VBA понять, что надо отменить закрытие формы End If End Sub
P rivate Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
If CloseMode = 0 Then ‘CloseMode = 0 — попытка закрыть форму крестиком
MsgBox "Вы должны нажать на кнопку в центре, чтобы закрыть форму", vbInformation, "www.excel-vba.ru"
Cancel = True ‘даем VBA понять, что надо отменить закрытие формы
Теперь при попытке закрыть форму крестиком пользователь увидит сообщение с инструкцией.
Вариант 2
Но порой надо не просто запретить закрывать форму — но и для эстетики убрать заголовок с крестиком вообще — чтобы не смущал пользователя. Здесь чуть посложнее — придется применить функции API. Код надо будет помещать уже на инициализацию формы(событие Initialize), а не на закрытие(QueryClose). Следующий код необходимо будет поместить в самое начало модуля той формы, меню которой требуется убрать(первой строкой или сразу после строк деклараций, таких как Option Explicit, Option Base, Option Compare Text):
‘ константы для функций API Private Const GWL_STYLE As Long = -16& ‘для установки нового вида окна Private Const GWL_EXSTYLE = -20& ‘для расширенного стиля окна Private Const WS_CAPTION As Long = &HC00000 ‘определяет заголовок Private Const WS_BORDER As Long = &H800000 ‘определяет рамку формы ‘Функции API, применяемые для поиска окна и изменения его стиля #If VBA7 Then Private Declare PtrSafe Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr Private Declare PtrSafe Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long) As LongPtr Private Declare PtrSafe Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr Private Declare PtrSafe Function DrawMenuBar Lib "User32" (ByVal hwnd As LongPtr) As Long #Else Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long Private Declare Function DrawMenuBar Lib "user32.dll" (ByVal hwnd As Long) As Long #End If
‘ константы для функций API
P rivate Const GWL_STYLE As Long = -16& ‘для установки нового вида окна
P rivate Const GWL_EXSTYLE = -20& ‘для расширенного стиля окна
P rivate Const WS_CAPTION As Long = &HC00000 ‘определяет заголовок
P rivate Const WS_BORDER As Long = &H800000 ‘определяет рамку формы
‘ Функции API, применяемые для поиска окна и изменения его стиля
Private Declare PtrSafe Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long, ByVal dwNewLong As LongPtr) As LongPtr
Private Declare PtrSafe Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hwnd As LongPtr, ByVal nIndex As Long) As LongPtr
Private Declare PtrSafe Function FindWindow Lib "User32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As LongPtr
Private Declare PtrSafe Function DrawMenuBar Lib "User32" (ByVal hwnd As LongPtr) As Long
Private Declare Function SetWindowLong Lib "User32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "User32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function DrawMenuBar Lib "user32.dll" (ByVal hwnd As Long) As Long
Это константы и функции API, которые и будут делать основную работу по удалению меню. Теперь останется на событие инициализации формы применить все эти функции:
Как установить заголовок окна формы в диалоговом режиме?
Как следует из названия, я хотел бы сейчас узнать, можно ли и как изменить текст, отображаемый в качестве заголовка окна, если я открою форму как диалог. Либо через макрос, либо через vba. Я не думаю, что в команде OpenForm есть опция . И я читал о свойстве AppTitle , которое меняет заголовок моего окна доступа (не то, что я хочу).
На следующем рисунке я хотел бы иметь другое название, чем Inhalt00001 .
Я знаю, что название обычно зависит от названия моей формы. Однако я хочу, чтобы заголовок диалога не зависел от указанного имени. Причина в том, что мне нужны две версии формы с разным содержанием, но с одинаковым названием.
2 ответа
Если я правильно понимаю ваш вопрос, вы можете поместить форму в представление дизайна, затем перейти к «Лист свойств»> «Формат»> «Заголовок» и изменить его на любое название. Во всяком случае, именно так это делается в Access 2010.
MS Access 2016 — удалить строку заголовка из формы, открытой как AcDialog
Я пытаюсь воспроизвести стиль Windows 10, полноэкранный модальный диалог с прозрачным фоном. У меня все работает отлично, за исключением заголовка.
Я не могу избавиться от этого. Я также отключил любое другое подклассов API для прозрачности окна. Borderstyle установлен в None, я скрыл все элементы управления заголовками. Форма установлена в Popup и Modal
Я открываю его так:
Это вызовы API, которые я делаю в событии Form_Load, чтобы попытаться избавиться от него:
Я определенно хочу, чтобы он прекратил обработку и ждал ввода. Я знаю трюк окна всплывающих окон, где вы помещаете цикл после его открытия, ожидая закрытия окна, но я не поклонник DoEvents, просто имеет тенденцию разбивать стек, особенно на более быстрых машинах.
Если это невозможно, есть способ отключить или поймать события заголовка, щелкнуть и перетащить его, чтобы восстановить окно из полноэкранного режима (но двойной щелчок по нему не максимизирует его?).
vba winapi ms-access
1 ответ
2 Решение theB [2016-06-03 15:26:00]
Там есть куча вещей, которые могут пойти не так.
Первое, что нужно проверить, состоит в том, имеет ли форма фактически дескриптор окна в событии загрузки формы. Это не так. (Это не в.net WinForms.) Установите SetWindowLong останова при вызове SetWindowLong или проверьте, имеет ли значение hwnd значение 0 до того, как вы выполните вызовы API.
Второе, что нужно проверить, — это то, что на самом деле являются значениями возврата из этих вызовов API. SetWindowLong возвращает 0, если функция SetWindowLong неудачей, если только стиль окна не начинался с 0, и в этом случае вам нужно вызвать SetLastError(0) перед вызовом и использовать результат GetLastError чтобы определить, действительно ли вызов был неудачным. В псевдокоде это выглядит так:
Также проверьте документацию на возвращаемое значение SetWindowPos . (Помните, что тип BOOL Windows API на самом деле является 32-битным целым.) Вы также должны использовать GetWindowLong чтобы посмотреть, есть ли еще какие-либо стили окна, применяемые к окну, потому что если окно все еще инициализируется и не получило его Пока еще WM_CREATE , он может находиться в неопределенном состоянии. Что хорошо ведет к следующей проверке.
Предполагая, что дескриптор формы действителен и что вызовы API все преуспевают, вероятность того, что окно вернет стиль окна во время инициализации, применит его свойства. Чтобы обойти это, вы можете перенести настройку своего стиля в форму Activate событие, которое происходит, когда форма окончательно показана и представлена пользователю.
Если это не работает, вы можете подклассифицировать оконную процедуру и обрабатывать сообщение WM_NCHITTEST . На английском языке это «Сообщение окна — проверка неклиентов». Сообщение отправляется оконной процедуре диспетчером окон, чтобы определить, в какой части окна находится мышь в любой заданной точке. Чтобы отключить все в HTCLIENT области 1 ответьте на сообщение с помощью HTCLIENT который говорит диспетчеру окна, что мышь находится в вашей области ответственности. (Это сообщение также позволяет вам создать форму, которая перетаскивается по ее фону.)
Если вы хотите полностью удалить панель заголовка, и вы не можете управлять им, установив стиль рамки на None единственным единственным вариантом будет обработка сообщения WM_NCPAINT и рисование области без клиента вручную. См. Документацию для примера того, как отвечать на это сообщение.
Оба последних двух решения требуют довольно много работы по программированию, но здесь есть много примеров на StackOverflow и в других местах в Интернете. Для обработки краски потребуется, как минимум, 4 или 5 дополнительных вызовов API. Это зависит от того, насколько важно удалить строку заголовка из формы.
1 Чтобы значительно упростить, область, не относящаяся к клиенту, представляет собой панель заголовков, системное меню, сворачивание и максимизация кнопок и границу окна. Клиентская область — это все остальное.