Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Создал контекстное меню
 
 автор: час   (05.03.2009 в 10:46)   личное сообщение
 
 

Создал контекстное меню
Параметры запуска указал имя меню.
Отправил базу заказчику - у него оно пропало
посмотрел и у меня его нет
его как то может куда-то
====================================================

  Ответить  
 
 автор: KrukVN   (05.03.2009 в 10:50)   личное сообщение
 
 

ИМХО лучше программно создавать

  Ответить  
 
 автор: час   (05.03.2009 в 10:55)   личное сообщение
 
 

посоветуй вариант

  Ответить  
 
 автор: FORMAT   (05.03.2009 в 10:55)   личное сообщение
 
 

У мну ужо пол-года или болше стоит енто меню - никуда не девается.
Хотя я прописывал меню на каждой форме - на разных формах у меня разные контекстные менюшки.

  Ответить  
 
 автор: час   (05.03.2009 в 10:59)   личное сообщение
 
 

мну для отчётов надо
всегда пользовал встроенное - чё ба посоветуете какие нить по этому поводу разьяснялки тама как лучшее или проще сделать и отдать - будет пахать.

  Ответить  
 
 автор: Lukas   (05.03.2009 в 12:05)   личное сообщение
 
 

Во времена А2000 такая пропажа довольно часто встречалась и у меня.
С переходом на А2003 косячок исчез, и ни разу не встретился.
Наверное Валерий Николаевич прав, надо при запуске приложения создавать временную менюшку.

  Ответить  
 
 автор: KrukVN   (05.03.2009 в 12:35)   личное сообщение
 
 


посоветуй вариант


вот, нашел

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

но.. может можно красивше сделать

  Ответить  
 
 автор: osmor   (05.03.2009 в 12:59)   личное сообщение
 
 

я сегодня плохо соображаю... что на каждый правый клик будет удаляться и создаваться контекстное меню?

  Ответить  
 
 автор: Lukas   (05.03.2009 в 13:17)   личное сообщение
 
 

Не наговаривай на себя.
Судя по коду, так и будет. Это сделано судя по всему, для деактивации кнопок по условию.
Лучше конечно создавать один раз, при открытии формы, а активировать/деактивировать кнопки другой процедурой.
Для отчетов лучше создавать контекстное меню один раз, при запуске приложения.

  Ответить  
 
 автор: KrukVN   (05.03.2009 в 13:22)   личное сообщение
 
 

на каждый правый клик будет удаляться и создаваться контекстное меню

ага :)
но, по времени это ничего не стоит.
кроме того, этих менюшек по проекту довольно много. создавать их с разными именами не хочется. создаю всегда с одним именем. потом просто 'перезатираю'
+ в зависимости от прав доступа некоторые пункты меню активны/неактивны (а тут тоже нужно с объектом меню работать)
+ могут динамически создаваться/удаляться некоторые пункты в меню
вот поэтому и пересоздаю каждый раз. так проще вроде :/
*
а для отчета, конечно лучше создавать один раз. этож пример просто

  Ответить  
 
 автор: час   (05.03.2009 в 13:57)   личное сообщение
 
 

Итак красиво.........
================

Только никак в отчёт не пристрою код:

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

  Ответить  
 
 автор: KrukVN   (05.03.2009 в 14:01)   личное сообщение
 
 

Час, щас ужо буду па жопе лупить :)
ну где в отчете lst_Find_MouseDown?
я для отчета не делал, но там вроде можно на open код повесить

  Ответить  
 
 автор: час   (05.03.2009 в 14:06)   личное сообщение
 
 


Спасибо!!! помогло!!!
============================
а может
DoCmd.RunCommand acCmdPrint
пможет.........

  Ответить  
 
 автор: Lukas   (05.03.2009 в 14:26)   личное сообщение
 
 


Интересно - где наковырят значений для
cmdb.FaceId = 534


Заслал на мыло, изучай.

  Ответить  
 
 автор: час   (05.03.2009 в 19:34)   личное сообщение
 
 

Так это от Вас письмо пришло - а я думал-думал
- а я думал-думал

  Ответить  
 
 автор: Lukas   (05.03.2009 в 14:40)   личное сообщение
 
 

Почитай заодно здесь:
http://vbstreets.ru/VBA/Articles/65843.aspx

  Ответить  
 
 автор: KrukVN   (05.03.2009 в 15:13)   личное сообщение
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

  Ответить  
 
 автор: Lukas   (05.03.2009 в 15:19)   личное сообщение
 
 

+ требуется подключить офисную библиотеку, или использовать позднее связывание?
Это если код копировать в свой файл.

  Ответить  
 
 автор: KrukVN   (05.03.2009 в 15:24)   личное сообщение
 
 

можно и позднее связывание. а я просто библиотеку подключил, т.к. лень

  Ответить  
 
 автор: час   (05.03.2009 в 19:37)   личное сообщение
 
 

Дааааааааааа позднее связывание- оно чудесно, но если OFFice на компе нет, то врядли подмогнёт.....

=================================
Спасибо Вам большое за помощь, за отклик, за доброжелательность

  Ответить  
 
 автор: KrukVN   (06.03.2009 в 10:13)   личное сообщение
 
 

а разве к рантайму эта библиотека не идет?
*
вот, нашел: c:\Program Files\Common Files\Microsoft Shared\OFFICE12\MSO.DLL
это к рантайму 2007

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList