Вход


Главная страница >> Учебный процесс >> Конспекты >> MS Office. Руководство программиста по Visual Basic для MS Office 97 >> Объекты Microsoft Access >> Oбъект Module и набор Modules >> Свойства объекта Module >> Работа с процедурами

Переход на главную страницу

Сервер поддерживается
кафедрой информатики и вычислительной техники ГрГУ
тел. +375-(0)152-445-101
E-mail :
kadan@grsu.grodno.by


[Назад]    [Содержание ]    [Вперед]

  


Работа с процедурами


Чтобы получить информацию о процедуре модуля, используйте свойства Lines, ProcBodyLine, ProcCountLines, ProcOfLine и ProcStartLine. Процедуpa может быть одного из четырех типов: Sub или Function, Property Get, Property Let и Property Set. Процедуры Sub и Function относятся к одному типу, и большая часть процедур ? именно этого типа. С последними тремя типами Вы встретитесь только при определении свойств в модулях классов

Свойство ProcBodyLine возвращает номер строки, с которой начинается oпределение процедуры, т. е. строки, включающей оператор Sub, Function, Property Get, Property Let или Property Set. Свойство ProcStartLine возвращает номер строки, следующей сразу за разделителем процедур, если Вы установили флажки Full Module View (Полный модуль) и Procedure Separator (Разделитель процедур) на вкладке Module (Модуль) диалогового окна Option (Параметры) из меню Tools (Сервис). Номер этой строки может совпадали (а может и не совпадать) с тем, что возвращается свойством ProcBodyLine. Любые комментарии, объявления на уровне модуля или пустые строки, предшествующие определению процедуры, считаются ее частью. Поэтому свойство ProcStartLine возвращает номер первой строки всей процедуры.

В следующем примере свойства ProcCountLines, ProcStartLine, ProcBodyLine и Lines применяются для вывода текста процедуры в окне Debug (oкна отладки):

Function ProcLinelnfo(strModuleName As String, strProcName As String) As Boolean
═════Dim mdl As Module
═════Dim IngStartLine As Long. IngBodyLine As Long
═════Dim IngCount As Long, IngEndProc As Long

═════On Error GoTo Error_ProcLinelnfo
═════?
открываем заданный модуль
═════DoCrnd.OpenModule strModuleName
═════'
получаем ссылку на заданный модуль
═════Set mdl = Modules(strModuleName)

═════? вычисляем количество строк в процедуре
═════IngCount= mdl.ProcCountLines(strProcName, vbext_pk_Proc)
═════?
определяем первую строку
═════IngStartLine =mdl.ProcStartLine(strProcNarne, vbext_pk_Proc)

═════? определяем строку, с которой начинается тело процедуры
═════IngBodyLine = mdl.ProcBodyLine(strProcName, vbext_pk_Proc)
═════Debug. Print

═════? выводим все строки процедуры, предшествующие ее телу
═════Debug. Print "Lines preceding procedure " & strProcName & ": "
═════Debug. Print mdl.Lines(lngStartLine, IngBodyLine - IngStartLine)

═════? определяем номер последней строки процедуры
═════IngEndProc ^ (IngBodyLine + IngCount - 1) - Abs(lngBodyLine - lngStartLine)

═════? выводим все строки в теле процедуры
═════Debug. Print "Body lines: "
═════Debug. Print mdl.Lines(lngBodyLine, (IngEndProc - IngBodyLine) + 1)
═════ProcLineInfo = True

Exit_ProcLinelnfo:
═════Exit Function

Error_ProcLinelnfo:
═════MsgBox Err & ": " & Err. Description
═════procLineInto = False
═════Resume Exit_ProcLinelnfo
End Function

Вы можете вызвать эту функцию из базы данных Northwind (Борей) с помощью, например, такой процедуры:

Sub GetProcInto( )
═════procLineInfo "Utility Functions". "IsLoaded"
End Sub



[Назад]    [Содержание ]    [Вперед]

  



Текст пособия подготовлен на основе материалов книги
Microsoft Corporation. Руководство программиста по Visual Basic для Microsoft Office 97 / Пер. с англ. - М.: Издательский отдел "Русская Редакция" ТОО "Channel Trading Ltd.", 1997. - 544 с.: илл.
c Оригинальное издание на английском языке,
Microsoft Corporation, 1997
c Русский перевод,
Microsoft Corporation, 1997

  
За содержание страницы отвечает Гончарова М.Н.
©
Кафедра СПиКБ, 2002-2017