|
|
|
| Создал контекстное меню
Параметры запуска указал имя меню.
Отправил базу заказчику - у него оно пропало
посмотрел и у меня его нет
его как то может куда-то
==================================================== | |
|
| |
|
|
|
| ИМХО лучше программно создавать | |
|
| |
|
|
|
|
| У мну ужо пол-года или болше стоит енто меню - никуда не девается.
Хотя я прописывал меню на каждой форме - на разных формах у меня разные контекстные менюшки. | |
|
| |
|
|
|
| мну для отчётов надо
всегда пользовал встроенное - чё ба посоветуете какие нить по этому поводу разьяснялки тама как лучшее или проще сделать и отдать - будет пахать. | |
|
| |
|
|
|
| Во времена А2000 такая пропажа довольно часто встречалась и у меня.
С переходом на А2003 косячок исчез, и ни разу не встретился.
Наверное Валерий Николаевич прав, надо при запуске приложения создавать временную менюшку. | |
|
| |
|
|
|
|
вот, нашел
Private Sub lst_Find_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = acRightButton Then
Call PopUpMnu(Me)
End If
End Sub
'Контекстное меню
Private Sub PopUpMnu(ByVal frm As Form)
On Error Resume Next
Dim cmdbarPopUp As Variant
Dim cmdb As Variant
Application.CommandBars.Item("PopUpMnu").Delete
Set cmdbarPopUp = Application.CommandBars.Add("PopUpMnu", 5, , False)
Set cmdb = cmdbarPopUp.Controls.Add(1)
cmdb.Caption = "Открыть (Enter)"
cmdb.FaceId = 534
cmdb.OnAction = "=OpenRec()"
cmdb.Enabled = frm.tbr_list.Buttons("RecEdit").Enabled
Set cmdb = cmdbarPopUp.Controls.Add(1)
cmdb.Caption = "Добавить (Ins)"
cmdb.FaceId = 535
cmdb.OnAction = "=NewRec()"
cmdb.Enabled = frm.tbr_list.Buttons("RecAdd").Enabled
Set cmdb = cmdbarPopUp.Controls.Add(1)
cmdb.BeginGroup = True
cmdb.Caption = "Выбрать!"
cmdb.FaceId = 533
cmdb.OnAction = "=ViborRec()"
cmdb.Enabled = frm.tbr_list.Buttons("Vibor").Enabled
Set cmdb = cmdbarPopUp.Controls.Add(1)
cmdb.BeginGroup = True
cmdb.Caption = "Удалить (Del)"
cmdb.FaceId = 536
cmdb.OnAction = "=DelRec()"
cmdb.Enabled = frm.tbr_list.Buttons("RecDel").Enabled
Set cmdb = Nothing
Set cmdbarPopUp = Nothing
frm.lst_find.ShortcutMenuBar = "PopUpMnu"
End Sub
|
но.. может можно красивше сделать | |
|
| |
|
|
|
| я сегодня плохо соображаю... что на каждый правый клик будет удаляться и создаваться контекстное меню? | |
|
| |
|
|
|
| Не наговаривай на себя.
Судя по коду, так и будет. Это сделано судя по всему, для деактивации кнопок по условию.
Лучше конечно создавать один раз, при открытии формы, а активировать/деактивировать кнопки другой процедурой.
Для отчетов лучше создавать контекстное меню один раз, при запуске приложения. | |
|
| |
|
|
|
|
на каждый правый клик будет удаляться и создаваться контекстное меню
|
ага :)
но, по времени это ничего не стоит.
кроме того, этих менюшек по проекту довольно много. создавать их с разными именами не хочется. создаю всегда с одним именем. потом просто 'перезатираю'
+ в зависимости от прав доступа некоторые пункты меню активны/неактивны (а тут тоже нужно с объектом меню работать)
+ могут динамически создаваться/удаляться некоторые пункты в меню
вот поэтому и пересоздаю каждый раз. так проще вроде :/
*
а для отчета, конечно лучше создавать один раз. этож пример просто | |
|
| |
|
|
|
| Итак красиво.........
================
Только никак в отчёт не пристрою код:
Private Sub lst_Find_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = acRightButton Then
Call PopUpMnu(Me)
End If
End Sub
|
======================================
Интересно - где наковырят значений для
cmdb.FaceId = 534 | |
|
| |
|
|
|
| Час, щас ужо буду па жопе лупить :)
ну где в отчете lst_Find_MouseDown?
я для отчета не делал, но там вроде можно на open код повесить | |
|
| |
|
|
|
|
Спасибо!!! помогло!!!
============================
а может
DoCmd.RunCommand acCmdPrint
пможет......... | |
|
| |
|
|
|
|
Интересно - где наковырят значений для
cmdb.FaceId = 534
|
Заслал на мыло, изучай. | |
|
| |
|
|
|
| Так это от Вас письмо пришло - а я думал-думал
- а я думал-думал | |
|
| |
|
|
20 Кб. |
|
| вот, еще сделал еще один варварский метод :) для определения id иконки
создает bmp-файлы с именем = ID иконки
Function PreviewAllIcons()
Dim MenuCommandBar As CommandBar 'Меню
Dim MenuBarButton As CommandBarButton
Dim i As Integer
On Error Resume Next
CommandBars.Item("test").Delete
On Error GoTo 0
Set MenuCommandBar = CommandBars.Add("test")
For i = 0 To 3518 Step 1
Set MenuBarButton = MenuCommandBar.Controls.Add(msoControlButton)
MenuBarButton.FaceId = i
Call SavePicture(MenuBarButton.Picture, CurrentProject.Path & "\ico\" & i & ".bmp")
MenuBarButton.Delete
Next i
CommandBars.Item("test").Delete
Set MenuCommandBar = Nothing
Set MenuBarButton = Nothing
End Function
|
внимание: требуется наличие папки ico в CurrentProject.Path | |
|
| |
|
|
|
| + требуется подключить офисную библиотеку, или использовать позднее связывание?
Это если код копировать в свой файл. | |
|
| |
|
|
|
| можно и позднее связывание. а я просто библиотеку подключил, т.к. лень | |
|
| |
|
|
|
| Дааааааааааа позднее связывание- оно чудесно, но если OFFice на компе нет, то врядли подмогнёт.....
=================================
Спасибо Вам большое за помощь, за отклик, за доброжелательность | |
|
| |
|
|
|
| а разве к рантайму эта библиотека не идет?
*
вот, нашел: c:\Program Files\Common Files\Microsoft Shared\OFFICE12\MSO.DLL
это к рантайму 2007 | |
|
| |