powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Небольшой FAQ по ribbons (лента)... как это было у меня..
34 сообщений из 34, показаны все 2 страниц
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #36774718
DiDis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Итак, после перехода с 2003 на 2010 офис (+2008R2SQLServer) возникло множество проблем, одна из них переход на ribbon (ленту)...
и так
Первым делом сделал таблицу
UsysRibbons
ID-счетчик
RibbonName (nvarchar(255))
RibbonXml (ntext(16))

Далее добавляем 1 запись в эту таблицу RibbonName = MyTab
RibbonXml =
Код: plaintext
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.
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="MyAddInInitialize">
  <ribbon startFromScratch="true">
    <tabs>
      <tab idMso="TabCreate" visible="false" />
      <tab idMso="TabDatabaseTools" visible="false" />
      <tab idMso="TabExternalData" visible="false" />

      <tab id="dbCustomTab1" label="Лента" visible="true">

        <group id="dbCustomGroup1" label=" ">
              <button id="FormOpenDB" size="large" label="Подключение"  imageMso="FileDocumentEncrypt" onAction="fConnectDbDialog"/>
        </group>

        <group id="dbCustomGroup2" label="Контрагенты">
              <button id="FormOpenFiz" size="large" label="Физ. Лица"  getEnabled="getEnabled" imageMso="DistributionListAddNewMember" onAction="fConnectDbDialog"/>
              <button id="FormOpenYur" size="large" label="Юр. Лица"  getEnabled="getEnabled" imageMso="MeetingsWorkspace" onAction="fConnectDbDialog"/>
        </group>

        <group id="dbCustomGroup3" label="Товарооборот">
              <button id="FormOpenTMZ" size="large" label="ТМЦ"  getEnabled="getEnabled" imageMso="DefaultView" onAction="fConnectDbDialog"/>
              <button id="FormOpenTMZDvizh" size="large" label="Движение ТМЦ"  getEnabled="getEnabled" imageMso="ListSynchronize" onAction="fConnectDbDialog"/>
        </group>

        <group id="dbCustomGroup6" label=" ">
              <button id="FormOpenDogovora" size="large" label="Договора" getEnabled="getEnabled" imageMso="ReadingViewShowPrintedPage" onAction="fConnectDbDialog"/>
        </group>


        <group id="dbCustomGroup5" label=" ">
               <button id="FormOpenOthet" size="large" label="Отчеты" getEnabled="getEnabled" imageMso="PrintAreaMenu" onAction="fConnectDbDialog"/>
        </group>
  <group id="grpVendors" label="Справочники">
     <splitButton id="cmdVendorSplitButton" size="large" getEnabled="getEnabled" >
      <menu id="mnuVendor" imageMso ="FilePrepareMenu" itemSize="large" >
              <button id="FormOpenCar" label="Автомобили"  imageMso="FilePrepareMenu" onAction="fConnectDbDialog"/>
              <button id="FormOpenDetail" label="Номенклатура"  imageMso="FilePrepareMenu" onAction="fConnectDbDialog"/>
              <button id="FormOpenDolzh" label="Должности"  imageMso="FilePrepareMenu" onAction="fConnectDbDialog"/>
              <button id="FormOpenOrgReq" label="Реквизиты организаций"  imageMso="FilePrepareMenu" onAction="fConnectDbDialog"/>
              <button id="FormOpenPrizep" label="Прицепы"  imageMso="FilePrepareMenu" onAction="fConnectDbDialog"/>
              <button id="FormOpenVidDoc" label="Документы физ. Лиц"  imageMso="FilePrepareMenu" onAction="fConnectDbDialog"/>
      </menu>
     </splitButton>
    </group>
      </tab>
    </tabs>
  </ribbon>
</customUI>
п.с. это естественно все было придумано путем проб и ошибок...

Далее создаем модуль с таким текстом

Код: plaintext
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.
Public Function LoadRibbons()
On Error Resume Next

Dim strSQL As String
Dim rst As ADODB.Recordset
Dim sConnectionString As String

