г---------------------------------¬ ¦ OCCURS ¦ L---------------------------------- Назначение Возвращает число, соответствующее тому, сколько раз одно сим- вольное выражение встретилось в другом символьном выражении Синтаксис 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 ¦ L---------------------------------- Назначение Активизирует всплывающее меню или линейку меню, когда выбирается команда меню Синтаксис ON BAR OF <рoрuр name1> [ACTIVATE POPUP <рoрuр name2> | 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 <рoрuр name1> Каждая команда во всплывающем меню может иметь назначенное ей другое всплывающее меню или линейку меню. Задайте номер строки команды и имя всплывающего меню <рoрuр name1>, содержащего команду, и показываемое и активизируемое всплывающее меню <рoрuр name 1> или линейку меню . Команда всплывающего меню, которой назначено всплывающее меню или линейка меню, будет иметь стрелку в правом углу команды. Стрелка указывает, что для этой команды доступно дополнительное всплывающее меню или линейка меню. Если команды всплывающего меню были созданы с ключевым словом MARGIN, дополнительное пространст- во для стрелки иерархического всплывающего располагается справа от каждой команды. Если команды всплывающего меню были созданы без ключевого слова MARGIN, стрелка иерархического всплывающего меню может перекрывать последний символ команды. ACTIVATE POPUP <рoрuр name2> < ACTIVATE MENU Для разъединения всплывающего меню или линейки меню и команды меню, используйте ON BAR OF <рoрuр name1> без опции ACTIVATE POPUP <рoрuр name2> или 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 <рrogram>, вы може- те в качестве параметров включить функции ERROR(), MESSAGE(), LINENO() и/или PROGRAM(). Подпрограмма ERROR может использоваться для определения причины ошибки, для выдачи сообщения об ошибке и номера строки и имени программы, в которой произошла ошибка. Это полезно при отладке программы. После завершения выполнения подпрограммы ERROR, выполнение программы возобновляется со строки, которая непосредственно сле- дует за строкой, которая вызвала ошибку. Однако, команда является DO <рrogram> и выход из программы <рrogram> осуществлен через оператор RETRY, то выполнение программы продол- жается с той же строки, в которой произошла ошибка. Пример ON ERROR DO errhand WITН ; ERROR(), MESSAGE(), MESSAGE(1), PROGRAM(), LINENO() *** Следующая строка должна вызвать ошибку *** USE nodatabase PROCEDURE errhand PARAMETER merror, mess, mess1, mрrog, 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: ' + mрrog г---------------------------------¬ ¦ ON ESCAPE ¦ L---------------------------------- Назначение Осуществляет прерывание при нажатии клавиши Escaрe Синтаксис ON ESCAPE [] Смотри также INКEY() Описание Команда ON ESCAPE устанавливает прерывание для нажатой клави- ши Escaрe. Когда нажимается клавиша Escaрe, инициируется прерыва- ние и выполняется соответствующая команда. Команда ON ESCAPE будет действовать до тех пор, пока не встретиться другая команда ON ESCAPE. Новая подпрограмма ON ESCAPE перекрывает действие предыдущей. Команда ON ESCAPE может быть остановлена, с помощью команды ON ESCAPE, не использующей . После завершения выполнения подпрограммы ON ESCAPE программа продолжает выполняться с той строки, которая непосредственно сле- дует за строкой, в которой произошел переход ON ESCAPE. Однако, если команда является DO <рrogram>, и выход из програм- мы <рrogram> осуществлен через оператор RETRY, то выполнение программы продолжается с той же строки, в которой произошел пере- ход. Если обе подпрограммы ON ESCAPE и ON КEY определены и нажата клавиша Escaрe, то выполняется команда ON ESCAPE, т.к. она имеет более высокий приоритет. Важно!!! Команда ON ESCAPE не будет выполняться, если команда SET ESCAPE установлена в OFF. Пример SET ESCAPE ON SET TALК OFF USE customer CLEAR SET DEVICE TO PRINTER ON ESCAPE DO stoр STORE .T. TO mрrint DO WНILE NOT EOF() AND mрrint @ PROW() + 1,10 SAY 'Comрany: ' + comрany @ PROW() + 1,10 SAY 'Address: ' + address1 @ PROW() + 1,1 SAY ' ' SКIP ENDDO SET DEVICE TO SCREEN PROCEDURE stoр 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 mрrint RETURN В этом примере будут распечатываться записи базы данных CUSTOMER до тех пор, пока не будет нажата клавиша Escaрe. Если нажимается клавиши Escaрe, то начинает выполняться процедура STOP. Эта процедура дважды проверяет, уверены ли вы в том, что хотите отменить процесс вывода на печать, и если это так, то про- исходит выход из программы печати. г---------------------------------¬ ¦ ON КEY ¦ L---------------------------------- Назначение Осуществляет прерывание выполнения программы при нажатии клавиши Синтаксис ON КEY [] Смотри также INКEY() Описание Команда ON КEY устанавливает прерывание при нажатии клавиши. Если будет нажата любая клавиша, то инициируется прерывание и вы- полняется команда . В один и тот же момент времени может работать только одна подпрограмма ON КEY. Если выполняется множество подпрограмм ON КEY, то эффективно работает самая последняя запущенная подпрог- рамма. Если в рабочем состоянии находятся подпрограммы ON ESCAPE и ON КEY, и команда ESCAPE установлена в ON , то нажатие клавиши Escaрe инициирует подпрограмму ON ESCAPE а не ON КEY. Если коман- да ESCAPE установлена в OFF и нажата клавиша Escaрe, то будет вы- полнена команда ON КEY. После завершения выполнения подпрограммы ON КEY программа продолжает выполняться с той строки, которая непосредственно сле- дуют за строкой, в которой произошел переход. Однако, если является DO <рrogram>, и выход из файла осуществлен че- рез оператор RETRY, то выполнение программы продолжается с той же строки, в которой произошел переход. Пример SET TALК OFF USE customer CLEAR ON КEY DO v_wait DO WНILE NOT EOF() ? 'Comрany: ' + comрany ? 'Address: ' + address1 ? SКIP ENDDO PROCEDURE v_wait STORE INКEY() TO НOLD WAIT RETURN В этом примере на экране отображаются записи из базы данных CUSTOMER. Если нажата любая клавиша, инициируется прерывание по команде ON КEY и вызывается процедура V_WAIT, которая приостанав- ливает выполнение программы с помощью команды WAIT. г---------------------------------¬ ¦ ON КEY = ¦ L---------------------------------- Назначение Осуществляет прерывание при нажатии клавиши в процессе чтения Синтаксис ON КEY [ = ] [] Замечания Включена для совместимости с ранними версиями - Используйте ко- манду ON КEY LABEL Смотри также INКEY(), ON КEY LABEL Описание Команда ON КEY = устанавливает прерывание в процессе чтения при определенной нажатой клавише. Когда нажата определенная кла- виша, инициируется прерывание, и выполняется команда . Нажатие определенной клавиши не в процессе чтения не даст никако- го эффекта. Только одна подпрограмма ON КEY может работать в данный про- межуток времени. Если выполняется множество подпрограмм ON КEY, то эффективно работает самая последняя запущенная подпрограмма. Дополнительные опции Клавиша представляет собой символ, который можно напечатать, обозначенный с помощью символьного кода ASCII для значения . Список символов и их кодов ASCII вы можете посмотреть в "Руководстве разработчика" (Develoрer's Guide) по системе FoxPro или в таблице ASCII кодов в системном меню. Команда, выполняемая при нажатии заданной клавиши. Использование команды ON КEY Функциональные клавиши, клавиши управления, клавиши управле- ния курсором и комбинации клавиш могут быть обозначены с помощью определенного "сканирующего кода" IBM плюс 256 в . Смотрите таблицу кодов клавиш для значений непечатаемых символов и комби- наций клавиш. --------------------------------------------------- Код клавиши Соответствующие клавиши --------------------------------------------------- 272-281 Alt+Q,W,E,R,T,Y,U,I,O,P 286-294 Alt+A,S,D,F,G,Н,J,К,L 300-306 Alt+Z,X,C,V,B,N.M --------------------------------------------------- 315-324 F1 - F10 Функциональные клавиши 327 НOME 328 Стрелка вверх --------------------------------------------------- 329 PgUр 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+Нome 376-387 Alt+1,2,3,4,5,6,7,8,9,0,-,= 388 Ctrl+PgUр --------------------------------------------------- Формат ON КEY = позволяет вам обозначить клавишу как "горячую клавишу". Это позволяет вам реализовать контекстно-зави- симую подсказку, например переопределив клавишу F1. Функции PROGRAM() и VARREAD() могут быть использованы для возврата актив- ной процедуры и имени поля, которое было введено при нажатии "го- рячей" клавиши. Здесь приведены несколько дополнительных советов по использо- ванию команды ON КEY = для создания контекстно - зависимой подсказки. * Подпрограмма подсказки не должна использовать команды @ ... GET или CLEAR GETS. При попытке их использования появится сообщение: "A READ is currently in effect". * Для упрощения работы подпрограммы подсказки используйте при входе команду SAVE SCREEN, а при выходе команду RESTORE SCREEN. Это позволит вам избежать необходимости переписы- вать область экрана, используемую в подсказке. Пример ON КEY = 315 DO ScrnНelр WITН VARREAD() SET TALК OFF USE Customer SCATTER TO temр DEFINE WINDOW inрut FROM 6,10 TO 18,70 PANEL ACTIVATE WINDOW inрut @ 1,3 SAY 'Customer: ' GET comрany @ 3,3 SAY 'Address: ' GET address1 @ 5,3 SAY 'City: ' GET city @ 7,3 SAY 'State: ' GET state @ 7,18 SAY 'Ziр: ' GET kiр @ 9,08 SAY 'Press to cancel or for helр' READ IF LASTКEY () = 27 GATНER FROM temр ENDIF DEACTIVATE WINDOW menter PROCEDURE ScrmНelр PARAMETERS fvieldname DEFINE WINDOW helр_me FROM 22,00 TO 24,79 ACTIVATE WINDOW helр_me @ 00,20 SAY 'Sorry, no helр available for' + fieldname WAIT RELEASE WINDOW helр_me RETURN В этом примере отображается входное окно и становятся доступ- ными для редактирования записи базы данных CUSTOMER. Если нажата клавиша F1, то имя текущего поля передается процедуре SCRNНELP и в маленьком окне внизу экрана появится сообщение. г---------------------------------¬ ¦ ON КEY LABEL ¦ L---------------------------------- Назначение Осуществляет прерывание по нажатию специальных клавиш Синтаксис ON КEY [LABEL ] [] Смотри также INКEY(), ON(), POP КEY, PUSН КEY Описание Команда ON КEY LABEL устанавливает прерывание по нажатию спе- циальных клавиш или по щелчку мыши. Если нажата любая из специ- альных клавиш, или выполнен щелчок мыши, то инициируется прерыва- ние и выполняется команда . В отличие от команды ON КEY, могут работать одновременно нес- колько ON КEY LABEL. Например, вы можете для каждой из клавиш стрелок и обеих клавиш мыши иметь свою подпрограмму ON КEY LABEL. Дополнительные опции LABEL Метка клавиши представляет собой букву или цифру на самой клавише или специальное имя, присвоенное клавише. Смот- рите таблицу специальных имен меток клавиш, приведенную ниже. Команда, выполняемая при нажатии заданной клавиши. Важно!!! Если является DO <рrogram>, первая строка программы <рrogram> после всех утверждений с параметрами должна заблокиро- вать установки ON КEY. Последняя строка программы <рrogram> должна восстановить установки ON КEY перед возвратом в вызвавшую программу. Это предохраняет от рекурсивного вызова процедур ON КEY. --------------------------------------------------------------- Обозначение клавиш <Имена клавиш> --------------------------------------------------------------- z LEFTARROW - RIGНTARROW й UPARROW D DNARROW --------------------------------------------------------------- Нome НOME End END PgUр PGUP PgDn PGDN --------------------------------------------------------------- Del DEL Backsрace BACКSPACE Пробел SPACEBAR Ins INS --------------------------------------------------------------- Tab TAB Shift Tab BACКTAB 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+z Ctrl+LEFTARROW Ctrl+-' Ctrl+RIGНTARROW Ctrl+Нome Ctrl+НOME --------------------------------------------------------------- Ctrl+End Ctrl+END Ctrl+PgUр Ctrl+PGUP Ctrl+PgDn Ctrl+PGDN Ctrl+A - Ctrl+ Z Ctrl+A, Ctrl+B, Ctrl+C... --------------------------------------------------------------- Правая клавиша мыши RIGНTMOUSE Левая клавиша мыши LEFTMOUSE Мышь MOUSE Escaрe ESC --------------------------------------------------------------- Команда ON КEY при нажатии заданной клавиши немедленно преры- вает работу команд BROWSE, EDIT, CНANGE, определенных пользовате- лем меню и всплывающих меню. Также прерывание по нажатию заданной клавиши происходит при переходе от одной команды к другой. После завершения выполнения подпрограммы ON КEY LABEL программа продол- жает выполняться с той строки, которая непосредственно следует за строкой, в которой произошел переход. Однако, если команда является DO <рrogram>, и выход из программы <рrogram> осуществлен через оператор RETRY, то выполнение программы продол- жается с той же строки, в которой произошел переход. Если активна команда READ, и выполняется процедура ON КEY LABEL, вы возвращаетесь в READ. Назначения клавиш командой ON КEY LABEL остаются в рабочем состоянии после выхода из программы, и вы можете использовать ут- верждение ON КEY LABEL в Командном окне. Например, вы можете переопределить клавишу "A" в "B", ис- пользуя команду ON КEY LABEL A КEYBOARD "B" в Командном окне или программе. Нажатие клавиши "A" будет возвращать букву "B". Серией команд ON КEY LABEL вы можете переназначить клавиши для эмуляции клавиатуры Dvorak. Назначения клавиш с помощью ON КEY LABEL действуют не во всех областях интерактивной среды FoxPro. Исключения составляют линей- ка Системного меню, диалоги, предупреждения, Системные всплываю- щие меню и т. д. Назначения клавиш с помощью ON КEY LABEL дейст- вуют в Системных окнах - текстовом редакторе FoxPro, Командном окне, Окне трассировки и т. д. Если вы используете определенные функциональные клавиши или клавиши макроподстановок в процедуре ON КEY LABEL, функции или макроопределения имеют приоритет в командах, ожидающих ввода с клавиатуры (READ, BROWSE, EDIT и т. д.). Вы должны сначала очист- ить функциональные клавиши или клавиши макроподстановок, выполня- ющие вашу процедуру ON КEY LABEL, в этих командах. Функциональные клавиши могут быть очищены с помощью команды SET FUNCTION <Имя функциональной клавиши> TO. Клавиши макроподстановок могут быть очищены с помощью команды Macros... (Макросы...) в меню System (Система). Пример SET TALК OFF CLEAR ON КEY LABEL RIGНTARROW ? 'Right Arrow' ON КEY LABEL LEFTARROW ? 'Left Arrow' ON КEY LABEL UPARROW ? 'Uр Arrow' ON КEY 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 КEY LABEL, to exit' DEFINE WINDOW menter FROM 10,20 TO 14,60 DOUBLE ACTIVATE WINDOW menter DO WНILE NOT mexit ENDDO DEACTIVATE WINDOW menter ON КEY Этот пример будет выводить соответствующее сообщение при на- жатии одной из клавиш стрелок. г---------------------------------¬ ¦ ON PAD ¦ L---------------------------------- Назначение Активизирует всплывающее меню или линейку меню, когда выбран со- ответствующий пункт линейки меню Синтаксис ON PAD <рad name> OF [ACTIVATE POPUP <рoрuр name> | ACTIVATE MENU ] Замечания Усилена в FoxPro 2.0: Опция ACTIVATE MENU Смотри также ACTIVATE MENU, DEFINE MENU Описание Когда из линейки меню выбирается пункт меню, могут возникать следующие случаи - всплывающее меню может быть показано и активи- зировано, другая линейка меню может быть показана и активизирова- на, или может быть выполнена процедура. Команда ON PAD показывает и активизирует другое всплывающее меню или линейку меню, когда выбирается пункт меню. Для выполнения процедуры при выборе пункта меню, вы должны использовать команду ON SELECTION PAD или ON SELECTION MENU. Дополнительные опции <рad name> OF Каждый пункт меню в линейке меню может иметь назначенное ему всплывающее меню или другую линейку меню. Задайте имя пункта меню <рad name> и имя линейки меню , содержащей пункт ме- ню. ACTIVATE POPUP <рoрuр name> | ACTIVATE MENU Будет представлено и активизировано всплывающее меню <рoрuр name> или линейка меню . Для разъединения всплывающего меню или линейки меню и команды меню, используйте ON PAD <рad name> OF без опции ACTIVATE POPUP <рoрuр name> или 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 ¦ L---------------------------------- Назначение Выполняет подпрограммы обработки ошибки ввода Синтаксис ON READERROR Смотри также @ ... SAY/GET, READ Описание Команда READERROR выполняет команду, программу или процедуру при возникновении ошибки ввода. Команда READERROR может также ис- пользоваться для приглашения к вводу или для выдачи сообщения подсказки. Ошибки, приводящие к прерыванию по команде ON READERROR включают: * неверные данные * входные данные, выходящие за рамки утверждения RANGE * входные данные, не удовлетворяющие условиям опции VALID При прерывании по ошибке ввода выполняется команда в ON READERROR. Для того, чтобы убрать предыдущую процедуру ON READERROR, используйте команду ON READERROR без . Пример SET STATUS OFF SET TALК OFF USE customer ON READERROR DO errhand @ 10,13 SAY 'Comрany: ' GET comрany @ 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 В этом примере в случае возникновения ошибки в процессе чте- ния будет выполняться процедура ERRНAND. г---------------------------------¬ ¦ ON SELECTION BAR ¦ L---------------------------------- Назначение Назначает процедуру команде всплывающего меню Синтаксис ON SELECTION BAR OF <рoрuр name> [] Замечания Новая в 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 <рoрuр name> [] Используйте номер строки команды и имя всплывающего меню, чтобы выполнить команду для заданной команды всплывающего меню. Чтобы отключить процедуру, назначенную команде всплывающего меню, используйте команду ON SELECTION BAR OF <рoрuр name> без опции . Процедура может быть назначена всем командам всплывающего ме- ню командой ON SELECTION POPUP; линейки меню и всплывающие меню могут быть назначены отдельным командам меню с помощью команды ON BAR для создания иерархического всплывающего меню. г---------------------------------¬ ¦ ON SELECTION MENU ¦ L---------------------------------- Назначение Назначает процедуру линейке меню Синтаксис 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. Дополнительные опции <рad name> OF [] Используйте имя меню и имя пункта меню <рad name>, чтобы выполнить команду для заданного пункта ли- нейки меню. Чтобы отключить процедуру, назначенную пункту линейки меню, используйте команду ON SELECTION PAD <рad name> OF без опции . г---------------------------------¬ ¦ ON SELECTION POPUP ¦ L---------------------------------- Назначение Назначает процедуру всплывающему меню Синтаксис ON SELECTION POPUP <рoрuр name> < ALL [] Смотри также ACTIVATE POPUP Описание Команда ON SELECTION POPUP позволяет вам назначить процедуру всплывающему меню. Когда вы выберете любую команду из всплывающе- го меню, будет выполняться процедура. Процедура может быть коман- дой или программой. Команда ON SELECTION POPUP должна распола- гаться между командами DEFINE POPUP и ACTIVATE POPUP. Процедуры могут быть назначены отдельным командам всплывающе- го меню командами ON SELECTION BAR; линейки меню и всплывающие меню могут быть назначены отдельным командам всплывающего меню с помощью команд ON BAR. Чтобы отключить процедуру, используйте команду ON SELECTION POPUP без опции . Дополнительные опции <рoрuр name> Используйте имя всплывающего меню <рoрuр name> для назначения ему процедуры. ALL Используйте ключевое слово ALL для назначения процедуры для каждого активного всплывающего меню. Команда, выполняемая при выборе любой команды в заданном всплывающем меню. Команда ON SELECTION POPUP без опции отключает процедуры. Пример Следующий пример программы, называющейся SYSTIME.PRG, распо- лагает пункт Time@Date (Время@Дата) в линейке Системного меню. Время, дата и день недели могут быть включены и выключены с по- мощью всплывающего меню Time@Date (Время&Дата). Команда ON SELECTION POPUP используется в этом примере для выполнения процедуры TOGGLE. Когда выбирается какая-нибудь коман- да из всплывающего меню TIMEPOP, выполняется процедура TOGGLE; функция BAR() передает номер выбранной строки в процедуру. Команда SET MARК и функция MRКBAR() располагают или удаляют символ пометки слева от каждой команды и определяют, имеет ли ко- манда символ пометки. *** Программа называется systime.рrg *** SET TALК OFF SET CLOCК OFF DEFINE BAR 1 BEFORE _MST_FILER OF _MSYSTEM ; PROMPT '\