|
Ribbon, Contextual Tabs
|
|||
---|---|---|---|
#18+
Добрый день, всем. Хотел бы поднять тему. С подвохом :) Лента позволяет использовать контекстные вкладки. Допустим у одной формы должен быть свой набор контекстных вкладок, у другой формы - другой набор, у третьей - третий. Лента одна. Кто-нибудь это реализовывал? Одна лента, а наборов контекстных вкладок > 1. (Использую Access 2010, но это не суть важно) Сергей ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 16:18 |
|
Ribbon, Contextual Tabs
|
|||
---|---|---|---|
#18+
Можно ж просто для каждой формы отдельную ленту. А если одну ленту, то сделать callback-функцию на visible и скрывать/отображать вкладки при открытии формы. Да? ... |
|||
:
Нравится:
Не нравится:
|
|||
06.11.2013, 18:37 |
|
Ribbon, Contextual Tabs
|
|||
---|---|---|---|
#18+
lord_de_tempest, lord_de_tempestМожно ж просто для каждой формы отдельную ленту. я так понимаю, обсуждаем чисто теоретически :) ОК. Ну хорошо. Несколько лент. Вопрос - зачем? Только ради того, чтобы обеспечить каждую форму своим набором контекстных вкладок? Нет чувства, что тут что-то не так? "Something is amiss". Теперь детальней. Недавно тут было обсуждение: http://www.sql.ru/forum/1030392-a/ribbon-posle-zakrytiya-formy-perekluchaetsya-vsegda-na-pervuu-vkladku?hl= О непроизвольном переключении на первую вкладку. Глюк. Неприятный, раздражающий, невыносимый :) Все жалуются, житья нет :) http://social.msdn.microsoft.com/Forums/office/en-US/9fcf43fb-3883-4109-8cf9-5f1fc0f6076e/in-access-2010-the-first-custom-tab-keeps-being-activated?referrer=http://social.msdn.microsoft.com/Forums/office/en-US/9fcf43fb-3883-4109-8cf9-5f1fc0f6076e/in-access-2010-the-first-custom-tab-keeps-being-activated?referrer=http://social.msdn.microsoft.com/Forums/office/en-US/9fcf43fb-3883-4109-8cf9-5f1fc0f6076e/in-access-2010-the-first-custom-tab-keeps-being-activated?forum=accessdev (Именно этот глюк в Access2013 + Window 7 уже отсутствует) Так вот. Допустим делаем формам разные ленты. Пусть две формы, значит две ленты. Три первых вкладки у них одинаковые. Различаются только контекстными(сейчас для теста сделал: у одной нет конт.вкладок, а у другой есть). Что происходит с лентами при переключении между открытыми формами? Активация первой вкладки ленты. Три первые вкладки мы сделали одинаковыми. Ну надо так, допустим. Ну что-то общее у них должно быть (экспорт, печать, что угодно, например вкладка, на которой сосредоточены стандартные инструменты работы с данными(буфер обмена, сортировка/фильты, найти и т.п.)). И эта самая вкладка у нас текущая(третья), переключаемся на другую форму(с другой лентой) - бах, и теперь текущая вкладка - первая. Можно, конечно, напрограммировать и вернуть фокус на третью вкладку. Но ведь это именно то самое поведение, которое всех достает, если так можно выразится. Активация первой вкладки ленты. Представляете скачки? lord_de_tempestА если одну ленту, то сделать callback-функцию на visible и скрывать/отображать вкладки при открытии формы. Да? Очевидно - да. Но это только направление. Темой практически не занимались? Там поле не паханное :) Да, имея одну ленту, относительно несложно можно добиться вывода разных контекстных вкладок, управляя их видимостью. Но там масса своих нюансов(да и вообще с контекстными вкладками). Ну, например, при открытии такой формы если ничего не предпринять, то фокус будет упрямо становится на первую контекстную вкладку. Причем попробуйте найти событие позволяющее переключить фокус на какую-нибудь другую вкладку, чтобы изменить ситуацию. Я имею ввиду, что допустим вам нужно(именно это мне и было нужно), чтобы при открытии фокус стал на все ту же третью вкладку(не контекстную), а он при открытии упрямо будет становится на первую из контекстных вкладок. И ни одно событие не подходит для программного переключения на нужную вкладку! Ни открытие, ни загрузка, ни активация, ни даже последнее - текущая запись. Причем это, как я понимаю, ни какой не глюк, а задуманное поведение. Именно так происходит в Access, когда форма переходит в режим конструктора - текущей становится первая из контекстных вкладок. Переключить фокус, в принципе, возможно... но потом. А надо сейчас :) Более того, нужно чтобы первая из контекстных вкладок вообще не становилась текущей при открытии. Текущей должна быть та, которая нужна по логике приложения. И при переключении между формами, одна из которых содержит контекстные вкладки, не должно быть скачков. Ну я так хочу, имею право :). Там даже поведение вкладок отличается в зависимости от места вызова формы. Вызов по кнопке из подчиненной формы приводит к отличному поведению, от вызова по кнопке из основной формы. Или вот еще "цветочек". Если из подчиненной формы (имеющей конт.вкладки, также как и ее основная форма) вызвать форму, не имеющую контекстных вкладок, то снова произойдет непроизвольная активация первой вкладки. Я все это делал на Access 2010 + Windows 7, т.е. в условиях описанного в предыдущей ветке глюка. Но, почти уверен, что этот глюк тут не причем или почти не причем. Против него применил "лекарство" - скрытая первая вкладка. Но я проверил на связке Access 2013 + Windows 7. Там поведение немного отличается, но все равно требует "вмешательства" :) В принципе, приемлемого поведения я добился, но кое-что не очень нравится. Мне интересно, у кого какие результаты работы с контекстными вкладками? Буду благодарен за диалог. Сергей ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2013, 04:17 |
|
Ribbon, Contextual Tabs
|
|||
---|---|---|---|
#18+
Вакшуль Сергей, сам сижу на 2003-м, поэтому по существу вопроса профан, но наткнулся на интересную ссылочку, может там есть что полезное для вас http://www.accessribbon.de/en/?Downloads ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2013, 08:54 |
|
Ribbon, Contextual Tabs
|
|||
---|---|---|---|
#18+
guest_rusimport, доброе утро, Да, спасибо. Я в курсе. Вчера, кстати, поблагодарил автора за бесподобный сайт. Этот сайт, можно сказать - учебник. Но поднятый мной вопрос там не обсуждается. Да, упомянуты контекстные вкладки, но применение их в том разрезе, в котором я хочу их использовать, а именно - одна лента, но несколько наборов контекстных вкладок, там не освящается. Тут вообще позиция Microsoft не понятна. Новые инициативы, а все как-то не доделано. Взять хотя бы те же контекстные меню. Сделали какую-то смесь бульдога с носорогом. Можно с помощью xml управлять новыми стандартными. Практически из стандартных можно сделать свои(скрывать пункты меню, добавлять свои). Но чисто свои сделать нельзя. Ни в 2007-ом, ни в 2010-ом. Commandbar, по идее, раз уже перешли на xml, нужно было убирать, так нет же. Раз новые контекстные меню(xml) недоделанные, то Commandbar во всю поддерживается. В 2013-ом еще не смотрел как обстоит с контекстными меню. Сергей P.S.а почему rusimport? Любопытство разбирает :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2013, 11:33 |
|
Ribbon, Contextual Tabs
|
|||
---|---|---|---|
#18+
К сказанному мной выше забыл добавить еще один момент. На поведение ленты, в плане неожиданностей активации вкладок при использовании контекстных, влияет параметр запуска "Полный набор меню Access". Галочка должна стоять, тогда ряд неприятных эффектов исчезает. Сергей ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2013, 12:04 |
|
Ribbon, Contextual Tabs
|
|||
---|---|---|---|
#18+
Вакшуль Сергей, Вакшуль СергейP.S.а почему rusimport? Любопытство разбирает :) Честно говоря не задумывался, просто сайт Андрея Митина был первым , на котором я зарегистрировался, он очень мне понравился в плане систематизации информации и её содержимого, а сюда заглядываю иногда в качестве гостя, вот и вся, собственно, "подоплёка" :) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2013, 12:13 |
|
Ribbon, Contextual Tabs
|
|||
---|---|---|---|
#18+
вижу, что никто этим не занимается. ок, тему закрываю. если кого-то это когда-то заинтересует - не сдавайтесь :) помогут манипуляции с: - DoEvents - со отказом и последующим возобновлением св-ва RibbonName - галочка параметр запуска "Полный набор меню Access" должна стоять. С уважением, Вакшуль Сергей ... |
|||
:
Нравится:
Не нравится:
|
|||
07.11.2013, 19:29 |
|
Ribbon, Contextual Tabs
|
|||
---|---|---|---|
#18+
Вакшуль Сергейесли кого-то это когда-то заинтересует - не сдавайтесь :) помогут манипуляции с: - DoEvents - со отказом и последующим возобновлением св-ва RibbonName - галочка параметр запуска "Полный набор меню Access" должна стоять. Последний пункт поборол. Т.е. нужны манипуляции с: - DoEvents - с отказом и последующим возобновлением св-ва RibbonName - gobjRibbon.ActivateTab (в прошлый раз забыл об этом сказать) Вакшуль Сергей- галочка параметр запуска "Полный набор меню Access" должна стоять. Этот пункт сначала устраивал, т.к. у него только один недостаток - лишние пункты в BackStage(меню Файл); и я думал, что все лишние пункты просто скрою. Оказалось, что можно скрыть все за исключением перечня последних открытых файлов. Перечень, в принципе, можно скрыть с помощью: SetOption "Size of MRU File List", 0 Но как оказалось, эта команда отработает только если параметр запуска "Полный набор меню Access" не установлен. Круг замкнулся. Но выход нашел. Теперь работает когда параметр запуска "Полный набор меню Access" не установлен. Решение работает Windows 7 + Access2010/2013 (на 2007-ом возможности проверить нет). Если ничего больше не выплывет - поделюсь. Сергей ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2013, 04:34 |
|
Ribbon, Contextual Tabs
|
|||
---|---|---|---|
#18+
Вакшуль Сергей, Вы хоть пример скиньте, что где не работает. --------------------------------------------- Например, мне непонятно что вы меняете, Ленту или Вкладку на ленте, и куда переход осуществляете. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2013, 15:08 |
|
Ribbon, Contextual Tabs
|
|||
---|---|---|---|
#18+
В частности это. И эта самая вкладка у нас текущая(третья), переключаемся на другую форму(с другой лентой) - бах, и теперь текущая вкладка - первая. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.11.2013, 15:11 |
|
Ribbon, Contextual Tabs
|
|||
---|---|---|---|
#18+
Вакшуль Сергей, нашел еще одну ссылочку на литературу (вполне возможно , что вы её видели, но всёж пусть будет) http://www.excelguru.ca/files/RibbonXCh07.pdf ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2013, 00:15 |
|
Ribbon, Contextual Tabs
|
|||
---|---|---|---|
#18+
Добрый день, Александр, Александр МаркинВы хоть пример скиньте, что где не работает. Спасибо, за участие. Дело не столько в том, что у меня что-то не работает. Вакшуль СергейЛента позволяет использовать контекстные вкладки. Допустим у одной формы должен быть свой набор контекстных вкладок, у другой формы - другой набор, у третьей - третий. Лента одна. Кто-нибудь это реализовывал? Одна лента, а наборов контекстных вкладок > 1. Собственно, чего я хотел. Есть тема. Кратко. Microsoft в свое время предложил новый инструмент интерфейса - Ribbon(понятно - давно не новость). Основные направления: custom tabs, contextual custom tas, backstage(2010). О контекстных меню сейчас не говорю. При комплексном подходе, используя все три направления, можно добиться максимального эффекта. Касательно первого и третьего(custom tabs и backstage) у меня принципиальных претензий к Microsoft нет :) В плане применения Contextual Tabs для разработки пользовательского интерфейса приложения в Access, чувствую себя обделенным. Суть в следующем. В своих продуктах(тот же Access, Excel) Microsoft по полной эксплуатирует преимущества упомянутых мной направлений(tabs, contextual tas, backstage) Они себе ни в чем не отказывают. Нужен им набор контекстных вкладок для операций со сводной таблицей, пожалуйста, - соорудили такой набор (TabSetPivotTableAccess). Понадобился набор контекстных вкладок для работы при создании форм, извольте - TabSetFormTools. Понадобится что-то еще - напишут еще. Вон, уже сколько наклепали: TabSetFormToolsLayout TabSetFormTools TabSetReportToolsLayout TabSetReportTools TabSetRelationshipTools TabSetQueryTools TabSetMacroTools TabSetPivotTableAccess TabSetPivotChartAccess TabSetTableToolsDatasheet TabSetTableToolsDesign TabSetFormDatasheet TabSetAdpFunctionAndViewTools TabSetAdpStoredProcedure TabSetAdpSqlStatement TabSetAdpDiagram Если понаблюдать за поведением ленты в их приложениях(Access, Excel, Word), то (голову на отсечение не даю, т.к. точно не знаю) складывается впечатление, что лента-то у них одна, а наборов контекстных вкладок - много(а вот это - факт). А что они предложили разработчикам Access в плане работы с контекстными вкладками? Наделили их возможностями создавать такие наборы? Нет. Разработчику Access выделили один скромный набор на все его нужды TabSetFormReportExtensibility - пользуйся. Сами, значит, себе клепают наборы, цветами их раскрашивают... Почему я должен довольствоваться только этим: Код: plaintext 1. 2. 3. 4.
Почему только я имею право на tabSet idMso , т.е. только на тот, которым меня Microsoft наделил? Я их уважаю :), а они не хотят ответить взаимностью, разрешив следующее: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
За что такое унижение? :) Да, есть возможность поменять ленту, а значит получить новый набор TabSetFormReportExtensibility. Но ведь сами то они так не делают(в своих продуктах). Тут можно долго и много говорить. Я выделю только один момент - смена ленты приводит к тому, что фокус получит первая вкладка новой ленты. Собственно это и естественно, надо же его куда-то поставить. Именно в этот момент разработчик лишается контроля над лентой. Решают за него - а теперь смена вкладки - и ты на первой. В своих продуктах такого нелогичного поведения они не допускают(еще бы). Там используется продуманный механизм активации конкретной вкладки в зависимости от ситуации. Возвращаясь к убогому набору TabSetFormReportExtensibility. С этим, конечно, можно жить. Пытаясь конструировать ленты определенным образом. Microsoft и примеры публикует как выживать, причем довольно красивые внешне. Если ленты не менять, а использовать одну, то получаешь полную управляемость и контроль над порядком активации вкладок. Но набор контекстных вкладок TabSetFormReportExtensibility - один. Хотел кратко, а получилось, как получилось. Так вот, действовать, как действует сам Microsoft, а именно создавать свои наборы контекстных вкладок - мое естественное желание. Это возможно. Естественно, это имитация наборов, т.к. TabSetFormReportExtensibility - один. Но там есть о чем поговорить. Непосредственно по вопросу. Александр Маркин Например, мне непонятно что вы меняете, Ленту или Вкладку на ленте, и куда переход осуществляете. В частности это. И эта самая вкладка у нас текущая(третья), переключаемся на другую форму(с другой лентой) - бах, и теперь текущая вкладка - первая. >переключаемся на другую форму(с другой лентой) При переключении на другую форму, в св-ах RibbonName, которой указана другая лента, естественно, в первую очередь произойдет смена ленты, а во вторую, как следствие - смена вкладки. Активной станет первая вкладка новой ленты. Сергей ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2013, 01:03 |
|
Ribbon, Contextual Tabs
|
|||
---|---|---|---|
#18+
guest_rusimport, добрый вечер. (сорри, имени не знаю) Спасибо за книгу. Кстати мне вчера ее тоже рекомендовали :) Она довольно большая. Пробежался по диагонали. Если придется возится с лентой в Excel, то может пригодится. Насчет контекстных вкладок в Access, к сожалению, там по сути тоже, что и везде - общие концептуальные вещи. На практике(не из книги), имеет место такой факт: Если форма, имеющая контекстные вкладки(заполненное св-во RibbonName) открывается так: DoCmd.OpenForm "Form9" то фокус переходит на первую контекстную вкладку из набора контекстных вкладок(TabSetFormReportExtensibility) Если форма, имеющая контекстные вкладки(заполненное св-во RibbonName) открывается как экземпляр формы, а именно: Set frm9 = New Form_Form9 то фокус переходит на первую вкладку ленты Если первое MSDN подтверждает, то о втором(должно быть интересно nord-woolf) там скромно молчат. Сергей ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2013, 01:52 |
|
Ribbon, Contextual Tabs
|
|||
---|---|---|---|
#18+
>>должно быть интересно nord-woolf Не-не-не. Мне эти презервативы, загораживающие верхнюю треть экрана, ни разу не интересны. Я пользую 11 версию исключительно. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2013, 02:26 |
|
Ribbon, Contextual Tabs
|
|||
---|---|---|---|
#18+
nord-woolfМне эти презервативы, загораживающие верхнюю треть экрана, ни разу не интересны. :) Нo к сожалению от них никуда не денешься, обратной дороги нет. Вон даже Windows 8.1 вышла вся в этих презервативах. P.S И все мы рано, или поздно перейдем на эти презервативы, это только вопрос времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2013, 15:41 |
|
Ribbon, Contextual Tabs
|
|||
---|---|---|---|
#18+
Кстати, решил оценить поведение Access 2013. Windows7. Тяжело описывать словами то, что нужно видеть. Попробовал сделать скрины. Вложил скрины в doc файл, но размер превышает 150Kb - приложить не могу. Пришлось разбить файл на три части. Итак, во вложении: - тестовая база. Формат - 2007-2013. - комментарии и скрины, часть 1 Пояснения: В базе две формы. VBA код только в форме Форма1. Вот он: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
База содержит одну ленту – «Лента» Лента состоит из 5 пользовательских вкладок и 4-х контекстных. CallBack вызовов нет. Лента задана в параметрах запуска базы. У формы Форма1 RibbonName = «» У формы Форма2 RibbonName = «Лента» Оцените, что вытворяет Access. Слов нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2013, 16:38 |
|
Ribbon, Contextual Tabs
|
|||
---|---|---|---|
#18+
во вложении: - комментарии и скрины, часть 2 ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2013, 16:39 |
|
Ribbon, Contextual Tabs
|
|||
---|---|---|---|
#18+
во вложении: - комментарии и скрины, часть 3 Не смотря на аномальное поведение ленты в условиях Access 2013 + Windows7(в другой операционке не проверял), работать все-таки можно. Потом выложу(сейчас занят, чтобы нормально оформить). Поднятая мной тема ( 15103983 ) актуальна. Хотелось бы диалога. Может кто-то тему прорабатывал. Сергей ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2013, 16:47 |
|
Ribbon, Contextual Tabs
|
|||
---|---|---|---|
#18+
По поводу Access 2013 и выложенного примера Тот же самый пример в Access 2010 работает не так. Работает так, как задумывалось(практически). В Access 2013 после снятия флажка "Область навигации" и создания кода вызова форм с ленты, поведение нормализовалось. Вакшуль СергейЕсли форма, имеющая контекстные вкладки(заполненное св-во RibbonName) открывается так: DoCmd.OpenForm "Form9" то фокус переходит на первую контекстную вкладку из набора контекстных вкладок(TabSetFormReportExtensibility) Если форма, имеющая контекстные вкладки(заполненное св-во RibbonName) открывается как экземпляр формы, а именно: Set frm9 = New Form_Form9 то фокус переходит на первую вкладку ленты Описанное поведение справедливо для Access 2010(значение флажка "Область навигации" на результат не влияет) В Access 2013 поведение при открытии формы как экземпляр повторяет поведение при открытии путем DoCmd.OpenForm, т.е. также активируется первая контекстная вкладки из набора TabSetFormReportExtensibility(очевидно, спустя 3 года исправили). Сергей ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2013, 20:01 |
|
Ribbon, Contextual Tabs
|
|||
---|---|---|---|
#18+
Вакшуль СергейТам даже поведение вкладок отличается в зависимости от места вызова формы. Вызов по кнопке из подчиненной формы приводит к отличному поведению, от вызова по кнопке из основной формы. Вынужден прокомментировать. Дело в том, что из подчиненной формы шел вызов не через DoCmd.OpenForm, а открывался экземпляр формы. А так как в Access 2010 поведение ленты при вызове формы как экземпляра отличается от поведения при вызове через DoCmd.OpenForm(описывал выше), отсюда и неверный вывод. Сергей ... |
|||
:
Нравится:
Не нравится:
|
|||
10.11.2013, 20:17 |
|
Ribbon, Contextual Tabs
|
|||
---|---|---|---|
#18+
Вакшуль СергейЕсли ничего больше не выплывет - поделюсь. http://am.rusimport.ru/MsAccess/topic.aspx?ID=782 Сергей ... |
|||
:
Нравится:
Не нравится:
|
|||
14.01.2014, 01:03 |
|
Ribbon, Contextual Tabs
|
|||
---|---|---|---|
#18+
Обновил недавно выложенный материал. An approach to working with a ribbon. Designed for MS Access 2010 http://am.rusimport.ru/MsAccess/topic.aspx?id=782 Подправлено поведение при открытии формы по сценарию 2. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2014, 21:15 |
|
Ribbon, Contextual Tabs
|
|||
---|---|---|---|
#18+
Сергей, А Вы не пробовали отображать контекстную вкладку без открытия какой-либо формы? Т.е. грузится лента при загрузке базы, никакие формы ещё не открыты (но событие onRibbonLoad произошло) и есть ли возможность отобразить контекстную вкладку в этом случае? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.10.2014, 14:26 |
|
|
start [/forum/topic.php?fid=45&tid=1616198]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
2ms |
others: | 269ms |
total: | 415ms |
0 / 0 |