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

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

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



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

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


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