Чтение имен процедур
Метод
AddCode элемента управления Script позволяет добавлять к нему несколько процедур. Иногда ему необходим список имен всех процедур. Свойство Procedures является семейством, содержащим все процедуры, добавленные в элемент управления Script. Оно имеет свойство Count,
которое возвращает количество процедур, и свойство /tern, возвращающее, собственно, процедуру. Приведенный ниже цикл сканирует все процедуры в списке.
For i=1 To ScriptControll.Procedures.Count
{обработка элемента ScriptControll.Procedures (i)}
Next
Каждый элемент в семействе Procedures имеет свойство Name, которое соответствует имени процедуры, и свойство HasReturn Value, которое возвращает значение True, если процедура возвращает результат (т.е. является функцией). Кнопка List Procedures на форме SEdit выводит список имен и типов всех процедур в нижний элемент управления TextBox.
Программа 20.10. Список процедур
Private Sub Coinmand2 Click ()
On Error GoTo CodeError
ScriptControll.AddCode Text1.Text
For i=1 To ScriptControll.Procedures.Count
If ScriptControll.Procedures(i).HasReturnValue Then
Text2.Text = Text2.Text & vbCrLf & "Function " _
& ScriptControll.Procedures(i).Name
Else
Text2.Text = Text2.Text & vbCrLf S "Subroutine " _
& ScriptControll.Procedures(i).Name
End If
Next
Exit Sub
CodeError:
MsgBox Err.Description
End Sub
Обратите внимание, как код различает процедуры и функции с помощью свойства
HasReturn Value.
Совет
Хотелось бы, чтобы существовало какое-нибудь свойство, называемое, например, Code, возвращающее текст процедуры. К сожалению, такого свойства не существует. Нет простого способа получить код отдельной процедуры. Более того, отсутствует метод удаления отдельной процедуры. Необходимо удалить все процедуры методом Reset элемента управления Script, а затем добавить их по одной, исключив ненужную. При этом придется сохранить список процедур в отдельном элементе (например, в TextBox). В проекте SEdit для извлечения отдельной процедуры выполняется просмотр содержимого верхнего элемента управления TextBox.