Распечатать страницу

Команды для процедур и функций VFP

« Назад

Команды

PROCEDURE ProcedureName
                   [LPARAMETERS | PARAMETERS
                            parameter1 [AS para1type [OF ClassLib]]
                            [, parameter2 [AS para2type [OF ClassLib]] ...]
                   Commands
                   [RETURN [eExpression | TO MASTER | TO ProcedureName]]
         [ENDPROC]

или

PROCEDURE ProcedureName([parameter1 [AS para1type]
                   [, parameter2 [AS para2type]], ...]) [AS returntype]
                   Commands
                   [RETURN [eExpression | TO MASTER | TO ProcedureName]]
         [ENDPROC]

задают процедуру.

Опции, параметры и команды:

ProcedureName – имя процедуры. Не должно содержать более 254 символов.

LPARAMETERS | PARAMETERS – команда, создающая и инициализирующая переменные-формальные параметры процедуры. Команда LPARAMETERS создает локальные, а команда PARAMETERS – частные переменные.

parameter1, parameter2, … – имена формальных параметров процедуры, в качестве которых могут употребляться как скалярные переменные, так и массивы. Максимальное число параметров – 26. Число формальных параметров должно быть не меньше числа фактических параметров. Если число фактических параметров меньше числа формальных, то избыточные формальные параметры инициализируются значением .F.

AS type – тип данных формального параметра. Используется, когда необходима строгая типизация параметров.

OF ClassLib – библиотека класса, содержащая описание типа type.

Команда LPARAMETERS | PARAMETERS должна быть первой командой процедуры. Команда может присутствовать в процедуре только в одном экземпляре.

Число переданных параметров возвращается функцией PARAMETERS( ) или PCOUNT( ).

Commands – операторы, выполняемые процедурой.

RETURN – команда, прерывающая выполнение процедуры и определяющая возвращаемое процедурой значение, используемое в выражении, из которого процедура вызвана. Если команда опущена, то возвращаемое значение устанавливается равным .T. Подробно команда описана в разд. 7.3.

После процедуры в файле нельзя продолжить код основной программы, но можно разместить иные процедуры, функции и определения классов.

Команды

FUNCTION ProcedureName
                   [LPARAMETERS | PARAMETERS
                            parameter1 [AS para1type [OF ClassLib]]
                            [, parameter2 [AS para2type [OF ClassLib]] ...]
                   Commands
                   [RETURN [eExpression | TO MASTER | TO ProcedureName]]
         [ENDFUNC]

или

FUNCTION ProcedureName([parameter1 [AS para1type]
                   [, parameter2 [AS para2type]], ...]) [AS returntype]
                   Commands
                   [RETURN [eExpression | TO MASTER | TO ProcedureName]]
         ENDFUNC

задает функцию.

Функция VFP имеет те же характеристики, что и процедура.

Команда

MODIFY COMMAND [FileName | ?] [NOEDIT] [NOMENU] [NOWAIT]
                   [RANGE nStartCharacter, nEndCharacter] [[WINDOW WindowName1]
                   [IN [WINDOW] WindowName2 | IN SCREEN]] [AS nCodePage] [SAME]
                   [SAVE]

открывает окно редактирования, в котором можно создать или изменить программу.

Опции и параметры см. в описании команды MODIFY FILE.

Функция

EditSource(cShortCutID | [ cFilename [, nLineNo] [, cClassName]
                   [, cMethodName | cProcName]])

открывает редактор VFP, размещая курсор на указанной строке.

Функция возвращает один из приведенных в табл. 5.4 результатов.

Таблица 5.4

Результаты, возвращаемые EditSource( )

Значения

Описание

0

Файл успешно открыт

132, 705

Файл занят или не может быть открыт

200

Файл не открыт из-за неверной ссылки на объект. Следует проверить наличие метода cMethodName в объекте, указанном параметром cClassName

901, 925

Файл открыт, но имеется неверная ссылка на объект в cMethodName. Следует проверить ссылку на параметр cMethodName. Параметр, например, в случае формы должен иметь вид "MyForm.MyList.Click".
Значение 925 возвращается для форм и классов; 901 – для отчетов

Параметры:

cShortCutID – строка, содержащая ShortCut-идентификатор. Значение cShortCutID хранится в системной таблице FoxTask. Для каждого значения cShortCutID в таблице создается новая запись. При использовании параметра cShortCutID берутся сохраненные при его создании значения.

Замечание. ShortCut-пометка проставляется в редакторе после позиционирования курсора на помечаемой строке и нажатия Alt+F2 (рис. 5.4). Таким же образом эта пометка снимается (см. в справке тему Task List Manager, creating shortcut tasks).

100.1.-ShortCut-пометка

Рис. 5.4. ShortCut-пометка

Пометка отображается в списке задач Task List, открываемом при помощи меню Tools (рис. 5.5).

100.2.-Список-задач-Task-List

Рис. 5.5. Список задач Task List

Двойной удар мышью по строке с задачей, например в столбце File Name, позволит открыть форму ArrayShow, ее метод Init и перейти в нем к строке с пометкой.

Те же действия выполняется и при вызове

EditSource("_1GF19WGNJ")

в котором _1GF19WGNJ – это ShortCut-идентификатор, взятый из файла FoxTask. Этот файл является скрытым, но может быть локализован, например, поисковой системой при ее соответствующих настройках.

cFileName – строка с именем открываемого файла. Если файл уже открыт, то VFP его активизирует.

nLineNo – номер строки, на которой позиционируется курсор. Если используется 0, то курсор позиционируется на строке с последним сохраненным в файле ресурсов номером. Если задан номер несуществующей строки, то курсор будет установлен в начало файла. Отрицательное значение генерирует ошибку.

Параметр поддерживается при редактировании программ (PRG), хранимых процедур баз данных (DBC) и текстовых файлов.

cClassName – имя класса или окружения данных, подлежащего редактированию. Если открывается файл библиотеки классов (VCX) без указания имени класса, то взамен редактора будет открыт проектировщик классов.

cMethodName – имя метода, подлежащего редактированию. Задается в виде cObject.nMethodName.

cProcName – имя подлежащей редактированию процедуры в VCX-, SCX-, FRX- или LBX-файле.

В табл. 5.5 перечислены редакторы, открываемые функцией EditSource( ) в зависимости от расширения редактируемого файла.

Таблица 5.5

Редакторы, открываемые функцией EditSource( )

Редактор

Расширение

Установка по умолчанию

Текста

PRG

MODIFY COMMAND

"

MPR

MODIFY COMMAND

"

QPR

MODIFY COMMAND

"

TXT

MODIFY FILE

Исходного кода

SCX

MODIFY FORM

"

VCX

MODIFY CLASS

"

FRX

MODIFY REPORT

"

LBX

MODIFY LABEL

Меню

MNX

MODIFY MENU

Хранимых процедур

DBC

MODIFY PROCEDURE

Текста

Иное

MODIFY FILE

Пример. Открывается для редактирования обработчик события Init формы ArrayShow.

? EditSource("d:\HomeLibrary\Forms\ArrayShow.scx", 0, "", "ArrayShow.Init")