If CurrentProject.IsConnected Then

    Set rst = New ADODB.Recordset

    strSQL = "SELECT * FROM [UsysRibbons]; "
    rst.Open strSQL, CurrentProject.Connection, adOpenDynamic, adLockOptimistic

    Do Until rst.EOF
        Application.LoadCustomUI _
        rst("RibbonName").Value, rst("RibbonXml").Value
        strRibbon = rst("RibbonName").Value
        rst.MoveNext
    Loop

    rst.Close
    Set rst = Nothing

Else
sConnectionString = "PROVIDER=SQLOLEDB.1;PASSWORD=19&*susrev" & _
         ";PERSIST SECURITY INFO=TRUE;USER ID=sa" & _
         ";INITIAL CATALOG=Dystancia;DATA SOURCE=Коршиков_Д_С\SQLEXPRESS"
Application.CurrentProject.OpenConnection sConnectionString
    Set rst = New ADODB.Recordset

    strSQL = "SELECT * FROM [UsysRibbons]; "
    rst.Open strSQL, CurrentProject.Connection, adOpenDynamic, adLockOptimistic

    Do Until rst.EOF
        Application.LoadCustomUI _
        rst("RibbonName").Value, rst("RibbonXml").Value
        strRibbon = rst("RibbonName").Value
        rst.MoveNext
    Loop

    rst.Close
    Set rst = Nothing
Call closeCon

End If
End Function
Много кода только лишь потому, что делается проверка на подключение и если его нет то связываюсь с сервером для загрузки таблицы с xml кодом для нашей ленты и потом прерываю связь.
п.с. можно наверно код уменьшить, но пока не до него...
п.п.с. не обращайте внимание на то, что связываюсь под учеткой sa :)

все, после этого наша лента должна грузиться...
но для того чтобы работали наши кнопки на ней, и для того чтобы они были enabled=true когда у нас есть соединение с сервером и enabled=false когда нет соединения с сервером - сделаем еще 1 модуль с таким кодом:
Код: plaintext
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.
Option Compare Database

Dim MyRibbon As IRibbonUI

Function fConnectDbDialog(control As IRibbonControl)
Select Case control.ID
    Case "FormOpenFiz"
        DoCmd.OpenForm ("FrmSprCar")
    Case "FormOpenYur"
        DoCmd.OpenForm ("FrmOrg")
    Case "FormOpenDB"
        DoCmd.OpenForm ("ConnectDbDialog")
    Case "FormOpenTMZ"
        DoCmd.OpenForm ("FrmSkladViewMain")
    Case "FormOpenTMZDvizh"
        DoCmd.OpenForm ("FrmNEWNNNN")
    Case "FormOpenCar"
        DoCmd.OpenForm ("SprCar")
    Case "FormOpenDetail"
        DoCmd.OpenForm ("SprDetail")
    Case "FormOpenDolzh"
        DoCmd.OpenForm ("SprDolzh")
    Case "FormOpenOrgReq"
        DoCmd.OpenForm ("SprOrgRecvizity")
    Case "FormOpenPrizep"
        DoCmd.OpenForm ("SprPrizep")
    Case "FormOpenVidDoc"
        DoCmd.OpenForm ("SprVidDoc")
    Case "FormOpenOthet"
        DoCmd.OpenForm ("frmOthet")
    Case "FormOpenDogovora"
        DoCmd.OpenForm ("DocDogovoraMain")
End Select
End Function

Function getEnabled(control As IRibbonControl, ByRef returnedVal)
Dim s As Boolean
If CurrentProject.IsConnected Then s = True Else s = False
Select Case control.ID
    Case "FormOpenFiz"
      returnedVal = s
    Case "FormOpenYur"
      returnedVal = s
    Case "FormOpenTMZ"
      returnedVal = s
    Case "FormOpenTMZDvizh"
      returnedVal = s
    Case "FormOpenCar"
      returnedVal = s
    Case "FormOpenDetail"
      returnedVal = s
    Case "FormOpenDolzh"
      returnedVal = s
    Case "FormOpenOrgReq"
      returnedVal = s
    Case "FormOpenPrizep"
      returnedVal = s
    Case "FormOpenVidDoc"
      returnedVal = s
    Case "FormOpenOthet"
      returnedVal = s
    Case "FormOpenDogovora"
      returnedVal = s
    Case "cmdVendorSplitButton"
      returnedVal = s
