ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 11

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             OCCURS              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Возвращает число,  соответствующее тому,  сколько раз одно  символьное
выражение встретилось в другом символьном выражении
    Синтаксис
OCCURS(, )
    Параметры
  Отыскиваемое символьное выражение
  Исследуемое символьное выражение
    Возвращаемый тип
Численный
    Смотри также
$, INLIST()

    Описание
    Функция OCCURS()  возвращает  целое  число,  соответствующее тому,
сколько раз одно символьное выражение встретилось в другом  символьном
выражении. Если выражение ни разу не было обнаружено, функция OCCURS()
возвращает ноль.

    Параметры

    Символьное выражение  будет отыскиваться.


    Символьное выражение    будет  исследоваться  на содержание
символьного выражения .

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             Примеры             є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

STORE 'abracadabra' TO d_string
? OCCURS('a',d_string)

5

? OCCURS('b',d_string)

2

? OCCURS('c',d_string)

1

? OCCURS('e',d_string)

0

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             ON BAR              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ
    Назначение
Активизирует всплывающее  меню  или  линейку  меню,  когда  выбирается
команда меню
    Синтаксис
ON BAR  OF 
        [ACTIVATE POPUP 
        | ACTIVATE MENU ]
    Замечания
Новая в FoxPro 2.0
    Смотри также
ACTIVATE MENU, DEFINE BAR, DEFINE MENU, DEFINE POPUP, ON SELECTION BAR

    Описание
    Когда из  всплывающего  меню  выбирается команда,  могут возникать
следующие случаи - другое  всплывающее  меню  может  быть  показано  и
активизировано, линейка меню может быть показана и активизирована, или
может быть  выполнена  процедура.  Команда   ON   BAR   показывает   и
активизирует другое   всплывающее   меню   или   линейку  меню,  когда
выбирается команда.   Всплывающее   меню,   которое    показывает    и
активизирует другое  всплывающее  меню  или  линейку меню,  называется
иерархическим всплывающим меню.  Для выполнения процедуры  при  выборе
команды, вы  должны  использовать  команду  ON  SELECTION  BAR  или ON
SELECTION POPUP.

    Дополнительные опции
 OF 
    Каждая команда во всплывающем  меню  может  иметь  назначенное  ей
другое всплывающее меню или линейку меню. Задайте номер строки команды
 и имя всплывающего меню ,  содержащего команду,  и
показываемое и  активизируемое  всплывающее  меню   или
линейку меню .
    Команда всплывающего меню,  которой назначено всплывающее меню или
линейка меню,  будет иметь стрелку  в  правом  углу  команды.  Стрелка
указывает, что  для  этой  команды доступно дополнительное всплывающее
меню или линейка меню.  Если команды всплывающего меню были созданы  с
ключевым словом   MARGIN,   дополнительное  пространство  для  стрелки
иерархического всплывающего располагается справа  от  каждой  команды.
Если команды  всплывающего  меню  были  созданы  без  ключевого  слова
MARGIN, стрелка иерархического  всплывающего  меню  может  перекрывать
последний символ команды.

ACTIVATE POPUP 
| ACTIVATE MENU 
    Для разъединения  всплывающего  меню  или  линейки  меню и команды
меню, используйте ON BAR  OF   без  опции  ACTIVATE
POPUP  или ACTIVATE MENU .
    Следующий пример демонстрирует систему  иерархических  всплывающих
меню. Линейка  меню  с  именем DINNER создается с двумя пунктами меню.
Каждый пункт   имеет   соответствующую   команду   ON   PAD,   которая
активизирует всплывающее меню MAINCOURSE или DESSERT. Всплывающие меню
MAINCOURSE и DESSERT имеют дополнительные  всплывающие  меню  (BURGER,
PIZZA и PIE), назначенные некоторым из их команд с помощью трех команд
ON BAR.  Команды OLIVE и PIE имеют  дополнительные  всплывающие  меню,
назначенные им другими двумя командами ON BAR.
    Когда произведен выбор,  команда ON SELECTION POPUP ALL  выполняет
подпрограмму (PROCEDURE ORDER), которая активизирует окно и показывает
выбор. Выбор  определяется  с  помощью  функций  POPUP()  и  PROMPT(),
которые возвращают  имя  всплывающего  меню  и  содержание приглашения
команды всплывающего меню.

ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД·
є             Пример              є
УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ

