Как я могу повторно использовать классы в моем приложении VB6?

StackOverflow https://stackoverflow.com/questions/1205809

Вопрос

Прежде всего, поскольку я использую VB6, пожалуйста, ограничьте ваши добрые предложения методами, применяемыми к VB6.

alt text

У меня есть набор элементов управления, связанных друг с другом, как показано на рисунке выше.Он включает в себя несколько древовидных представлений, разделенную панель, listview, подчиненную форму (usercontrol) и т.д.

Когда я нажимаю или изменяю узлы treeview слева, правые элементы управления соответствующим образом меняют свое отображение, и наоборот.

Данные, стоящие за сценой, хранятся в базе данных Access.

Этот набор средств управления данными и их отображения используется в нескольких различных приложениях.Поэтому я написал несколько классов для реализации логики и снова и снова включаю модули этих классов в свои приложения.

Так что я на самом деле ПОВТОРНОЕ ИСПОЛЬЗОВАНИЕ мои занятия проводятся в режиме "копировать и вставлять".Это работает, но у него есть проблемы.Если я вношу изменения в класс, мне приходится изменять его в нескольких приложениях.

В эти дни я подумываю о том, чтобы превратить их в так называемые ActiveX-компоненты.Но я не уверен, какие компоненты ActiveX мне следует разработать, чтобы повторно использовать всю архитектуру.

В двух словах, я хочу знать как я могу использовать его более изящно чем просто "скопировать и вставить".Ниже приведены некоторые идеи или ожидания от нового "изящного ПОВТОРНОГО использования", но не ограничивайтесь ими.

(1) Я надеюсь, что это похоже на элемент управления ActiveX, у которого есть страница свойств, чтобы я мог установить некоторые его свойства во время разработки.

(2) Для разных приложений подчиненная форма справа может отображать разную информацию, иметь разные элементы управления и может нуждаться в дополнительном кодировании и проектировании.

(3) Также мне, возможно, потребуется закодировать какое-то новое поведение для treeview и listview для разных приложений.Это требование делает весь пользовательский элемент управления для всей формы непригодным.поскольку в MSDN сказано, что “Ссылки на элементы управления ActiveX, никогда не должны возвращаться в клиентские приложения".

Это было полезно?

Решение

  • Создайте библиотеку DLL ActiveX (не элемент управления)
  • Определите интерфейс для формы в
    библиотека DLL
  • Переместите всю свою логику в один или несколько классов библиотеки DLL и пусть подпрограммы взаимодействуют с формой через интерфейс
  • Реализуйте интерфейс в виде
  • При одной инициализации приложения форма регистрируется в библиотеке DLL ActiveX

Это эффективно устранит копирование и вставку между различными приложениями.

Например, для моего приложения для резки металла у меня есть форма Shape, класс Shape Screen и множество классов shape.Двумя методами класса shape являются DrawScreen, который имеет параметры типа ShapeScreen, и getValues, который также имеет параметр типа ShapeScreen.

DrawScreen использует метод ShapeScreen для настройки экрана ввода, а Shape Screen - для настройки формы через интерфейс IShapeForm.getValues использует методы экрана формы для получения введенных значений формы, которые, в свою очередь, используют IShapeForm для получения значений из формы.

Эта настройка оказалась полезной, когда нам пришлось разрабатывать различные формы ввода данных в ответ на запросы клиентов.В новой форме просто реализован интерфейс IShapeForm, а остальное программное обеспечение осталось нетронутым.

Другие советы

Возможно, мне следует инкапсулировать каждый из элементов управления в пользовательский элемент управления, а затем создать виртуальный элемент управления ActiveX (без визуального интерфейса), чтобы объединить эти элементы управления в единое целое.

Похоже, у вас есть представление, логика домена и данные. Ваша главная проблема, которую я предвижу, это пункт два, он не является статичным по внешнему виду и логике от приложения к приложению. Может быть, вам нужны два отдельных элемента управления? Левая панель и правая панель. Правая панель, вероятно, будет реализовывать некоторый массив элементов управления, поскольку они не будут статичными.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top