powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Загрузка пользовательской ленты Ribbon
10 сообщений из 10, страница 1 из 1
Загрузка пользовательской ленты Ribbon
    #39487902
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Если бд открывать обычным способом, то лента отображается, но если вначале запустить бд с удержанием Shift, то лента больше не отображается, пока база не будет закрыта, офигенно не удобно.
Можно ли как то запускать свою личную ленту Ribbon, если база была открыта с нажатым Shift-ом?
...
Рейтинг: 0 / 0
Загрузка пользовательской ленты Ribbon
    #39488323
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nataxa23,

точно нет
лента(ы) грузится на самом старте и Shift это дело обходит, кроме своих родных
...
Рейтинг: 0 / 0
Загрузка пользовательской ленты Ribbon
    #39488584
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игортанточно нет
лента(ы) грузится на самом старте и Shift это дело обходит, кроме своих родных
хм... странно, тогда почему даже если бд была открыта с нажатым Shift-ом, а на форме указать имя своей ленты Ribbon, то при открытии формы пользовательская лента отображается до тех пор, пока форму не закрыть? Она же как то подгружается в этом случае? Правда со стартовой формой так не прокатывает - она просто мелькает один раз, затем снова скрывается.
...
Рейтинг: 0 / 0
Загрузка пользовательской ленты Ribbon
    #39488628
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А зачем это нужно?
Создайте отладочную конфигурацию, при которой грузится лента вместе с системной лентой, но при этом остальной код не запускается.
Но вообще, конечно, ленту не доделали, много чего нет.
...
Рейтинг: 0 / 0
Загрузка пользовательской ленты Ribbon
    #39488656
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nataxa23хм... странно, тогда почему даже если бд была открыта с нажатым Shift-ом, а на форме указать имя своей ленты Ribbon, то при открытии формы пользовательская лента отображается до тех пор, пока форму не закрыть? Она же как то подгружается в этом случае? Правда со стартовой формой так не прокатывает - она просто мелькает один раз, затем снова скрывается.
а вот это и мне интересно...
А у вас вкладка для формы - контесктная или основная?
...
Рейтинг: 0 / 0
Загрузка пользовательской ленты Ribbon
    #39488723
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игортана вот это и мне интересно...
А у вас вкладка для формы - контесктная или основная?
основная. Кстати, а в чем различие между основной и контекстной вкладками?
Если только в том, чтобы скрывать для других форм, то основную вкладку можно так же скрывать, если надо.
MrShinА зачем это нужно?
если я как админ запускаю с шифтом например для каких то исправлений, то в последствии, мне приходится отображать окно навигационной панели, чтобы открыть нужную форму для проверки и тестироваия. В этой связи пришлось сделать себе даже вывод навигационной панели программно, дабы не лазить каждый раз с перезагрузками в настройки акса.
MrShinСоздайте отладочную конфигурацию, при которой грузится лента вместе с системной лентой, но при этом остальной код не запускается.
не совсем понимаю предложенное, что значит: « Создайте отладочную конфигурацию »?
К тому же, для себя недавно выяснила, что не все опции со вкладками я могу программно по условию включать и отключать. Например в Backstage, что получается ни туда-ни сюда. Кстати именно Игортан помог мне с этим вопросом. Я его здесь задавала в одном посте. Спс ему еще раз.
В xml-коде чтобы по условию сделать доступными для админа и не доступными для юзеров параметры аксеса на вкладке «Файл», я использую:
Код: xml
1.
2.
3.
4.
5.
...
<commands>
    <command idMso="ApplicationOptionsDialog" getEnabled="GetEnabled"/>
</commands>
...


Остальное убираю в backstage. Т.е. короче говоря все какое то половинчатое (50%-ное). Вроде для разработчика дают какие то возможности, но при этом они какие то не серьезные что ли. Не знаешь как приспособиться.
MrShinНо вообще, конечно, ленту не доделали, много чего нет.
Да и не только ленту.
...
Рейтинг: 0 / 0
Загрузка пользовательской ленты Ribbon
    #39488745
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nataxa23,

