Курсовая работа: Разработка модуля для контура управления tic-104

LoadTreeViewNodes Enterprise.PIModules, EnterpriseNode, i

EnterpriseNode.Expanded = True

End Sub

Private Sub LoadTreeViewNodes(Modules As PIModules, ParentNode As Node, i As Long)

Dim Module As PIModule

Dim SubNode As Node

DimstrKeyAsString

‘ свойство “Key” узла должно быть уникальным. Поскольку модули могут одновременно присутствовать в нескольких разных местах,

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

For Each Module In Modules

i = i + 1

strKey = Module.UniqueID & “-“ & i

Set SubNode = tvwEnterprise.nodes.Add(ParentNode, tvwChild, strKey, Module.Name)

LoadTreeViewNodes Module.PIModules, SubNode, i ‘ рекурсивныйвызовметодовявляетсянаилучшимспособомобработкииерархий

NextModule

EndSub

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

Значение node.text совпадает с именем модуля. Используемый метод заключается в том, чтобы пройти вверх по иерархии к родителям узла, создавая массив узлов, а затем пройти вниз по массиву, используя свойство node.text, чтобы получить элемент модуля. Другой способ, который можно было бы здесь применить, состоит в том, чтобы хранить каждый модуль в этом дереве. Однако, этот подход не очень хорошо масштабируется.

Вот код, который это выполняет:

Private Sub tvwEnterprise_NodeClick(ByVal Node As MSComctlLib.Node)

Dim Module As PIModule

Dim i As Long

Dim ParentNodes(20) As Node

i = 1

Set ParentNodes(i) = Node.Parent

On Error GoTo Done

WhileTrue

i = i + 1

‘ следующая строка приведет к ошибке после нахождения последнего родителя, после чего произойдет переход к метке “Done”

К-во Просмотров: 421
Бесплатно скачать Курсовая работа: Разработка модуля для контура управления tic-104