Страницы: Пред. 1 2
RSS
GUI в XLL, Рассмотрим возможные варианты
 
rsdn:
Введение в COM,
COM
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
Далее по теме: Пользовательская форма.
Реализация в xll возможна несколькими способами.
1. Windows Forms + .NET (С#, VB и т.д.) - самый простой и быстрый способ, сильный функционал (весь Microsoft .NET Framework в кармане). Особенности: нужны сторонние разработки/продукты - обертки .NET над C API  Excel.
Нужен .NET Framework. (к примеру здесь использовал)
Язык написания библиотеки XLL - .NET


2. C API  Excel, в частности функция Excel 4.0 Macro: DIALOG.BOX(dialog_ref), да-да, еще с древнего 1993 года (поправьте, если запамятовал). Сейчас 2021, Excel 2016 x64 - и все работает. По сложности, времени разработки и функционалу сильно уступает первому.
Особенности: Язык - Си, не нужны никакие сторонние продукты, за исключением, собственно, Excel.
Вот описание для любопытных, и скрины, что удалось по быстрому набросать.
Скрытый текст

Отдельно по функционалу: есть удобная проверка (самим Excel) вводимых значение в соответствующий элемент,  есть возможность установки trigger, но не на все элементы.
Малый набор элементов (24 элемента), устаревший выбор папок, файлов, помним что прошло почти 30 лет.
Из плюсов, можно использовать прямо "из коробки"

+Возможно есть другие способы использовать  C API  Excel (эмуляцию использования UserForm+VBA здесь не рассматриваю)

3. Использование WinAPI - при достаточном уровне прокачки, по сложности сравним со вторым вариантом, по функционалу с первым (собственно любой GUI базируется на WinAPI, если не используется DirectX или OpenGL, что для форм - сомнительно, как микроскопом забивать гвозди).
Язык: С/С++
Особенности: кроме, собственно Windows, никакие библы и фрамеворки не нужны, даже Excel.
Много кода, много возможностей (перехват любого системного сообщения/события для вашей формы, и не только вашей :) - шутка )
Вот, по-быстрому написал форму, с переводом Address диапазона в  AddressR1C1.
Использованы элементы: BUTTON, EDIT, COMBOBOX, LISTBOX, SCROLLBAR и STATIC - поля + нарисовал прогресс-бар
Изменено: bedvit - 06.04.2021 17:10:37
«Бритва Оккама» или «Принцип Калашникова»?
 
Продолжим исследование...
Динамический интерфейс XLL позволяет добавлять/удалять необходимые элементы меню, подменю, форм.
К примеру, добавим возможность сохранить/удалить/использовать любой числовой формат прямо в меню Excel/XLL (см. видео)  (Библиотеку залил на сайт, кому нужен данный функционал - пользуйтесь.)
Пойдем еще дальше...
А можно ли сохранить настройки меню, и самой XLL и загружать когда необходимо? переносить с одного ПК на другой, отсылать другу? :)
Реализуем и этот функционал (см. видео)
Сохранения позволяют хранить любую информация (настройки меню, форм, внутренние данные библиотеки, данные с листа Excel, и далее... все что можно прочитать в памяти процесса :) )
Добавим внутреннее хранилище в самой XLL, и готово - теперь мы можем динамически загружать, сохранять, изменять и хранить любую информацию в XLL.

Изменено: bedvit - 14.04.2022 15:46:31
«Бритва Оккама» или «Принцип Калашникова»?
Страницы: Пред. 1 2
Наверх