Страницы: 1
RSS
Лента. Для ненаглядной UserForm
 
Здравствуйте.
На товарищеский суд...
Все в файле. Вызов с вкладки 'Разработчик'
http://rghost.net/6n9QXbRdJ
Изменено: Сергей Кр - 25.07.2015 11:25:44
 
Прошу извинить. 'Все хорошие мысля, как известно, ...'
Исправлены некоторые выявляющиеся недочеты. Файл скорректирован. Ссылка новая
 
Хочу,но не могу пощупать..
Нет у меня такой библы для ваших контролов.
 
Я попробовал создать форму(я так понял для этого сделано?) - сразу косяк нашел.
У меня в настройках VBE(Tools-Options-Editor) установлено Require Variable Declaration. Ваш код проставляет эту строку еще раз. Т.е. независимо от того, установлена ли у меня эта галка или нет код будет добавлять Option Explicit, что непременно вызовет ошибку.
Других проблем пока не обнаружил.

Плюс не совсем понял что оно вообще делает. Создает в форме меню в стиле Ribbon и все? В принципе прикольно, честно. Но пока для себя не вижу практической ценности сего инструмента. Да и размер "пустого" файла формата .xlam почти полмегабайта - слишком уж круто. А ведь там я создал всего 4 контрола в меню и все. Для меня это неоправданно большой размер и куча кода.

Но повторюсь - в целом прикольно. Просто я, видимо, не из той категории пользователей, кому это надо :-)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
В первую очередь, благодарю за внимание, проявленное к теме. Беру обязанность ответить на каждый заинтересованный вопрос.

1. Для Doober
В надстройке единственное, что имеется из ужастиков, это Treeview. Необходимо ВКЛ:  Tools– References – Microsoft Windows Common controls 6.0 (SP6). Вручную: Toolbox – (ПКМ) Additional Controls – Microsoft Treeview Control,  version (...)  не помешает. Как уговаривать Microsoft Treeview Control можно посмотреть, например, здесь http://www.planetaexcel.ru/forum.php?thread_id=9944

Дмитрию
Вы справедливо обозначили именно те три вопроса, которые я в первую очередь ждал.

2. Option Explicit
Т.к. Excel по определению [при установке]  не включает Require Variable Declaration , а я, в свою очередь, не знаю как программно проверить, то (полу-)сознательно принял единственное неправильное решение: to be, чем not to be.   'Двоиться'  будет пока только у "мастера" (который только и знает где Дополнительным_Действием включать Option Explicit. и который легким сознательным движением уберет дубляж. Что законно и произошло в Вашем случае). В противном случае,  большинство пользователей остались бы без "существенного условия". Конечно, если кто-нибудь может подсказать как программно (и коротко) проверить  Require Variable Declaration, буду признателен и обязательно этот момент скорректирую.

3. ОБЪЕМ НОВОГО (СОЗДАВАЕМОГО) ФАЙЛА.
~300 КБ. Даже при создании 1 элемента ленты. Но есть и отрадный смысл: при создании (хоть) 1000 элементов ленты размер созданного файла тоже будет почти таким же. Объем нового файла надувает не количество элементов ленты (и не images) , а только необходимый технический код. Но, ведь, без кода  не получиться наколдовать.
ПРИМ.  Весь код сформатирован максимально отречено и ненавязчиво. Сидит себе тихонечко в VBA: ни есть, ни вмешательства не просит.
ПРИМ.  Есть вариант, где технический код храниться не в модулях. Сразу уменьшает размер нового файла больше, чем в два раза. Но тогда невозможно будет использовать формы  'when the UserForm is modeless'.
По большому счету. Ну и что, что не совсем кроха.  Если с новым созданным файлом не блуждать по интернету (да даже если и блуждать) , а мирно использовать на компьютере, то какая разница какого он размера.

4. ГЛУБОКИЙ ДРАМАТУРГИЧЕСКИЙ СМЫСЛ
Согласен. Дурь несусветная. Но, прошу заметить, друзья. Ни на миллилитр не дурнее оригинала. Ribbon As IRibbonUI тоже "...cоздает меню в стиле Ribbon и все".
Действительно, зачем ribbon'овцы придумали ленту?   CommandBar'ов  (as a shortcut menu)  пруд пруди.
Так что, это они во всем виноваты. Я лишь вторю.
ПРИМ. Чем не игрушка для конечного пользователя? Просто, ясно и легкими движениями: элементы в любом количестве и привычном качестве. Ровно как у тов.  Аndy Pope. За что ему пролетарский 'special thanks to'
Изменено: Сергей Кр - 25.07.2015 21:11:24
 
