Как я могу повторно использовать классы в своем приложении VB6? - PullRequest
0 голосов
/ 30 июля 2009

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

alt text

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

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

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

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

Так что я на самом деле REUSE мои занятия в режиме "копировать и вставлять". Это работает, но есть проблемы. Если я внесу изменение в класс, мне придется изменить его в нескольких приложениях.

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

Вкратце, я хочу знать , как я могу использовать его более изящно , чем просто "копировать и вставлять". Ниже приведены некоторые идеи или ожидания нового «изящного REUSE», но не ограничиваясь ими.

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

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

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

Ответы [ 3 ]

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

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

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

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

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

0 голосов
/ 31 июля 2009

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

0 голосов
/ 30 июля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...