DEFINE WINDOW order FROM 10,0 TO 13,39

DEFINE MENU dinner
DEFINE PAD one OF dinner PROMPT '\
] Смотри также ERROR() Описание Команда ON ERROR устанавливает прерывание по ошибке в процессе выполнения программы. Когда возникает ошибка, инициируется прерывание и выполняется заданная команда. Процедура ON ERROR может быть остановлена, если ON ERROR используется без команды. Если команда включает в себя DO , вы можете в качестве параметров включить функции ERROR(), MESSAGE(), LINENO() и/или PROGRAM(). Подпрограмма ERROR может использоваться для определения причины ошибки, для выдачи сообщения об ошибке и номера строки и имени программы, в которой произошла ошибка. Это полезно при отладке программы. После завершения выполнения подпрограммы ERROR, выполнение программы возобновляется со строки, которая непосредственно следует за строкой, которая вызвала ошибку. Однако, команда является DO и выход из программы осуществлен через оператор RETRY, то выполнение программы продолжается с той же строки, в которой произошла ошибка. ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД· є Пример є УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ ON ERROR DO errhand WITH ; ERROR(), MESSAGE(), MESSAGE(1), PROGRAM(), LINENO() *** Следующая строка должна вызвать ошибку *** USE nodatabase PROCEDURE errhand PARAMETER merror, mess, mess1, mprog, mlineno ? 'Error number: ' + LTRIM(STR(merror)) ? 'Error message: ' + mess ? 'Line of code with error: ' + mess1 ? 'Line number of error: ' + LTRIM(STR(mlineno)) ? 'Program with error: ' + mprog ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД· є ON ESCAPE є УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ Назначение Осуществляет прерывание при нажатии клавиши Escape Синтаксис ON ESCAPE [] Смотри также INKEY() Описание Команда ON ESCAPE устанавливает прерывание для нажатой клавиши Escape. Когда нажимается клавиша Escape, инициируется прерывание и выполняется соответствующая команда. Команда ON ESCAPE будет действовать до тех пор, пока не встретиться другая команда ON ESCAPE. Новая подпрограмма ON ESCAPE перекрывает действие предыдущей. Команда ON ESCAPE может быть остановлена, с помощью команды ON ESCAPE, не использующей . После завершения выполнения подпрограммы ON ESCAPE программа продолжает выполняться с той строки, которая непосредственно следует за строкой, в которой произошел переход ON ESCAPE. Однако, если команда является DO , и выход из программы осуществлен через оператор RETRY, то выполнение программы продолжается с той же строки, в которой произошел переход. Если обе подпрограммы ON ESCAPE и ON KEY определены и нажата клавиша Escape, то выполняется команда ON ESCAPE, т.к. она имеет более высокий приоритет. Важно!!! Команда ON ESCAPE не будет выполняться, если команда SET ESCAPE установлена в OFF. ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД· є Пример є УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ SET ESCAPE ON SET TALK OFF USE customer CLEAR SET DEVICE TO PRINTER ON ESCAPE DO stop STORE .T. TO mprint DO WHILE NOT EOF() AND mprint @ PROW() + 1,10 SAY 'Company: ' + company @ PROW() + 1,10 SAY 'Address: ' + address1 @ PROW() + 1,1 SAY ' ' SKIP ENDDO SET DEVICE TO SCREEN PROCEDURE stop SET DEVICE TO SCREEN STORE ' ' TO mcheck @ 10,10 SAY 'Cancel Printing (Y/N) ? ' GET mcheck ; PICTURE '!' VALID mcheck $ 'YN' READ @ 10,10 TO 10,79 CLEAR IF mcheck = 'N' SET DEVICE TO PRINTER RETRY ENDIF EJECT STORE .F. TO mprint RETURN В этом примере будут распечатываться записи базы данных CUSTOMER до тех пор, пока не будет нажата клавиша Escape. Если нажимается клавиши Escape, то начинает выполняться процедура STOP. Эта процедура дважды проверяет, уверены ли вы в том, что хотите отменить процесс вывода на печать, и если это так, то происходит выход из программы печати. ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД· є ON KEY є УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ Назначение Осуществляет прерывание выполнения программы при нажатии клавиши Синтаксис ON KEY [] Смотри также INKEY() Описание Команда ON KEY устанавливает прерывание при нажатии клавиши. Если будет нажата любая клавиша, то инициируется прерывание и выполняется команда . В один и тот же момент времени может работать только одна подпрограмма ON KEY. Если выполняется множество подпрограмм ON KEY, то эффективно работает самая последняя запущенная подпрограмма. Если в рабочем состоянии находятся подпрограммы ON ESCAPE и ON KEY, и команда ESCAPE установлена в ON , то нажатие клавиши Escape инициирует подпрограмму ON ESCAPE а не ON KEY. Если команда ESCAPE установлена в OFF и нажата клавиша Escape, то будет выполнена команда ON KEY. После завершения выполнения подпрограммы ON KEY программа продолжает выполняться с той строки, которая непосредственно следуют за строкой, в которой произошел переход. Однако, если является DO , и выход из файла осуществлен через оператор RETRY, то выполнение программы продолжается с той же строки, в которой произошел переход. ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД· є Пример є УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ SET TALK OFF USE customer CLEAR ON KEY DO v_wait DO WHILE NOT EOF() ? 'Company: ' + company ? 'Address: ' + address1 ? SKIP ENDDO PROCEDURE v_wait STORE INKEY() TO HOLD WAIT RETURN В этом примере на экране отображаются записи из базы данных CUSTOMER. Если нажата любая клавиша, инициируется прерывание по команде ON KEY и вызывается процедура V_WAIT, которая приостанавливает выполнение программы с помощью команды WAIT. ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД· є ON KEY = є УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ Назначение Осуществляет прерывание при нажатии клавиши в процессе чтения Синтаксис ON KEY [ = ] [] Замечания Включена для совместимости с ранними версиями - Используйте команду ON KEY LABEL Смотри также INKEY(), ON KEY LABEL Описание Команда ON KEY = устанавливает прерывание в процессе чтения при определенной нажатой клавише. Когда нажата определенная клавиша, инициируется прерывание, и выполняется команда . Нажатие определенной клавиши не в процессе чтения не даст никакого эффекта. Только одна подпрограмма ON KEY может работать в данный промежуток времени. Если выполняется множество подпрограмм ON KEY, то эффективно работает самая последняя запущенная подпрограмма. Дополнительные опции Клавиша представляет собой символ, который можно напечатать, обозначенный с помощью символьного кода ASCII для значения . Список символов и их кодов ASCII вы можете посмотреть в "Руководстве разработчика" (Developer's Guide) по системе FoxPro или в таблице ASCII кодов в системном меню. Команда, выполняемая при нажатии заданной клавиши. Использование команды ON KEY Функциональные клавиши, клавиши управления, клавиши управления курсором и комбинации клавиш могут быть обозначены с помощью определенного "сканирующего кода" IBM плюс 256 в . Смотрите таблицу кодов клавиш для значений непечатаемых символов и комбинаций клавиш. --------------------------------------------------- Код клавиши Соответствующие клавиши --------------------------------------------------- 272-281 Alt+Q,W,E,R,T,Y,U,I,O,P 286-294 Alt+A,S,D,F,G,H,J,K,L 300-306 Alt+Z,X,C,V,B,N.M --------------------------------------------------- 315-324 F1 - F10 Функциональные клавиши 327 HOME 328 Стрелка вверх --------------------------------------------------- 329 PgUp 331 Стрелка влево 333 Стрелка вправо --------------------------------------------------- 335 End 336 Стрелка вниз 337 PgDn --------------------------------------------------- 338 Ins 339 Del 340-349 Shift+F1 - Shift+F10 --------------------------------------------------- 350-359 Ctrl+F1 - Ctrl+F10 360-369 Alt+F1 - Alt+F10 370 Ctrl+Print+Scrn --------------------------------------------------- 371 Ctrl+Стрелка влево 372 Ctrl+Стрелка вправо 373 Ctrl+End --------------------------------------------------- 374 Ctrl+PgDn 375 Ctrl+Home 376-387 Alt+1,2,3,4,5,6,7,8,9,0,-,= 388 Ctrl+PgUp --------------------------------------------------- Формат ON KEY = позволяет вам обозначить клавишу как "горячую клавишу". Это позволяет вам реализовать контекстно-зависимую подсказку, например переопределив клавишу F1. Функции PROGRAM() и VARREAD() могут быть использованы для возврата активной процедуры и имени поля, которое было введено при нажатии "горячей" клавиши. Здесь приведены несколько дополнительных советов по использованию команды ON KEY = для создания контекстно - зависимой подсказки. * Подпрограмма подсказки не должна использовать команды @ ... GET или CLEAR GETS. При попытке их использования появится сообщение: "A READ is currently in effect". * Для упрощения работы подпрограммы подсказки используйте при входе команду SAVE SCREEN, а при выходе команду RESTORE SCREEN. Это позволит вам избежать необходимости переписывать область экрана, используемую в подсказке. ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД· є Пример є УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ ON KEY = 315 DO ScrnHelp WITH VARREAD() SET TALK OFF USE Customer SCATTER TO temp DEFINE WINDOW input FROM 6,10 TO 18,70 PANEL ACTIVATE WINDOW input @ 1,3 SAY 'Customer: ' GET company @ 3,3 SAY 'Address: ' GET address1 @ 5,3 SAY 'City: ' GET city @ 7,3 SAY 'State: ' GET state @ 7,18 SAY 'Zip: ' GET zip @ 9,08 SAY 'Press to cancel or for help' READ IF LASTKEY () = 27 GATHER FROM temp ENDIF DEACTIVATE WINDOW menter PROCEDURE ScrmHelp PARAMETERS fvieldname DEFINE WINDOW help_me FROM 22,00 TO 24,79 ACTIVATE WINDOW help_me @ 00,20 SAY 'Sorry, no help available for' + fieldname WAIT RELEASE WINDOW help_me RETURN В этом примере отображается входное окно и становятся доступными для редактирования записи базы данных CUSTOMER. Если нажата клавиша F1, то имя текущего поля передается процедуре SCRNHELP и в маленьком окне внизу экрана появится сообщение. ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД· є ON KEY LABEL є УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ Назначение Осуществляет прерывание по нажатию специальных клавиш Синтаксис ON KEY [LABEL ] [] Смотри также INKEY(), ON(), POP KEY, PUSH KEY Описание Команда ON KEY LABEL устанавливает прерывание по нажатию специальных клавиш или по щелчку мыши. Если нажата любая из специальных клавиш, или выполнен щелчок мыши, то инициируется прерывание и выполняется команда . В отличие от команды ON KEY, могут работать одновременно несколько ON KEY LABEL. Например, вы можете для каждой из клавиш стрелок и обеих клавиш мыши иметь свою подпрограмму ON KEY LABEL. Дополнительные опции LABEL Метка клавиши представляет собой букву или цифру на самой клавише или специальное имя, присвоенное клавише. Смотрите таблицу специальных имен меток клавиш, приведенную ниже. Команда, выполняемая при нажатии заданной клавиши. Важно!!! Если является DO , первая строка программы после всех утверждений с параметрами должна заблокировать установки ON KEY. Последняя строка программы должна восстановить установки ON KEY перед возвратом в вызвавшую программу. Это предохраняет от рекурсивного вызова процедур ON KEY. --------------------------------------------------------------- Обозначение клавиш <Имена клавиш> --------------------------------------------------------------- <- LEFTARROW RIGHTARROW  UPARROW  DNARROW --------------------------------------------------------------- Home HOME End END PgUp PGUP PgDn PGDN --------------------------------------------------------------- Del DEL Backspace BACKSPACE Пробел SPACEBAR Ins INS --------------------------------------------------------------- Tab TAB Shift Tab BACKTAB Enter ENTER F1 - F12 F1,F2,F3... --------------------------------------------------------------- Ctrl+F1 - Ctrl+F12 Ctrl+F1 , Ctrl+F2... Shift+F1 - Shift+F12 Shift+F1 , Shift+F2... Alt+F1 - Alt+F12 Alt+F1, Alt+F2... Alt+0 - Alt+9 Alt+0, Alt+1, Alt+2... --------------------------------------------------------------- Alt+A - Alt+Z Alt+A, Alt+B, Alt+C... Ctrl+<- Ctrl+LEFTARROW Ctrl+ Ctrl+RIGHTARROW Ctrl+Home Ctrl+HOME --------------------------------------------------------------- Ctrl+End Ctrl+END Ctrl+PgUp Ctrl+PGUP Ctrl+PgDn Ctrl+PGDN Ctrl+A - Ctrl+ Z Ctrl+A, Ctrl+B, Ctrl+C... --------------------------------------------------------------- Правая клавиша мыши RIGHTMOUSE Левая клавиша мыши LEFTMOUSE Мышь MOUSE Escape ESC --------------------------------------------------------------- Команда ON KEY при нажатии заданной клавиши немедленно прерывает работу команд BROWSE, EDIT, CHANGE, определенных пользователем меню и всплывающих меню. Также прерывание по нажатию заданной клавиши происходит при переходе от одной команды к другой. После завершения выполнения подпрограммы ON KEY LABEL программа продолжает выполняться с той строки, которая непосредственно следует за строкой, в которой произошел переход. Однако, если команда является DO , и выход из программы осуществлен через оператор RETRY, то выполнение программы продолжается с той же строки, в которой произошел переход. Если активна команда READ, и выполняется процедура ON KEY LABEL, вы возвращаетесь в READ. Назначения клавиш командой ON KEY LABEL остаются в рабочем состоянии после выхода из программы, и вы можете использовать утверждение ON KEY LABEL в Командном окне. Например, вы можете переопределить клавишу "A" в "B", используя команду ON KEY LABEL A KEYBOARD "B" в Командном окне или программе. Нажатие клавиши "A" будет возвращать букву "B". Серией команд ON KEY LABEL вы можете переназначить клавиши для эмуляции клавиатуры Dvorak. Назначения клавиш с помощью ON KEY LABEL действуют не во всех областях интерактивной среды FoxPro. Исключения составляют линейка Системного меню, диалоги, предупреждения, Системные всплывающие меню и т. д. Назначения клавиш с помощью ON KEY LABEL действуют в Системных окнах - текстовом редакторе FoxPro, Командном окне, Окне трассировки и т. д. Если вы используете определенные функциональные клавиши или клавиши макроподстановок в процедуре ON KEY LABEL, функции или макроопределения имеют приоритет в командах, ожидающих ввода с клавиатуры (READ, BROWSE, EDIT и т. д.). Вы должны сначала очистить функциональные клавиши или клавиши макроподстановок, выполняющие вашу процедуру ON KEY LABEL, в этих командах. Функциональные клавиши могут быть очищены с помощью команды SET FUNCTION <Имя функциональной клавиши> TO. Клавиши макроподстановок могут быть очищены с помощью команды Macros... (Макросы...) в меню System (Система). ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД· є Пример є УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ SET TALK OFF CLEAR ON KEY LABEL RIGHTARROW ? 'Right Arrow' ON KEY LABEL LEFTARROW ? 'Left Arrow' ON KEY LABEL UPARROW ? 'Up Arrow' ON KEY LABEL DNARROW ? 'Down Arrow' SET ESCAPE ON STORE .F. TO mexit ON ESCAPE STORE .T. TO mexit STORE 0 TO TEMP @ 0,0 SAY 'Press an arrow key to test ON KEY LABEL, to exit' DEFINE WINDOW menter FROM 10,20 TO 14,60 DOUBLE ACTIVATE WINDOW menter DO WHILE NOT mexit ENDDO DEACTIVATE WINDOW menter ON KEY Этот пример будет выводить соответствующее сообщение при нажатии одной из клавиш стрелок. ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД· є ON PAD є УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ Назначение Активизирует всплывающее меню или линейку меню, когда выбран соответствующий пункт линейки меню Синтаксис ON PAD OF [ACTIVATE POPUP | ACTIVATE MENU ] Замечания Усилена в FoxPro 2.0: Опция ACTIVATE MENU Смотри также ACTIVATE MENU, DEFINE MENU Описание Когда из линейки меню выбирается пункт меню, могут возникать следующие случаи - всплывающее меню может быть показано и активизировано, другая линейка меню может быть показана и активизирована, или может быть выполнена процедура. Команда ON PAD показывает и активизирует другое всплывающее меню или линейку меню, когда выбирается пункт меню. Для выполнения процедуры при выборе пункта меню, вы должны использовать команду ON SELECTION PAD или ON SELECTION MENU. Дополнительные опции OF Каждый пункт меню в линейке меню может иметь назначенное ему всплывающее меню или другую линейку меню. Задайте имя пункта меню и имя линейки меню , содержащей пункт меню. ACTIVATE POPUP | ACTIVATE MENU Будет представлено и активизировано всплывающее меню или линейка меню . Для разъединения всплывающего меню или линейки меню и команды меню, используйте ON PAD OF без опции ACTIVATE POPUP или ACTIVATE MENU . ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД· є Пример є УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ В следующем примере создается линейка меню с именем MAINMENU. Определены два пункта меню с именами INVOICES и CUSTOMERS, которые размещены в линейке меню с именем MAINMENU. С помощью последовательности команд DEFINE POPUP и DEFINE BAR создаются всплывающие меню с именами INVPOP и CUSTPOP. Если выбран пункт INVOICES, то первая команда ON PAD активизирует всплывающее меню с именем INVPOP. Если выбран пункт CUSTOMERS, то следующая команда ON PAD активизирует всплывающее меню с именем CUSTPOP. Команда ON SELECTION POPUP вызывает процедуру TMENU, когда выбирается команда из всплывающего меню. Процедура TMENU показывает имя всплывающего меню и команду, выбранную из этого всплывающего меню. Функция POPUP() возвращает имя активного всплывающего меню, а функция PROMPT() возвращает текст приглашения для выбора команды. CLEAR DEFINE MENU mainmenu DEFINE PAD invoices OF mainmenu PROMPT ' \ ] Смотри также EJECT PAGE Описание Команда ON PAGE выполняет команду, программу или процедуру при достижении в отчете определенного номера строки, или когда появляется команда EJECT PAGE. Команда ON PAGE позволяет вам определить подпрограмму для управления разделением страниц, формированием заголовков и нижних колонтитулов. Дополнительные опции AT LINE Системная переменная _PLINENO сохраняет значение текущего номера строки в отчете. Если значение переменной _PLINENO становится больше, чем номер строки, определенный в команде ON PAGE опцией AT LINE , то выполняется команда . Численное выражение может быть любым допустимым номером строки, а может быть командой, программой или процедурой. Подпрограмма ON PAGE может быть также запущена путем выполнения команды EJECT PAGE. Для получения более полной информации смотрите описание команды EJECT PAGE. Выполнение команды ON PAGE без включения AT LINE убирает предыдущую процедуру ON PAGE. ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД· є ON READERROR є УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ Назначение Выполняет подпрограммы обработки ошибки ввода Синтаксис ON READERROR Смотри также @ ... SAY/GET, READ Описание Команда READERROR выполняет команду, программу или процедуру при возникновении ошибки ввода. Команда READERROR может также использоваться для приглашения к вводу или для выдачи сообщения подсказки. Ошибки, приводящие к прерыванию по команде ON READERROR включают: * неверные данные * входные данные, выходящие за рамки утверждения RANGE * входные данные, не удовлетворяющие условиям опции VALID При прерывании по ошибке ввода выполняется команда в ON READERROR. Для того, чтобы убрать предыдущую процедуру ON READERROR, используйте команду ON READERROR без . ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД· є Пример є УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ SET STATUS OFF SET TALK OFF USE customer ON READERROR DO errhand @ 10,13 SAY 'Company: ' GET company @ 12,13 SAY 'Address: ' GET address1 @ 14,13 SAY 'Tax Rate: ' @ 14,23 GET taxrate PICTURE '9.99' RANGE 3,8 READ PROCEDURE errhand WAIT 'Error, Please reenter' RETURN В этом примере в случае возникновения ошибки в процессе чтения будет выполняться процедура ERRHAND. ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД· є ON SELECTION BAR є УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ Назначение Назначает процедуру команде всплывающего меню Синтаксис ON SELECTION BAR OF [] Замечания Новая в FoxPro 2.0 Смотри также ACTIVATE MENU, DEFINE MENU, DEFINE BAR, DEFINE POPUP, ON BAR, ON SELECTION POPUP Описание Команда ON SELECTION BAR позволяет вам назначить процедуру команде всплывающего меню. Когда вы выберете команду из всплывающего меню, будет выполняться процедура. Процедура может быть командой или программой. Команда ON SELECTION BAR должна располагаться между командами DEFINE POPUP и ACTIVATE POPUP. Дополнительные опции OF [] Используйте номер строки команды и имя всплывающего меню, чтобы выполнить команду для заданной команды всплывающего меню. Чтобы отключить процедуру, назначенную команде всплывающего меню, используйте команду ON SELECTION BAR OF без опции . Процедура может быть назначена всем командам всплывающего меню командой ON SELECTION POPUP; линейки меню и всплывающие меню могут быть назначены отдельным командам меню с помощью команды ON BAR для создания иерархического всплывающего меню. ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД· є ON SELECTION MENU є УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ Назначение Назначает процедуру линейке меню Синтаксис ON SELECTION MENU | ALL [] Замечания Новая в FoxPro 2.0 Смотри также ACTIVATE MENU, DEFINE MENU Описание Команда ON SELECTION MENU позволяет вам назначить процедуру линейке меню. Когда вы выберете любой пункт из линейки меню, будет выполняться процедура. Процедура может быть командой или программой. Команда ON SELECTION MENU должна располагаться между командами DEFINE MENU и ACTIVATE MENU. Дополнительные опции Используйте имя меню для выполнения команды для заданной линейки меню. ALL Используйте ключевое слово ALL для выполнения команды для каждой активной линейки меню. Команда, выполняемая при выборе в меню. Команда ON SELECTION MENU без опции отключает процедуру, назначенную заданной линейке меню. Команда ON SELECTION MENU ALL без опции отключает процедуру, назначенную всем линейкам меню. Процедуры могут быть назначены отдельным пунктам меню командами ON SELECTION PAD; линейки меню и всплывающие меню могут быть назначены отдельным пунктам линейки меню с помощью команд ON PAD. ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД· є Пример є УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ В следующем примере программы определяется линейка меню, содержащая четыре пункта меню. Когда выбирается какой-либо из пунктов меню, команда ON SELECTION MENU выполняет процедуру TMENU. Процедура TMENU использует функции MENU() и PAD() для представления имени меню и выбранного пункта меню. CLEAR DEFINE MENU mainmenu DEFINE PAD invoices OF mainmenu PROMPT ' \ OF [] Смотри также DEFINE MENU Описание Команда ON SELECTION PAD позволяет вам назначить процедуру пункту линейки меню. Когда вы выберете пункт из линейки меню, будет выполняться процедура. Процедура может быть командой или программой. Команда ON SELECTION PAD должна располагаться между командами DEFINE MENU и ACTIVATE MENU. Процедура может быть назначена всем пунктам линейки меню командой ON SELECTION MENU; линейки меню и всплывающие меню могут быть назначены отдельным командам меню с помощью команды ON PAD. Дополнительные опции OF [] Используйте имя меню и имя пункта меню , чтобы выполнить команду для заданного пункта линейки меню. Чтобы отключить процедуру, назначенную пункту линейки меню, используйте команду ON SELECTION PAD OF без опции . ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД· є ON SELECTION POPUP є УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ Назначение Назначает процедуру всплывающему меню Синтаксис ON SELECTION POPUP | ALL [] Смотри также ACTIVATE POPUP Описание Команда ON SELECTION POPUP позволяет вам назначить процедуру всплывающему меню. Когда вы выберете любую команду из всплывающего меню, будет выполняться процедура. Процедура может быть командой или программой. Команда ON SELECTION POPUP должна располагаться между командами DEFINE POPUP и ACTIVATE POPUP. Процедуры могут быть назначены отдельным командам всплывающего меню командами ON SELECTION BAR; линейки меню и всплывающие меню могут быть назначены отдельным командам всплывающего меню с помощью команд ON BAR. Чтобы отключить процедуру, используйте команду ON SELECTION POPUP без опции . Дополнительные опции Используйте имя всплывающего меню для назначения ему процедуры. ALL Используйте ключевое слово ALL для назначения процедуры для каждого активного всплывающего меню. Команда, выполняемая при выборе любой команды в заданном всплывающем меню. Команда ON SELECTION POPUP без опции отключает процедуры. ЦДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДД· є Пример є УДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДДЅ Следующий пример программы, называющейся SYSTIME.PRG, располагает пункт Time&Date (Время&Дата) в линейке Системного меню. Время, дата и день недели могут быть включены и выключены с помощью всплывающего меню Time&Date (Время&Дата). Команда ON SELECTION POPUP используется в этом примере для выполнения процедуры TOGGLE. Когда выбирается какая-нибудь команда из всплывающего меню TIMEPOP, выполняется процедура TOGGLE; функция BAR() передает номер выбранной строки в процедуру. Команда SET MARK и функция MRKBAR() располагают или удаляют символ пометки слева от каждой команды и определяют, имеет ли команда символ пометки. *** Программа называется systime.prg *** SET TALK OFF SET CLOCK OFF DEFINE BAR 1 BEFORE _MST_FILER OF _MSYSTEM ; PROMPT '\


?????? ???????????