2. Проверять добавление сией строки смысла практического не имеет - её можно просто игнорировать. Не проставляет её сам пользователь - его дело. А т.к. Ваш код и так со всеми объявлениями - то можно на эту строку забить.
Или поступить более кощунски(что в данном случае ошибок тоже не вызовет): через CountOfLines определить - добавил ли VBE какие-либо строки от себя. Если нет - CountOfLines будет равен нулю. А если да - просто удаляем все лишние и спокойно добавляем свое.

Плюс обязательное условие тоже не мешает огласить(так, на всякий случай для тех, кто не в теме): доверие к проекту VBA должно быть доверенным. Иначе будет "ой...".

3. Вот с размером не соглашусь, ой не соглашусь. Разница в том, какого он размера есть всегда. И не важно - будет он блуждать по инету или нет. Стремиться надо к уменьшению. Всегда. Момент 1-ый: чем больше файл, тем дольше он открывается. Момент 2-ой: чем больше файл, тем дольше он сохраняется. Момент 3-ий: чем больше файл перегружен кодами и пр. и чем больше его вес - тем больше вероятность его внезапного "падения".

Еще раз повторюсь: все прикольно. Но для меня, как для разработчика - это только плюшка, использовать которую не буду. Мне удобнее создать свои кнопки, для красоты кинуть на них картинки и все. Красиво, просто и со вкусом. Ничего лишнего. А упор в количестве кода лучше сделаю на функционал  :D

Да, кстати: Вы предлагаете подключить CommonControl. Но ведь это можно сделать только к незащищенному проекту. А у Вас там пароль. Не все захотят лишний раз что-то взламывать для "потестировать".
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Сергей Кр пишет: Microsoft Windows Common controls 6.0 (SP6).
Нет у меня этой библы ,  ленивый я.(Да и вручную: )   :D  
Я стараюсь Treeview использовать только в случае крайней необходимости.
 
Цитата
Doober пишет:
Я стараюсь Treeview использовать только в случае крайней необходимости
А я вообще не использую. Докажи потом пользователю, что ты не виноват, что у него этого нет  :D  Заказчики бывают ой какие лихие.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Цитата
Сергей Кр пишет: что имеется из ужастиков, это Treeview
Это на самом деле ужастик, вылетает периодически, не на всех компах себя "ведет" хорошо.....
 
Товарищи. Не виноватая я. Интерфейс программы сам ко мне пришел:
http://www.planetaexcel.ru/blog/ribbonx-visual-designer/
Изменено: Сергей Кр - 26.10.2014 15:30:09
 
2. С мастером соглашусь безоговорочно. Через CountOfLines мутить сразу не хотелось. Прописку Option Explicit убираю. Через два дня.

ВАЖНО.  Доверие к проекту VBA должно быть доверенным. Иначе вылетит  MsgBox "Для программного создания ленты для UserForm (в Вашей версии)" & vbCrLf &   "необходимо включить все макросы и иметь доверенный доступ к Visual Basic Project"  и придется расходиться по домам.

3. Размер файла. Тогда смело: или дудочка или кувшинчик.
Изменено: Сергей Кр - 25.07.2015 20:58:52
 
Файл скорректирован. Ссылка новая от 26 Окт 2014
- прописка Option Explicit убрана
- плюс 7 дополнительных проверок и корректировок, минус 2 визуальных недочета. Будем стремиться к совершенству.
 
Вот так надстройка должна работать. API нет. Treeview есть.
 
Цитата
Сергей Кр пишет:
Вот так надстройка должна работать. API нет. Treeview есть.
Это опять же малополезная информация без кода к проекту - я об этом писал.
Как возникают ошибки MISSING? Очень просто. Когда разработчик ставит ссылку в проекте на библиотеку, файла которой нет на ПК конечного пользователя. Т.е. если у меня на ПК нет CommonControls 6.0 - работать у меня не будет. Или если версии этих библиотек различаются.

А вот как раз API при правильно применении никаких ошибок не даст(если опять же используются вызовы через API функций сторонних библиотек).
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Файл скорректирован. Ссылка новая
-без пароля


ПРОСЬБА: Если есть такая возможность, можно вдохнуть необходимую библиотеку в эту хрюшку?  Мне такую органическую химию не осилить.
Пусть будет 'Миру - мир'. Для всех добрых людей
Изменено: Сергей Кр - 25.07.2015 20:57:05
 
Как бы...Внедрить-то можно и подключать можно автоматически, но...Надо, чтобы были полные права админа для регистрации компонента.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Эти права у кого находятся? У меня или у Путина?

