Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ribbon / 6 сообщений из 6, страница 1 из 1
29.03.2016, 14:28
    #39203244
noobs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ribbon
Можно ли в Ribbon добавить кнопку с формы?
Например есть на форме кнопка "Отчет", как отобразить ее на ленте и при нажатии выполнялся тот же код?
...
Рейтинг: 0 / 0
29.03.2016, 15:26
    #39203317
\\\\
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ribbon
noobsМожно ли в Ribbon добавить кнопку с формы?
Например есть на форме кнопка "Отчет", как отобразить ее на ленте и при нажатии выполнялся тот же код?

А искать не пробовал?

Ribbon
...
Рейтинг: 0 / 0
29.03.2016, 16:46
    #39203402
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ribbon
Можно. Для этого выносим код с кнопки в функцию (не Sub!) в той же форме, а в кнопке на риббоне по OnAction вызываем эту функцию:
Код: vbnet
1.
onAction="=CommandEdit()"



Это, соответственно, вызовет функцию CommandEdit() на текущей активной форме.
...
Рейтинг: 0 / 0
29.03.2016, 16:53
    #39203411
__Michelle
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ribbon
Также функция может быть размещена в стандартном модуле.
Тогда она будет вызываться даже тогда, когда ни одна форма не открыта.
...
Рейтинг: 0 / 0
29.03.2016, 16:54
    #39203413
Slavinag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ribbon
Можно.

В XML-коде ленты создаётся нужная кнопка и указывается процедура обработки действий ленты.

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="OnLoad">

<!-- Перед публикацией поменять на true. -->
<ribbon startFromScratch="false">

<!-- Вкладки меню на ленте. На самом деле планируется всего одна вкладка и на ней рабочая группа и несколько специально активированных стандартных. -->
<tabs>

<tab id="dbCustomTab" label=" ~ НАША СУПЕР ПРОГРАММА ~ " visible="true">

<group id="dbCustomGroup" label="Секретно">
	<splitButton id="MainFormMenu" size="large"> <!-- или size="normal" -->
		<button id="cmdDisp" imageMso ="ControlPaddingGallery" label="Диспетчер форм" onAction="fncOnAction" screentip="Главное рабочее меню системы"/>
		<menu id="MenuDD" itemSize="normal"> <!-- или itemSize="large" -->
			
			<button id="cmdFormButtonReport"	onAction="fncOnAction" getEnabled="IsRibbonControlEnabled" label="Тот Самый Отчётец"		imageMso="AccountMenu"				description="Ну это же кнопка из формы, чё не понятного то?"			screentip="Можно жать без опасений"/>

			<button id="cmdHelp"		onAction="fncOnAction" getEnabled="IsRibbonControlEnabled" label="Справка"			imageMso="Help"					description="Справочная информация по системе - краткая инструкция пользователей"	screentip="Справочная информация по системе - краткая инструкция пользователей"/>
			<menuSeparator id="myMenuSep1"/>
			<button id="cmdExit"		onAction="fncOnAction" getEnabled="IsRibbonControlEnabled" label="Выход из системы"		imageMso="PrintPreviewClose"			description="Выход из программы"							screentip="Завершение работы с ситемой"/>
		</menu>
	</splitButton>
</group>

<!-- Кнопка "Выход". Ещё одна. Большая. -->
<group id="ClearExit" label="Выход">
	<button id="cmdExit2" onAction="fncOnAction" getEnabled="IsRibbonControlEnabled" label="Выход" size="large" imageMso="PrintPreviewClose" screentip="Завершение работы с ситемой"/>
</group>
</tab>	<!-- Конец главной рабочей вкладки -->
</tabs>
</ribbon>
</customUI>





А в любом общем модуле VBA эта сама процедура программируется:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
'-----------------------------------------------------------------------------------------------------------
'Процедура с ответными действиями (коллбэками) для разных контролов ленты.
'-----------------------------------------------------------------------------------------------------------
    Public Sub fncOnAction(control As IRibbonControl)

        'Перехват обработки ошибок.
        On Error GoTo Err_fncOnAction
    
        'Локальные переменные.
        Dim frmName As Form
        
        'Назначение действий для элементов меню и кнопок ленты.
        Select Case control.ID

        Case "cmdDisp"

            DoCmd.OpenForm "Диспетчер форм"

        Case "cmdFormButtonReport"

            DoCmd.OpenReport "ОтчётПоКнопкеИзТойСамойФормы"

        Case "cmdHelp"

            FollowHyperlink "\\Fileserver\НашЛюбимыйСервер\ДокументацияНахренНикемНеЧитаемая\РуководствоПользователя.doc"

        Case "cmdExit", "cmdExit2", "cmdExit1"

            If MsgBux("Вы действительно хотите выйти из системы?", _
                "Закрыть программу и вернуться в Windows?", vbQuestion + vbYesNo, "Выход") = vbYes Then

                'Игнорирование ошибок.
                On Error Resume Next
                
                'Отмена вывода предупреждений на экран.
                Application.Echo False
                DoCmd.SetWarnings False
                
                'Закрыть все открытые формы прилождения перед выходом.
                For Each frmName In Application.Forms

                    If IsLoaded(frmName.Name) Then
                        DoCmd.Close acForm, frmName.Name, acSaveNo
                    End If

                Next
                
                'Application.Quit acQuitSaveNone 'acQuitSaveAll
                DoCmd.Quit acQuitSaveNone
                
                Exit Sub
            
            End If
       
        Case Else
        
            MsgBux "Ещё в процессе разработки вызов для кнопки для объекта меню:", control.ID, _
                vbInformation, "Пока не реализовано"
        
        End Select

'Нормальное завершение процедуры.
Exit_fncOnAction:
        Exit Sub

'Обработка ошибок.
Err_fncOnAction:

        If Err.Number = 3146 Then
            MsgBux "ОБЩАЯ ПРОБЛЕМА СЕТЕВОГО СОЕДИНЕНИЯ !!!", "Нет связи с сервером баз данных." & vbCrLf & vbCrLf & _
                "Код ошибки: " & Err.Number & vbCrLf & vbCrLf & _
                Err.Description, vbCritical, "Модуль [Perms] -> Sub [fncOnAction]"
        Else
            MsgBux Err.Description, "Код ошибки: " & Err.Number, vbCritical, "Модуль [Perms] -> Sub [fncOnAction]"
        End If
        Resume Exit_fncOnAction

    End Sub



Как-то так.
...
Рейтинг: 0 / 0
30.03.2016, 06:26
    #39203766
noobs
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ribbon
Спасибо большое за подробное объяснения.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Ribbon / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]