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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Контекстное меню для рунтайма
 
 автор: Скорп   (18.02.2008 в 19:18)   личное сообщение
 
 

где-то в дебрях инета нашел вот такую штуку

'Функция создания трех контекстых меню,
'и прописывания их формам и отчетам.
'Запускать единоразово в новой базе
Option Compare Database
Option Explicit


Const msoBarPopup = 5
Public Sub CreateMyPopupMenu()
On Error GoTo er
Dim i As Integer, a As Object, aName As String, n As String


'--------------- MyFormFull -------------------------------------------
aName = "MyFormFull"
On Error Resume Next
Set a = CommandBars(aName)
If Err.Number = 0 Then a.Delete
Err.Clear: On Error GoTo er
Set a = CommandBars.Add(aName, msoBarPopup)
a.Controls.Add 1, 640               '&Фильтр по выделенному
a.Controls.Add 1, 3017              'Искл&ючить выделенное
a.Controls.Add 2, 2863              'Фи&льтр для:
a.Controls.Add 1, 605               '&Удалить фильтр
a.Controls.Add 1, 21                '&Вырезать
a.Controls.Add 1, 19                '&Копировать
a.Controls.Add 1, 22                'Вст&авить
a.Controls.Add 1, 210               'Сортировка по во&зрастанию
a.Controls.Add 1, 211               'Сортировка по у&быванию
a.Controls(5).BeginGroup = True     'перед &Вырезать
a.Controls(8).BeginGroup = True     'перед Сортировка по во&зрастанию


'--------------- MyFormSmall -------------------------------------------
aName = "MyFormSmall"
On Error Resume Next
Set a = CommandBars(aName)
If Err.Number = 0 Then a.Delete
Err.Clear: On Error GoTo er
Set a = CommandBars.Add(aName, msoBarPopup)
a.Controls.Add 1, 21          '&Вырезать
a.Controls.Add 1, 19          '&Копировать
a.Controls.Add 1, 22          'Вст&авить


'--------------- MyReport -------------------------------------------
aName = "MyReport"
On Error Resume Next
Set a = CommandBars(aName)
If Err.Number = 0 Then a.Delete
Err.Clear: On Error GoTo er
Set a = CommandBars.Add(aName, msoBarPopup)
a.Controls.Add 4, 1733              'Мас&штаб:
a.Controls.Add 1, 5                 '&Одна страница
a.Controls.Add 16, 177              '&Несколько страниц
a.Controls.Add 1, 247               'Пара&метры страницы...
a.Controls.Add 1, 4                 '&Печать...
a.Controls(4).BeginGroup = True     'перед Пара&метры страницы...


'--------------- приклеить меню к формам ------------------------------
For i = 0 To CurrentDb.Containers("Forms").Documents.Count - 1
    n = CurrentDb.Containers("Forms").Documents(i).Name
    DoCmd.OpenForm n, acDesign, , , , acHidden
    SysCmd acSysCmdSetStatus, "Form: " & n
    DoEvents
    If Forms(n).ShortcutMenu Then
        If Forms(n).DefaultView = 0 Then
            Forms(n).ShortcutMenuBar = "MyFormSmall"
        Else
            Forms(n).ShortcutMenuBar = "MyFormFull"
        End If
    End If
    DoCmd.Close acForm, n, acSaveYes
Next


'--------------- приклеить меню к отчетам -----------------------------
For i = 0 To CurrentDb.Containers("Reports").Documents.Count - 1
    n = CurrentDb.Containers("Reports").Documents(i).Name
    SysCmd acSysCmdSetStatus, "Report: " & n
    DoEvents
    DoCmd.OpenReport n, acViewDesign, , , acHidden
    Reports(n).ShortcutMenuBar = "MyReport"
    DoCmd.Close acReport, n, acSaveYes
Next


'----------------------------------------------------------------------
SysCmd acSysCmdClearStatus
Exit Sub
er: MsgBox Err.Description, vbCritical, Err.Number
End Sub

работает ведь..то что мне нужно!
но помогите добавить еще один пункт, а именно поиск нужной записи! (Ну бинокль..)
если не трудно конечно вам

зы - как эта штука работает тоже не понимаю

  Ответить  
 
 автор: osmor   (19.02.2008 в 09:49)   личное сообщение
 
 

Везде где нужно добавить поиск вставьте строку:

a.Controls.Add 1, 141               'Поиск

  Ответить  
 
 автор: Скорп   (19.02.2008 в 18:24)   личное сообщение
 
 

2 osmor

  Ответить  
 
 автор: Скорп   (19.02.2008 в 19:30)   личное сообщение
 
 

как работает разобрался

Function msoShowIcon()
 Const conMAX_ICON_INDEX% = 3500
 Dim intLoopFirst%, intLoopSec%
 Dim strMSOBarName$
 Dim btn As CommandBarButton
 'внешний цикл создает панели инструментов
     For intLoopFirst = 1 To 3
         strMSOBarName = "msoICON_BAR_" & intLoopFirst
         CommandBars.Add strMSOBarName
         CommandBars(strMSOBarName).Visible = True
 'внутренний цикл заполняет панели кнопками
         Do
             Set btn = CommandBars(strMSOBarName _
                    ).Controls.Add(msoControlButton)
             With btn
                 .FaceId = intLoopSec
                 .TooltipText = CStr(intLoopSec)
             End With
                 intLoopSec = intLoopSec + 1
             If intLoopSec > conMAX_ICON_INDEX% Then
                Exit Function
             End If
         Loop While intLoopSec Mod 1000
     Next intLoopFirst
 End Function

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

  Ответить  
 
 автор: Скорп   (19.02.2008 в 19:42)   личное сообщение
 
 

вопрос снимается, разобрался
спасибо

  Ответить  
 
 автор: Егор   (20.02.2008 в 12:08)   личное сообщение
 
 

а куда вставлять данный код? :)

  Ответить  
 
 автор: Скорп   (20.02.2008 в 13:05)   личное сообщение
 
 

создаешь модуль, копируешь в него с форума код и запускаешь...
и по правой кнопке у тебя появляются менюшка, прописанная в коде...
сам модуль после этого можно или удалить, или оставить

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