ПРИМ. Я правильно понимаю, что библиотека устанавливается в приложение [Excel], а не в конкретный файл? Если да, то файлы пускай себе ссылаются на библиотеки. А необходимые библиотеки просто надо искать и устанавливать. В чем тогда вина конкретного файла? Пусть даже и моего..
Изменено: Сергей Кр - 27.10.2014 18:33:51
 
Я не знаю. Я вне политики. Я лишь написал нюансы, которые имеют значение для реализации внедрения компонента и его использования, если у пользователя на ПК его нет. Если Вас это задевает - дело личное, ждите Путина.

Пока могу предложить лишь ознакомиться: http://www.excel-vba.ru/general/moi-programmy-dlya-raboty-s-excel/pri-zapuske-poyavlyaetsya-oshibka-component-comdlg32-ocx/

Дальше участие в теме принимать что-то не хочется...
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Дмитрий. Я  ни в коем случае не желал кого-либо лично в чем-либо упрекнуть. Ни Владимира Владимировича. Ни, тем более Вас.
Просто я искренне пытаюсь узнать что еще от меня может требоваться
Если был неправильно понят, простите сердечно.
Изменено: Сергей Кр - 27.10.2014 18:56:19
 
ПРИМ. Я не могу проверить [т.к. у меня  Microsoft Windows Common controls 6.0 (SP6) установлена], но если у кого нет этой библиотеки, попробуйте сначала установить оригинальную программу от Andy Pope [лишней не будет]
http://www.andypope.info/vba/ribboneditor.htm
Она ведь в таком же положении находится. Может она таранит эту библиотеку на пользовательский ПК.
Treeview  не такой уж экзотический контрол. Всегда может пригодиться.

Заслуженно оставленный в одиночестве, я больше не знаю, чем помочь.
Изменено: Сергей Кр - 27.10.2014 20:50:30
 
Это не она, заветная?
http://www.microsoft.com/en-US/download/details.aspx?id=10019
 
Достать сам компонент не проблема. Проблема его зарегистрировать в операционной системе. Новые ОС Windows достаточно капризные в плане прав на выполнение операций подобного рода и делать это из VBA та еще радость. По сути можно было бы подключить просто через regsvr32. Но...Не всегда у VBA достаточно прав для выполнения подобных операций(зависит от того, как устанавливали). Проще при распространении самой надстройки воткнуть этот контрол и инструкцию по его регистрации (наподобии той, на которую я дал ссылку - там все есть) на случай, если он в системе отсутствует или не зарегистрирован. Вот и все. Именно на это я намекал в своем сообщении. А не высказывал Вам претензий по какому либо поводу. Это Ваше творение и Вам решать как что внедрять - я могу лишь подкинуть мысли, не более...

Кратко: все компоненты и библиотеки, которые нуждаются в регистрации, регистрируются именно в ОС, а не в приложении и тем более не в отдельном файле.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
Земной поклон Вам, Дмитрий, за внимание и подробнейшее  'ведение' темы. [Все недоразумения (или переразумения) гоним прочь].


ПРИМ. Друзья. Я - не программист. Array(Windows, реестр, ActiveX и т.п.) - для меня туманность, равная Андромедской.
Пусть все, что сказал Дмитрий, станет инструкцией для ситуаций, подобных данной. [Еще раз спасибо].
 
Если не требуется 'работа с существующими проектами' (и не выявятся какие-либо недостатки в имеющемся), то в последний раз:
Файл скорректирован [Пост№ 1]. Ссылка новая  от 31 Окт 2014:
- без пароля
- поближе к ГОСТу

Приятной работы с RibbonF Visual Designer
Изменено: Сергей Кр - 31.10.2014 09:35:51
 
подпишусь на тему на память, может, пригодится
F1 творит чудеса
 
Виноват, но это не учебная тревога

Файл скорректирован [Пост№ 1]. Ссылка новая от 8 Ноя 2014:
- когда задается пользовательское имя для  UserForm, то  для всех уже введенных элементов автоматически переименовываются названия процедур [onAction и т.п.]. Но для некоторых элементов названия процедур формировались с Пробелом, что недопустимо. Исправлено.
Убедительная просьба ко всем, кто решил оставить себе надстройку, заменить файл.
 
10 иерс лейтер

Рискну возобновить собрание.
На повестке:  неуемный размер нового (создаваемого) файла. Сведен к антимассе (см. справку Режимы создания нового проекта).  Проблем больше нет.

Грех не пользоваться, грех:  UserForm, ненаглядная, шт.1

:
Страницы: 1
Читают тему
Наверх