End Select
End Function
Public Function MyAddInInitialize(Ribbon As IRibbonUI)
    Set MyRibbon = Ribbon
End Function

Public Function repaintRibbon()
    MyRibbon.Invalidate
End Function

и так, теперь функцией repaintRibbon я могу "перерисовать" мою ленту, и в зависимости от подключения будут выставлены кнопкам enabled...

п.с.в приложении файл в котором удобно смотреть на иконки которые можно добавить в xml код (imageMso="DefaultView"... например), для этого после открытия файла, зайдите в "Файл/параметры/настройка ленты/разработчик" - поставить галочку, после этого на вкладке "разработчик" вы увидите всю галерею иконок офиса.

...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #36774719
DiDis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #36774916
DiDis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот только откопал, как скрыть кнопки в backstage (кнопка офиса)... а то там кнопка настройки приложения всегда отображается в которой можно так наковырять что коту под хвост вся ваша защита.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="MyAddInInitialize">
  <ribbon startFromScratch="true">
тут ваша лента
  </ribbon>
  <backstage>
    <tab idMso="TabInfo" visible="false"/>
    <button idMso="FileSave" visible="false"/>
    <button idMso="SaveObjectAs" visible="false"/>
    <button idMso="FileSaveAsCurrentFileFormat" visible="false"/>
    <button idMso="FileOpen" visible="false"/>
    <button idMso="FileCloseDatabase" visible="false"/>
    <tab idMso="TabRecent" visible="false"/>
    <tab idMso="TabNew" visible="false"/>
    <tab idMso="TabPrint" visible="false"/>
    <tab idMso="TabShare" visible="false"/>
    <tab idMso="TabHelp" visible="false"/>
    <button idMso="ApplicationOptionsDialog" visible="false"/>
    <button idMso="FileExit" visible="false"/>
  </backstage>
</customUI>
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #36775181
DiDis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вообще штука удобная и много чего с ней можно сделать, например те же отчеты с параметрами открывать прямо с нее (вставить "editBox " на ленте рядом с кнопкой "Отчет по дате с:" и выводить отчет на печать прямо с ленты...)
но очень уж пока геморойно писать xml, пробовал ставить шареварные продукты, что то не пошло, легче самому получилось написать...
и главное ошибок ни каких не выдает, просто не загружается если ошибся в 1 букве и все... так что чаще надо сохранять и смотреть на результат.
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #36893953
DiDis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пополню немного...
настраиваем панель быстрого доступа -
добавляем в нашу таблицу UsysRibbons такой кусок
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #36893957
DiDis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
черт... шифт+энтер= опубликовать оказывается :)

итак добавляем такой кусочек
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
.......
    </tabs>
  <qat>
    <sharedControls>
        <control idMso="Undo" visible="true" insertBeforeMso="Redo" keytip="1" screentip="Отменить ввод"/> 
        <control idMso="Redo" visible="true" insertAfterMso="Undo" keytip="2" screentip="Вернуть"/> 
        <button idMso="FilePrintPreview" visible="true" insertAfterMso="Redo" keytip="3" screentip="Просмотр перед печатью"/> 
        <button idMso="PrintDialogAccess" visible="true" insertAfterMso="FilePrintPreview" keytip="4" screentip="Печать"/> 
        <button idMso="ExportExcel" visible="true" insertAfterMso="PrintDialogAccess" keytip="5" screentip="Экспорт в Excel"/> 
        <button idMso="PivotExportToExcel" visible="true" insertAfterMso="ExportExcel" keytip="6" screentip="Экспорт в Excel сводной таблицы"/> 
        <button idMso="ExportWord" visible="true" insertAfterMso="PivotExportToExcel" keytip="7" screentip="Экспорт в Word"/> 
    </sharedControls>
