Создание пользовательской Панели инструментов средствами API

Автор p3452, 24.05.21, 11:08:42

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

KilkennyCat

Цитата: Sabahs от 25.05.21, 15:00:25Как можно откомпилировать DLL, если её использует процесс?
Именно это я и имею ввиду. Компас мог бы и освободить её, раз она отключена. Зачем блокировка нафсихда?


KilkennyCat

Sabahs, ну, значит, либо эта проблема лишь у варианта c ActivX, либо вообще какая-то локальная, у меня.

ActivX, работает иначе, в конфигураторе есть вкладка, отдельная для таких библиотек.

KilkennyCat

Знаю. Если это намёк на то, что надо пойти в эту вкладку, удалить (разрегистрировать) библиотеку оттуда, то это тоже пройденный (и очевидный) этап и всё равно оставляет её заблокированной. Если намёк на то, что это вообще какая-то иная технология, которая не позволяет разлочить, то не соглашусь, позволяет. Либо это не сделано в Компасе, либо какой-то глюк системы у меня.

PS

Цитата: p3452 от 25.05.21, 15:03:00Осталось выяснить как вызывать: "быстрая справка" вызывается автоматически при нахождении курсора над пунктом меню заданное время (2 сек.). Это будет работать (при каких условиях?), или обработчик (реакцию на событие) надо писать самому?
Если есть файл базы с соответствующей информацией, то работает автоматом.

p3452

Что-то, видно, осталось недосказанным или непонятым...

Иконки, из шрифтовых файлов Приложения (атрибут appIcon) не отображаются!?
Компас-овские иконки (атрибут icon) отображаются нормально!

На примере все того же Step2 (вновь созданные шрифты конвертированы из тех что в оригинале) вот что имеем:
Step2New2.png
Вот, что должно быть:
Step2 - панель родная.png
Файл проект с исходниками и готовая dll-ка:
Step2New.rar

 

KilkennyCat

#27
Ваш проект показывается так:

изображение_2021-05-29_190059.png

Остальные, скрытые панелей меню отображаются как тёмно-синие квадраты с цифрами. Так что, всё верно согласно:
<appCommand id="2" title="Пересечь кривые" appIcon=""/>
          <appCommand id="3" title="Пересечь отрезок и дугу" appIcon="E004"/>
        </group>
        <appCommand id="4" title="Касательная из точки" icon="E005"/>
        <appCommand id="5" title="Касательная под углом" icon="E006"/>

Подобное поведение (квадратики отсутствующих символов вместо иконок) у меня наблюдалось тоже, пропадало после перезагрузки всего и вся. Именно это и вызвало согласие с предложением Вират Лакх о разработке некоего отдельного визарда... сегодня приступил.


p3452

Да, именно так и должно быть (допустил неточность в описании ОЖИДАЕМОГО результата)!
-> пара системных иконок (замена атрибута "appIcon" на  "icon"),
-> буквенная пара - это обнаруженная ФИЧА (полезная!).

Но! У меня то не совсем корректно работает: цифровые иконки 1, 3, 6, 7, 8, 9 не отображаются!

Возник еще вопрос: а не надо ли эти "новые" шрифты зарегистрировать?


KilkennyCat

Буквенная пара описана в документации, не помню уже где, но было точно, причём в штатно идущей (не в дополнениях от PS)
Установка шрифтов не требуется, достаточно нахождения в корне с dll (или в какой-нить папке, по аналогии с Load для картинок, но сиё мне неизвестно)

p3452

Цитата: KilkennyCat от 29.05.21, 20:04:21Установка шрифтов не требуется, достаточно нахождения в корне с dll (или в какой-нить папке, по аналогии с Load
Ваше утверждение сомнительно!
Посмотрите папки с приложениями - файлы шрифтов могут иметь название отличное от наименования программы (не так как в примере Step2New2), тогда возникает вопрос: откуда приложение знает в каком файле лежит какой шрифт, если мы указываем только наименование шрифтов и не указываем имена файлов их хранения!?

Хотелось бы увидеть комментарий от PS или других Осведомленных!

KilkennyCat

1) ни в своих опытах, ни в приложенном Вами примере я не делал установки шрифтов.
2) какой шрифт в каком файле Вы указываете явно: <application id="APP_Step2New2" title="Математика1" libName ="Step2New2 - Создание Панели инструментов" appIcon="E001" autostart="true" showInMenu="false" iconFont="#Step2New2 Base" iconAccentFont="#Step2New2 Accent" iconColor1Font="#Step2New2 Color1" iconColor2Font="#Step2New2 Color2" iconColor3Font="#Step2New2 Color3">, Компас знает путь к приложению, и если условие нахождения шрифтов в том же месте (либо + определённая папка) выполняется, то и доступ к шрифтам есть.
3) встроенные в компас иконки находятся в файлах шрифтов с базовым именем asconicons* в качестве ресурса в файле GuiThemes.dll, и я не заметил их установки.

Вообще, регистрация (установка) собственных шрифтов в Windows для собственного приложения - это не является обязательным требованием, иначе у нас эта папка просто взорвалась бы уже от кучи притянутых шрифтов с веб-страниц.

p3452

Иконки на Панель инструментов появились только после перемещения папки приложения с диска D:\ в Компас-овскую папку \Lib !

KilkennyCat

#33
И в процессе перемещения ничего не происходило? Например, был остановлен и заново запущен Компас...
E:\user\Downloads\Step2New - вот по такому пути запущен Ваш пример, всё нормально. Путь не прописан нигде.
E:\_Work\KompasAeromodelling - по такому работает моё приложение, всё нормально, и тоже нигде в переменных не прописан путь.
C:\Program Files\ASCON\KOMPAS-3D v19\Libs - Компас.

KilkennyCat

Цитата: KilkennyCat от 29.05.21, 20:55:032) какой шрифт в каком файле Вы указываете явно:
тут я ошибся.
"2.2.3.4 Атрибут iconFont
2.2.3.4.1 Содержит наименование шрифта (не имя файла шрифта, а собственно наименование
шрифта, заданное в файле шрифта)"


p3452

Таким образом вернулись в исходную точку (см. пост 26): "Что-то, видно, осталось недосказанным или непонятым..."!?

KilkennyCat

#36
Ну, на мой взгляд, ничего критично важного для работы. Нет информации о цветах, но она легко понимается из иконок "сохранить", "печать" и т.д.
(куда-то делось прикреплённое изображение....)

KilkennyCat

Цвета шрифтов:

Accent #FF930D (рыжий)
Color1 #A5D3EB (светло-синий)
Color2 #3498D8 (средне-синий)
Color3 #2980B9 (тёмно-синий)

Источник: GuiThemes.dll/basecolors.xaml

p3452

Ау-у, коллеги!
Кто, что может добавить по ЭТОЙ теме?

Каковы необходимые и достаточные условия для отображения иконок(пиктограмм) из пользовательских файлов-шрифтов?
Может быть есть более свежая информация по созданию, через API, Пользовательских "Инструментальных панелей" и "Панелей параметров"? 

p3452