контекстная - та, что открывается автоматически при открывании формы(например), как из стандартных - меню конструктора форм и т.п.
Я уже писал. Я формирую ленту при старте. Перед тем, как скормить xml самому аксу.
Есть конечно неудобство. Вошел (перед этим форма ввода логина и пароля) в режиме разраба - все есть, своя лента и стандартная.
Запустил от оператора - имеешь только свою ленту(для некоторых свойств приходится перезапускать лишний раз).

Еще поиграйте с
Код: vbnet
1.
<ribbon startFromScratch="true" >


меняя на false посмотрите на ленту

А вот мне стало интересно. При запуске с шифтом лента не появляется, но, получается, загружена...
и даже после запуска с шифтом есть возможность добраться до самой ленты..
Вероятно у вас лента лежит в таблице UsysRibbon (так вроде называется). Из таблицы с таким именем пользовательская лента подтягивается вообще автоматом, читал где то здесь такое...
...
Рейтинг: 0 / 0
Загрузка пользовательской ленты Ribbon
    #39488778
Вакшуль Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nataxa23Можно ли как то запускать свою личную ленту Ribbon, если база была открыта с нажатым Shift-ом?

Возможно вас устроит немного другой вариант:
- Галочка "Полный набор меню Access" должна стоять
- в xml коде вашей ленты должно быть указано
Код: plaintext
ribbon startFromScratch="false"
- запускайте базу не удерживая Shift.

Этим вы добьетесь того, что и ваша лента и стандартная лента Access будут вам доступны одновременно.
Вы же этого хотели, если я вас правильно понял.
...
Рейтинг: 0 / 0
Загрузка пользовательской ленты Ribbon
    #39488779
Вакшуль Сергей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если нужно, добавьте еще галочку "область навигации"
...
Рейтинг: 0 / 0
Загрузка пользовательской ленты Ribbon
    #39488798
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nataxa23не совсем понимаю предложенное, что значит: « Создайте отладочную конфигурацию »?
Я делаю так: в опциях программы есть галочка "перейти в отладочный режим", под паролем. Есть 2 версии ленты, разрабатывается только отладочная, в продакшн конвертируется кодом, включая замену бэкстеджа:



Код: 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.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
' в форме опций:

If Me.chkDebugMode Then
    strRibbon = "Swan_DB_debug"
Else
    strRibbon = "Swan_DB"
    
    strBackStage = _
    "  <backstage>" & vbCrLf & _
    "     <button idMso=""FileCloseDatabase"" visible=""true""/>" & vbCrLf & _
    "     <button idMso=""SaveObjectAs"" visible=""false""/>" & vbCrLf & _
    "     <button idMso=""FileSaveAsCurrentFileFormat"" visible=""false""/>" & vbCrLf & _
    "     <button idMso=""FileOpen"" visible=""false""/>" & vbCrLf & _
    "     <button idMso=""FileSave"" visible=""false""/>" & vbCrLf & _
    "     <tab idMso=""TabInfo"" visible=""true""/>" & vbCrLf & _
    "     <tab idMso=""TabRecent"" visible=""false""/>" & vbCrLf & _
    "     <tab idMso=""TabNew"" visible=""false""/>" & vbCrLf & _
    "     <tab idMso=""TabPrint"" visible=""false""/>" & vbCrLf & _
    "     <tab idMso=""TabShare"" visible=""false""/>" & vbCrLf & _
    "     <tab idMso=""TabHelp"" visible=""false""/>" & vbCrLf & _
    "     <button idMso=""ApplicationOptionsDialog"" visible=""true""/>" & vbCrLf & _
    "     <button idMso=""FileExit"" visible=""true""/>" & vbCrLf & _
    "  </backstage>"
    
    strRes = ConvertRibbonDebugToProd("Swan_DB_debug", "Swan_DB", strBackStage)
    If strRes <> "" Then
        Err.Raise vbObjectError + 514, "ConvertRibbonDebugToProd", strRes
    End If
End If

SetAppRibbon strRibbon

MsgBox "You must close and reopen the current database for the specified option to take effect." & vbNewLine & _
        "You can use menu System -> Restart", vbInformation