</qat>
  </ribbon>
  <backstage>
.......
в итоге получается как на картинке
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #36898427
MikeLed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DiDis,

Красиво.
Но тогда надо уж вводить таблицу соответствия п.меню и выполняемого действия, например:
Menu = "FormOpenFiz"
Type = "Form" (Report / Macro / Func)
Name = "FrmSprCar"
Parameters = ""

Можно еще и доступ прикрутить, например, по группам пльзователей и по нему делать Enable/Disable.

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

Ну вообще sct загоняем в БД (наименования, картинки [или ссылки], характеристики)
Получаем универсальный функционал, в котором путе изменения данных получаем новое меню для нового приложения.
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #36898428
MikeLed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сорри, sct читать как ВСЕ .
Мало того, что раскладку перепутал, еще и по букве не попал.
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #37391744
Настаев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А почему у меня выскакивает такое сообщение:
И ещё: я в интернете нашёл и скачал файл Access, в котором тоже модифицирована лента. Только в нём нет ни одной таблицы и макроса. Где же тогда прячется инструкция xml?
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #37391754
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тип IRibbonUI из библиотеки Microsoft Office 14.0 (или 12.0 для А2007) Object Library. Надо ее подключить в референсах.
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #37391757
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Настаевя в интернете нашёл и скачал файл Access, в котором тоже модифицирована лента. Только в нём нет ни одной таблицы и макроса. Где же тогда прячется инструкция xml?
В системных таблицах. Их вы можете увидеть, если в параметрах навигации поставите галочку.
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #37391801
host.13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор после перехода с 2003 на 2010 офис
Мне тоже в скором времени это предстоит. Пожалуйста, рсскажите поподробнее об основных трудностях
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #37430143
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, а есть ли какой-нибудь способ в Access2007 изменить ужасный формат всплывающей подсказки - sсreentip к элементам на риббоне.
В подсказке мешает нижняя часть, в которой автоматически пишется наименование базы данных и предложение нажать кнопку F1 для справки - в результате из маленькой удобной подсказки получается несуразная простыня.

Видел в инете статьи как народ на Дельфи через свои классы занимается настройкой sсreentip, опять же встроенный в оффис элементы имеют разные красивые sсreentip.

Но я так и не понял, можно ли добраться до этих настроек sсreentip через xml или это все сделано на другом уровне?!
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #37431839
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пошерстил еще MSDN и мелкомягкие форумы, как там пишут - варианта переделать офисный screentip никто пока не нашел. Появлялся в обсуждении один представитель компании разработчиков Access, сказал что это было сделано специально - типа для того, чтобы не было подделок, обманывающих пользователя, под стандартные ribbon элементы и по "дурацкому" примечанию на screentip'е можно было всегда определить неродные контролы на ribbon.

Это все конечно прекрасно, я токо одно понять не могу, нафига надо было для этой цели такой дебильный текст выбирать занимающий вагон места про "..нажмите F1 для справки т.д." ...... пользователь к тому же будет пытаться нажать F1, как ему советует screentip, а вместо этого будет получать стандартный хелп от Access, а то вдруг пользователю скучно за компом, почитать нечего, а тут целый хелп от Access, прям обчитайся...
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #37431841
Фотография NickBell
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SergeySVпользователь к тому же будет пытаться нажать F1, как ему советует screentip, а вместо этого будет получать стандартный хелп от Access, а то вдруг пользователю скучно за компом, почитать нечего, а тут целый хелп от Access, прям обчитайся...

С каких пор пользователь читает и делает именно то, что предлагается ему на экране? ... :)
Да как только этот Help случайно появится, они моментально его закроют ... :)
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #37431856
Фотография SergeySV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо будет попробовать на досуге перекрыть сверху screentip собственным созданным модифицированным tooltip, благо событий у ribbon элементов хватает...
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #37435173
abms
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемый, DiDis!
Очень хорошо показано как использовать ленту. Все получилось. Спасибою Однако,
не могли бы показать как изменять ENABLED на кнопках ленты в зависимости от событий на форме?
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #37439903
jukiet.ru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DiDis,
спасибо за файл с иконками.Очень помог
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #39487033
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DiDisвот только откопал, как скрыть кнопки в backstage (кнопка офиса)... а то там кнопка настройки приложения всегда отображается в которой можно так наковырять что коту под хвост вся ваша защита.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="MyAddInInitialize">
  <ribbon startFromScratch="true">
