Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft Access Новый топик    Ответить
 При программном задании заголовка окна приложения слетает меню  [new]
КД
Member

Откуда:
Сообщений: 932
Задача: создать заголовок приложения, в котором прописывается открывший его пользователь
Помещаем необходимый код (выделено зеленым) в модуль параметров загрузки базы
Sub SetStartupProperties()
Dim intX As Integer
Rem Const DB_Text As Long = 10


ChangeProperty "StartupForm", dbText, "frmZastavka0"
ChangeProperty "StartupShowDBWindow", dbBoolean, False
ChangeProperty "StartupShowStatusBar", dbBoolean, False
ChangeProperty "AllowBuiltinToolbars", dbBoolean, False
ChangeProperty "AllowFullMenus", dbBoolean, False
ChangeProperty "AllowBreakIntoCode", dbBoolean, False
ChangeProperty "AllowSpecialKeys", dbBoolean, False
ChangeProperty "AllowBypassKey", dbBoolean, False
ChangeProperty "AllowShortcutMenus", dbBoolean, False

intX = AddAppProperty("AppTitle", dbText, "АНАЛИЗ РЕЗУЛЬТАТОВ. Сеанс: & CurrentUser() & ";")
Rem intX = AddAppProperty("AppIcon", DB_Text, "C:\Windows\Cars.bmp")
Application.RefreshTitleBar

End Sub

Function ChangeProperty(strPropName As String, varPrchkype As Variant, varPropValue As Variant) As Integer

Dim dbs As DAO.Database
Dim prp As DAO.Property
Const conPropNotFoundError = 3270

Set dbs = CurrentDb
On Error GoTo Change_Err
dbs.Properties(strPropName) = varPropValue
ChangeProperty = True

Change_Bye:
Exit Function

Change_Err:
If Err = conPropNotFoundError Then ' Свойство не найдено
Set prp = dbs.CreateProperty(strPropName, varPrchkype, varPropValue)
dbs.Properties.Append prp
Resume Next
Else
' Неизвестная ошибка
ChangeProperty = False
Resume Change_Bye
End If
End Function

Function AddAppProperty(strName As String, varType As Variant, varValue As Variant) As Integer
Rem Dim dbs As Object, prp As Variant
Dim dbs As DAO.Database
Dim prp As DAO.Property
Const conPropNotFoundError = 3270

Set dbs = CurrentDb
On Error GoTo AddProp_Err
dbs.Properties(strName) = varValue
AddAppProperty = True

AddProp_Bye:
Exit Function

AddProp_Err:
If Err = conPropNotFoundError Then
Set prp = dbs.CreateProperty(strName, varType, varValue)
dbs.Properties.Append prp
Resume
Else
AddAppProperty = False
Resume AddProp_Bye
End If
End Function


Все хорошо, заголовок содержит пользователя.
Но! У меня (админа) в созданном меню "Private" куда-то делась вкладка "Сервис", а также некоторые команды в других вкладках, например "Отобразить" в "Окно".
В чем причина?
5 авг 05, 00:50    [1765617]     Ответить | Цитировать Сообщить модератору
 Re: При программном задании заголовка окна приложения слетает меню  [new]
Alexander G
Member

Откуда: Чукчи мы, однако
Сообщений: 3270
КД
З
Все хорошо, заголовок содержит пользователя.
Но! У меня (админа) в созданном меню "Private" куда-то делась вкладка "Сервис", а также некоторые команды в других вкладках, например "Отобразить" в "Окно".
В чем причина?

Тут:
ChangeProperty "AllowFullMenus", dbBoolean, False
5 авг 05, 01:45    [1765652]     Ответить | Цитировать Сообщить модератору
 Re: При программном задании заголовка окна приложения слетает меню  [new]
КД
Member

Откуда:
Сообщений: 932
Так оно у меня вроде и раньше в таком состоянии -ChangeProperty "AllowFullMenus", dbBoolean, False
висело, и все было на месте. А для отображения созданного специального меню на загрузочной форме висела процедурка, определяющая, кто подключается:

If acbAmMemberOfGroup("Admins") Then

DoCmd.ShowToolbar "Private", acToolbarYes
и т.д.
AllowFullMenus - это, как я понимаю, полное меню, которое по умолчанию висит: Файл, Правка и т.д. Какое отношение оно имеет к созданному мной специальному?
5 авг 05, 07:37    [1765753]     Ответить | Цитировать Сообщить модератору
 Re: При программном задании заголовка окна приложения слетает меню  [new]
Alexander G
Member

Откуда: Чукчи мы, однако
Сообщений: 3270
КД
Так оно у меня вроде и раньше в таком состоянии -ChangeProperty "AllowFullMenus", dbBoolean, False
висело, и все было на месте.

Если бы это было так, то у стандартного меню базы было бы всего три пункта- Файл, Окно и Справка. Попробуйте на тестовой базке снять эту галочку.

Поскольку вы, видимо, просто скопировали остальные пункты (Сервис, Правка...) в свое меню, то они тоже отключаются.
5 авг 05, 07:51    [1765765]     Ответить | Цитировать Сообщить модератору
 Re: При программном задании заголовка окна приложения слетает меню  [new]
КД
Member

Откуда:
Сообщений: 932
То Alexander G
Спасибо! Переставил на True, помогло. Но когда первый раз сам вошел под своим именем заголовок поменялся, а когда в другой раз под другим - нет.
5 авг 05, 08:56    [1765847]     Ответить | Цитировать Сообщить модератору
 Re: При программном задании заголовка окна приложения слетает меню  [new]
КД
Member

Откуда:
Сообщений: 932
"первый раз сам вошел под своим именем заголовок поменялся, а когда в другой раз под другим - нет"
Нашел! Гетц, Сб. рецептов, с.229. Копируйте модуль basCaption, на загрузку начальной формы (я так сделал) вешаем:
Call acbSetAccessCaption("Тут пишем что нужно. Сеанс: " & CurrentUser() & "")
Пихать этот вызов в общий модуль, по-видимому, бесполезно. По крайней мере, у меня из модуля параметров загрузки БД он не вызывался.
И чтобы делали такие дураки как я, не будь Гетца? Кстати, о Гетце. Кто-н. смотрел 2-е изд. "Сборника рецептов", чем и насколько отличается от первого?
5 авг 05, 22:37    [1769018]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft Access Ответить