'---------------------------------------------------------------------------------------
' Procedure : ConvertRibbonDebugToProd
' Purpose   : Converts debug ribbon to production with startFromScratch="true", hidden context system tabs and backstage
'---------------------------------------------------------------------------------------
'
Public Function ConvertRibbonDebugToProd(strRibbonDebug As String, strRibbonProd As String, Optional strBackStage As String = "") As String

    Dim varXML As Variant
    Dim strHideContTabs As String

   On Error GoTo ErrorHandler

  If strRibbonDebug = "" Or strRibbonProd = "" Then
        ConvertRibbonDebugToProd = "Argument(s) empty"
        Exit Function
    End If
    
    varXML = DLookup("RibbonXML", "USysRibbons", "RibbonName='" & strRibbonDebug & "'")
    
    If IsNull(varXML) Then
        ConvertRibbonDebugToProd = "Ribbon """ & strRibbonDebug & """ not found in USysRibbons"
        Exit Function
    End If
    
    'start from scratch
    varXML = Replace(varXML, "startFromScratch=""false""", "startFromScratch=""true""")
    
    'tags
    varXML = Replace(varXML, ":=" & strRibbonDebug & ";", ":=" & strRibbonProd & ";")
    
    'disable contextual system tabs
    
    If InStr(1, varXML, "</contextualTabs>") > 0 Then
        strHideContTabs = _
        "  <tabSet idMso=""TabSetFormDatasheet"" visible=""false"" />" & vbCrLf
        varXML = Replace(varXML, "</contextualTabs>", strHideContTabs & "</contextualTabs>")
    Else
        strHideContTabs = _
        "    <contextualTabs>" & vbCrLf & _
        "      <tabSet idMso=""TabSetFormDatasheet"" visible=""false"" />" & vbCrLf & _
        "    </contextualTabs>" & vbCrLf & "  "
    
        varXML = Replace(varXML, "</ribbon>", strHideContTabs & "</ribbon>")
    End If
    
    'backstage
    If Len(Trim(strBackStage)) > 0 Then
        varXML = Replace(varXML, "</customUI>", strBackStage & vbCrLf & "</customUI>")
    End If

    ' write back new XML
    With DBEngine(0)(0).OpenRecordset("USysRibbons", dbOpenDynaset)
        .FindFirst "[RibbonName] = '" & strRibbonProd & "'"
        If .NoMatch Then
            .AddNew
                ![RibbonName] = strRibbonProd
                ![RibbonXml] = varXML
            .Update
        Else
            .Edit
                ![RibbonXml] = varXML
            .Update
        End If
        .Close
    End With

ExitHere:
   On Error Resume Next
   Exit Function

ErrorHandler:
Select Case Err
Case 0
   Resume Next
Case Else
   LogError Err.Number, Err.Description, Erl, "ConvertRibbonDebugToProd", "basRibbon"
   Resume ExitHere
End Select

    
End Function

'---------------------------------------------------------------------------------------
' Procedure : SetAppRibbon
' Purpose   : Sets the ribbon, lodas to USysRibbons as default application ribbon. Access restart required
'---------------------------------------------------------------------------------------
'
Public Function SetAppRibbon(strRibbon As String) As Boolean

     On Error Resume Next
     CurrentDb.Properties("CustomRibbonID").Value = strRibbon
     If Err.Number = 3270 Then
         Err.Clear
         CurrentDb.Properties.Append CurrentDb.CreateProperty("CustomRibbonID", dbText, strRibbon)
         If Err.Number <> 0 Then GoTo ErrorHandler
     End If
    On Error GoTo ErrorHandler


ExitHere:
   On Error Resume Next
   Exit Function

ErrorHandler:
Select Case Err
Case 0
   Resume Next
Case Else
   LogError Err.Number, Err.Description, Erl, "SetAppRibbon", "basRibbon"
   Resume ExitHere
End Select


End Function



После этого достаточно перезапустить приложение, и все становится доступно безо всяких шифтов. Перезапуск тоже кнопкой в ленте.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Загрузка пользовательской ленты Ribbon
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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