тут ваша лента
  </ribbon>
  <backstage>
    <tab idMso="TabInfo" visible="false"/>
    <button idMso="FileSave" visible="false"/>
    <button idMso="SaveObjectAs" visible="false"/>
    <button idMso="FileSaveAsCurrentFileFormat" visible="false"/>
    <button idMso="FileOpen" visible="false"/>
    <button idMso="FileCloseDatabase" visible="false"/>
    <tab idMso="TabRecent" visible="false"/>
    <tab idMso="TabNew" visible="false"/>
    <tab idMso="TabPrint" visible="false"/>
    <tab idMso="TabShare" visible="false"/>
    <tab idMso="TabHelp" visible="false"/>
    <button idMso="ApplicationOptionsDialog" visible="false"/>
    <button idMso="FileExit" visible="false"/>
  </backstage>
</customUI>


Пробовала сделать возможность отображения по условию на getVisible, чтобы можно было скрыть/показать для определенных юзеров, но выдается ошибка:

подскажите с чем это связано и можно ли это как то реализовать, а то получается все как то полудоступно.
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #39487278
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nataxa23,

на сколько я знаю в backstage
нельзя использовать динамические параметры.
Только статичные - visible.
Я просто собираю ленту на ходу, в зависимости от того, с какими "правами" открывает пользователь бд
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #39487888
nataxa23
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игортан,
спасибо за инфу.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #39952462
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
скажите screentip о котором идёт речь, выглядит:
Normal.dotm
Дополнительные сведения
так?
так по сей день никто не в курсе как его убрать?
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #39952994
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофа,

в 2010 такой возможности не существовало в принципе.
Думаю, ничего не поменялось....
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #39953099
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игортан,
"Я просто собираю ленту на ходу, в зависимости от того, с какими "правами" открывает пользователь бд"
это макросом? подскажите как, каким кодом?
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #39953257
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и так, теперь функцией repaintRibbon я могу "перерисовать" мою ленту, и в зависимости от подключения будут выставлены кнопкам enabled...
просто при загрузке кода строка Option Compare Database красного цвета и мне пришлось её заремарчить
и потом на строке
Код: vbnet
1.
MyRibbon.Invalidate


я получаю ошибку 91
Object variable not set как это лечится? спс
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #39953258
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я гуглил и в курсе, что Оператор Option Compare Database может использоваться только в Microsoft Access
как код в 1-м посте переделать под Ворд?
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #39953287
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофа,по ссылке всё есть - Ribbon XML Editor
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #39953368
катастрофа
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург
всё есть

я лично не увидел ответа на вопрос как генерировать ленту
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #39953409
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофа, ну плохо тебе.
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #39953551
Игортан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
катастрофа
я лично не увидел ответа на вопрос как генерировать ленту
Генерировать легко ленту - есть платный софт
Из бесплатного - Ribbon XML Editor
Но для его использования нужны, минимум, базовые знания по структуре ленты (2007, 2010 и +)
Потому и тяжеловато.
Поищите книгу по Ribbon
катастрофа
это макросом? подскажите как, каким кодом?
В коде. Когда то сюда сбрасывал. Но там полуручная сборка, тоже требующая некоторых знаний + что то там глючное было...
Больше для анализа и перепила под себя, если вдруг..
катастрофа
я получаю ошибку 91
Не инициируется лента. Я на стартовую форму прописываю в свойствах имя ленты + в свойствах БД, и все подхватывается.
Но если использовать таблицу с неким спец названием...(не помню название)...то все происходит без дополнительных усилий

И помнить
любая ошибка в структуре xml ленты, своя лента не загрузится.
Ничего, ни сообщения, ни валится ничего. Тупо молчит и игнорит вашу ленту
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #39970852
ial52
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Господа!

