2009-07-30 1 views
0

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

alt text http://p.blog.csdn.net/images/p_blog_csdn_net/slowgrace/EntryImages/20090730/1633845453754062500.jpg

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

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

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

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

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

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

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

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

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

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

ответ

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

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

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

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

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

+0

Звучит «изящно», спасибо. Поскольку я не совсем знаком с DLL ActiveX и концепцией интерфейса. Не могли бы вы дать дополнительные пояснения? ShapeScreen - это класс в dll, и он имеет интерфейс IShapeForm. И где классы формы? Они тоже в вашей DLL? Короче говоря, я просто не могу понять, как «реализовать интерфейс в форме»? Это имеет какое-либо отношение к полиморфизму? – SlowGrace

+0

Не могли бы вы дать мне несколько строк кода, чтобы проиллюстрировать всю архитектуру? – SlowGrace

+0

Или вы имеете в виду, что в вашей DLL есть класс IShapeForm? Все классы в вашей DLL будут взаимодействовать с IShapeForm, когда им это понадобится с реальной формой. И когда я использую dll, я зарегистрирую реальную форму в классе IShapeForm. Да, я думаю, это ваш смысл. – SlowGrace

0

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

0

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