ник: MS_4G
Здравствуйте все!
Получилось так, что я и сам дотумкал, что надо что-то написать в свойстве OnAction. Тем не менее всем спасибо, кто откликнулся. Ниже я привожу текст скрипта, который предыдущую проблему решает (может быть, там кое-что избыточно, я в этом пока не разбирался, но сейчас это не очень важно), требуемая форма Форм1 открывается и нормально работает, но при этом возникает новая проблема (о чем раньше речи не было), с которой пока не разобрался.
Суть в следующем.
Когда форма Форм1 открывается, вместе с ней должна появляться еще одна панелька Пнл2, в которой помещены некоторые стандартные и пользовательские кнопки, а после завершения работы с формой панелька должна закрываться. Опять же вручную это делается элементарно: заносится имя этой панельки в свойства формы Форм1 (вкладка Другие). Нужно, чтобы панелька открывалась программно и могла быть аналогично использована. В приводимом скрипте панелька Пнл2 открывается (становится видимой), но доступа к ней нет, на нажатие любых кнопок идет сигнал. Enable не помогает. Правда, после закрытия формы Форм1 панелька закрывается. Может быть, проблема в том, что форма Форм1 программно открывается в режиме диалога, но нужно, чтобы эта форма сначала отработала, и только потом приложение пойдет работать дальше.
Заранее спасибо.
Sub AddButton()
Dim comBar As CommandBar
Dim CBarCtl As CommandBarControl
' Предполагается, что "Пнл1" уже существует
Set comBar = CommandBars("Пнл1")
Set CBarCtl = comBar.Controls.Add(msoControlButton, , "Форм1", 6)
With CBarCtl
.Caption = "Форм1"
.TooltipText = "Открытие формы 'Форм1'"
.Style = 3
.DescriptionText = "Открытие формы 'Форм1'"
.FaceId = 1837
.OnAction = "=open_frm('Форм1')"
End With 'CBarCtl
End Sub
Function open_frm(ByVal strName As String)
FormsVis
DoCmd.OpenForm strName, , , , acFormEdit, acDialog
FormsNotVis
End Function
Sub FormsVis()
' Предполагается, что "Пнл2" уже существует
Set comBar = CommandBars("Пнл2")
comBar.Visible = True
For Each CBarCtl In comBar.Controls
CBarCtl.Enabled = True
Next 'For Each CBarCtl In comBar.Controls
End Sub
Sub FormsNotVis()
Set comBar = CommandBars("Пнл2")
comBar.Visible = False
End Sub