Знает ли кто как можно переключиться между двумя риббонами?

Вроде простой вопрос, а понять никак не могу

Всем спасибо заранее!
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #39987147
NTGAMember
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток всем! Подскажите, а с картинками для пунктов меню ленты как быть, это что в атрибуте imageMso, где они хранятся, откуда все эти имена, что автор темы указал в своем xml?
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #39990001
ПавелЖд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
NTGAMember,

9206304 в этом посте, внизу, указан файлик со всеми картинками и кодами к ним.
...
Рейтинг: 0 / 0
Небольшой FAQ по ribbons (лента)... как это было у меня..
    #39990008
ПавелЖд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А вот как было у меня ...
Второй день я пытаюсь "прикрутить" свою ленту к программе. Прочитал кучу постов, попробовал несколько готовых наработок. Но меня не покидало подлое чувство, что где-то что-то не договаривают или я чего-то не понимаю, потому что постоянно ... не работало.

Итак, история о том КАК получилось:

Вооружаемся инструментами:
  • Чтоб сделать XML код - Ribbon XML Editor . Ссылка в посте 22125723
  • Для проверки ленты - Excel . Начиная с 2007 версии.
--------------------------------------------------------------------------
Для начала создадим пустой файл Excel с расширением xlsm.
Затем запускаем Ribbon XML Editor.
После загрузки жмем ctrl+O. Открываем созданный файл. В нем будем проверять сделанную ленту!
--------------------------------------------------------------------------
Нам нужна совершенно неприметнейшая кнопка в левом верхнем углу! Жмем.



После нажатия появляется базовый набор строк.
--------------------------------------------------------------------------
К примеру, сделаем две группы, в каждой по одной кнопке.
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui">
	<ribbon startFromScratch="true">
		<tabs>
			<tab id="id_tab" label="НАЗВАНИЕ ВКЛАДКИ НА ЛЕНТЕ">
				<group id="gr1" label="подпись под контролами в группе 1">
					<button id="but1" size="large" label="название кнопки1" imageMso="TranslationToolTip" onAction="rib_run"/>
				</group>
				<group id="gr2" label="подпись под контролами в группе 2">
					<button id="but2" size="large" label="название кнопки2" imageMso="ControlLayoutRemove" onAction="rib_run"/>
				</group>
			</tab>
		</tabs>
	</ribbon>
</customUI>


На что обратить внимание:
<ribbon startFromScratch="false">
true - вкладка будет единственной на ленте
false - системные тоже будут отображаться

button id="but1" size="large" label="название кнопки1"
У каждого элемента свой id - нужен для обращения к нему в коде. Давайте осмысленные названия :)
size - два размера= normal и large
imageMso="" иконки. Чтоб вставить иконку:
ставим курсор между кавычек и жмем кнопку:



Откроется окошко с выбором из более 6 000 иконок. Можно выбрать по картинке, а можно по названию.

onAction="rib_run"
"rib_run" - название программы, срабатывающей по нажатию кнопки.
Можно сделать обработку одну на всех или каждой кнопке свою. Как хотите.
--------------------------------------------------------------------------
Когда с xml закончено, то надо проверить работу ленты. Жмем F5
Будет сообщено об ошибках или соответствии стандарту.
Затем жмем F9. Запустится Excel со сделанной лентой!


--------------------------------------------------------------------------
Если всё устраивает, то переходим к следующему этапу.
Закрываем Excel. Перед нами окно редактора. Жмём - ALT + F11
В появившемся окошке появиться код обработчика нажатий кнопок.
Далее можем нажать кнопку с иконкой VBA. Код запишется в файл Excel-я.



Если у всех кнопок название программы указанной после onAction="" одно, то и обработчик будет один.
Если разные, то, соответственно обработчиков будет больше.
Код: vbnet
1.
2.
3.
Private Sub rib_run(control As IRibbonControl)
    MsgBox "Сработала процедура, заданная в onAction элемента " + control.ID
End Sub


В данном случае "control.ID" это тот самый "but1" в обозначении кнопки "<button id="but1" ........" Так что пишите понятные id.
--------------------------------------------------------------------------
"Едем дальше ..."
Переходим к нашему Access.
Теперь надо эту поделку вкрячить в базу...
Как обычно всё сложное просто. Всего лишь надо знать КАК!

1. Везде пишут, что табличку с xml кодом надо назвать "UsysRibbons", но так и не поясняют - зачем?
Это название Access воспринимает как системное и скрывает. Чтоб увидеть СВОЮ таблицу надо в настройках базы поставить галку "Показывать системные объекты". И вместе со своей увидеть еще кучу не нужных таблиц. Оно вам надо?!

2. Исходя из проделанных безуспешных попыток загрузить свою ленту, с большой долей уверенности скажу, что Access АВТОМАТИЧЕСКИ подгружает ленты из таблицы с системным названием "UsysRibbons"!
Типичная ошибка:
В автозагрузке в макросе "Autoexec" указана функция которая грузит ленту, но Access выдаёт ошибку "Такая настройка уже загружена".
Это потому что он ленту уже сам загрузил из СИСТЕМНОЙ таблицы! А в коде вы еще раз пытаетесь её подгрузить.

Решение:
Итак, рабочий XML код у нас есть.

Создаём таблицу с любым названием. Да. Например,"T_ribbon".
2 обязательных поля: название ленты (текст) и код xml (memo). Можно и счетчик прилепить. Например, "RibbonName" и "RibbonXml".
Если будет несколько лент(а вдруг), то надо сделать еще и "правильную" таблицу "UsysRibbons" и туда сложить ленты, которые буду использоваться потом.

В референсах ставим ссылки - Microsoft Office.

В модуле с названием "Module1" пишем функцию автозагрузки ленты. Например, "Start":
Код: vbnet
1.
2.
3.
4.
5.
Function Start()
With CurrentDb.OpenRecordset("T_ribbon", dbOpenSnapshot)
    Application.LoadCustomUI .Fields("RibbonName").Value, .Fields("RibbonXml").Value
End With
End Sub


Создаём макрос "Autoexec" с командой "ЗапускПрограммы" указываем функцию с автозагрузкой ленты: Start()

Сохраняем. Запускаем. Типа, ничего не произошло :)
Заходим в Параметры --> Текущая база данных. И там выбираем свою ленту - она уже будет в списке.
Сохраняем. Запускаем - и вот она наша лента :))

Теперь сделаем обработку нажатия кнопок:
В том же модуле пишем код, который нам сделал Ribbon XML Editor
Код: vbnet
1.
2.
3.
Sub rib_run(control As Object)  ' IRibbonControl
MsgBox "Нажата кнопка с id=" & control.id
End Sub


На "IRibbonControl" Access ругался, поэтому я его на заменил на "Object". Прекрасно работает.
Вот и всё :))
--------------------------------------------------------------------------
Полезная информация:

Порядок запуска в Access таков: даже если в автоэкзеке с лентой ничего не делается, то она всё равно грузится ПОСЛЕ него.

В верхнюю строку XML кода можно добавить onLoad=""
<customUI ....... onLoad="какаятофункция">
"какаятофункция" сработает перед загрузкой ленты. Может понадобиться для инициализации чего-то.

Если у вас задумано несколько лент для разных форм, то:
Первая у вас грузиться в автоекзеке, остальные Access подгрузит сам из "UsysRibbons".

Сопоставить ленту с формой можно двумя способами:
    В окошке "Окно Свойств" во вкладке "Другие" (4-ая строка сверху) указать в раскрывающемся списке какую ленту грузить.
    Указать в коде при загрузки формы
Код: vbnet
1.
2.
3.
Private Sub Form_Load()
  Me.RibbonName = "MyRibbon2"
End Sub


Здесь "MyRibbon2" = имя ленты указанное в таблице "UsysRibbons" в поле "RibbonName".
...
Рейтинг: 0 / 0
34 сообщений из 34, показаны все 2 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Небольшой FAQ по ribbons (лента)... как это было у меня..
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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