г---------------------------------¬ ¦ LIST ¦ L---------------------------------- Назначение Показывает записи базы данных или выражения Синтаксис LIST [FIELDS ] [] [FOR ] [WНILE] [OFF] [NOCONSOLE] [NOOPTIMIZE] [TO PRINTER < TO FILE ] LIST FILES [ON ] [LIКE ] [TO PRINTER < TO FILE ] LIST MEMORY [LIКE ] [NOCONSOLE] [TO PRINTER | TO FILE ] LIST STATUS [NOCONSOLE] [TO PRINTER | TO FILE ] LIST STRUCTURE [NOCONSOLE] [TO PRINTER | TO FILE ] Смотри также DISPLAY, DISPLAY FILES, DISPLAY MEMORY, DISPLAY STATUS, DISPLAY STRUCTURE, SET DELETED Описание Команды LIST эквивалентны командам DISPLAY за исключением трех отличий: - Область действия для команды LIST по умолчанию ALL (все записи) - Команда LIST не приглашает вас продвигаться вперед, когда экран или окно заполнятся - Команда LIST не показывает записей, помеченных для удале- ния, когда DELETED является SET ON (включено). Дополнительную информацию о командах LIST можно найти в соот- ветствующих темах DISPLAY в этом руководстве. г---------------------------------¬ ¦ LOAD ¦ L---------------------------------- Назначение Загружает бинарный файл в памяти Синтаксис LOAD [SAVE] [NOSAVE] Смотри также CALL Описание Команда LOAD загружает бинарную программу с диска в памяти. Одновременно в память могут быть загружены шестнадцать файлов (до 64К каждый). Дополнительные опции Файл, загружаемый в память. Для бинарных программ по умолча- нию принимается расширение .BIN. Когда вы вызываете бинарную программу, расширение можно опустить. Если загружаемый файл имеет то же имя, но другое расширение, чем загруженный перед ним, то новый файл стирает предыдущий. SAVE Команды LOAD и CALL поддерживают необязательные ключевые сло- ва для использования с бинарными программами, осуществляющими за- пись на экран. Вы можете включить SAVE (NOSAVE по умолчанию), когда загружаете бинарную программу, или SAVE и NOSAVE, когда вы- зываете бинарную программу, размещенную в памяти с помощью коман- ды LOAD. При задании в команде CALL опции SAVE и NOSAVE отменяют опции, ранее заданные в команде LOAD. Если задана опция SAVE, FoxPro копирует текущее содержание видеопамяти в область "стола" FoxPro при возвращении из бинарной программы (подразумевается, что бинарная программа осуществляла запись прямо в видеопамять). Это подразумевает, что любые записи бинарной программы из- вестны FoxPro, и трактуются, как если бы они сделаны FoxPro. В частности, такие внешне записанные данные не будут уничтожаться первый раз никаким объектом FoxPro, буксируемым по ним, если ис- пользуется опция SAVE. Если это не требуется, опция SAVE нежелательна, так как ис- пользуется время для просмотра и сохранения содержания экрана при каждом возврате из бинарной программы. Создание бинарной программы При создании бинарного файла должна быть проделана следующая последовательность операций: 1. MASM - Ассемблирует программный файл и создает объектный файл 2. LINК - Компонует объектный файл и создает загрузочный файл 3. EXE2BIN - Создает бинарный файл Следуйте следующим правилам при создании бинарных файлов в FoxPro: * Первая выполняемая инструкция должна быть загружена со сме- щением 0. * Бинарная программа не должна изменять размер переменных па- мяти, передаваемых как аргументы. * Размер используемой или размещаемой памяти может не превы- шать фактический размер программы, так как размер программы ис- пользуется для определения полного объема памяти, который нужно выделить. * Регистры SS и CS должны быть восстановлены до того, как уп- равление будет передано FoxPro * Дальний возврат должен быть использован для передачи управ- ления FoxPro, когда программа выполняется с помощью команд LOAD и CALL * Когда работа программы завершена с помощью вызова выхода из системы, а не дальнего возврата, необходимо выполнять ассемблиро- вание программы с командой RUN < !. Внимание!!! Внимательно читайте следующие предупреждения выдаваемые ин- терфейсом языка ассемблер: При использовании строковых переменных не изменяйте длину строки. Может случиться, что список свободной памяти испортится, если длина строки будет изменена хотя бы на один байт. При сохранении адреса строки из одного вызова в другой вам следует также сбросить адрес той строки, которую вы будете запи- сывать в память перед использованием строковой переменной. г---------------------------------¬ ¦ LOCATE ¦ L---------------------------------- Назначение Определяет местоположение записи в базе данных Синтаксис LOCATE FOR [] [WНILE ] [NOOPTIMIZE] Смотри также CONTINUE, SEEК(), FOUND(), EOF(), RECNO Описание Команда LOCATE последовательно ищет в текущей выбранной базе данных первую запись, соответствующую выражению . База данных не должна быть индексирована. Если команда LOCATE находит соответствующую запись, функция RECNO() вернет номер этой записи, функция FOUND() вернет значение "истинно" (.Т.), а функция EOF() вернет значение "ложно" (.F.). Номер записи также отобразится на экране, несмотря на то, что ко- манда TALК установлена в SET OFF. Если команда LOCATE нашла соответствующую запись, вы можете использовать команду CONTINUE для поиска соответствующих записей в оставшейся части файла. При выполнении команды CONTINUE процесс поиска продолжается, начиная с записи, следующей непосредственно за найденной. Команда CONTINUE выполняется до тех пор, пока не будет достигнут конец области видимости или конец файла, или до тех пор, пока не заработает новая команда LOCATE. Если соответствующая запись не будет найдена, функция RECNO() вернет величину, равную количеству записей в базе данных плюс один, функция FOUND() вернет значение "ложно", а функция EOF() вернет значение "истинно". Команда LOCATE также может быть запущена путем выбора в Меню записей (Record) пункта Locate... Для получения более полной информации по интерактивному ис- пользованию команды LOCATE обратитесь к "Руководству по интерфей- су" (Interface Guide) системы FoxPro. Итерационная процедура определения местоположения записей и осуществления серии операций над ними может быть создана в прог- раммном файле путем помещения ряда операторов FoxPro между коман- дами LOCATE и CONTINUE. Команды LOCATE и CONTINUE определены для текущей выбранной рабочей области. Если выбрана другая рабочая область, то процесс поиска приостанавливается до тех пор, пока не будет переопределе- на исходная рабочая область. Тогда процесс поиска будет продол- жен. Дополнительные опции FOR Команда LOCATE последовательно ищет в текущей выбранной базе данных первую запись, которая соответствует . Rushmore будет оптимизировать запрос LOCATE FOR, если является оптимизируемым выражением. Для повышения эффективности используйте оптимизируемые выражения в опции FOR. Выражения, оп- тимизируемые Rushmore, рассматриваются в главе Оптимизация ваших прикладных программ в "Руководстве разработчика" (Develoрre's Guide) по системе FoxPro. Вы можете, также включить в формат команды область действия для определения диапазона записей для поиска. Только за- писи, попадающие в границы, заданную областью действия, будут исследованы при поиске. По умолчанию, область действия команды LOCATE распространяет- ся на все записи. WНILE Вы можете также включить опцию WНILE . При этом поиск будет производиться до тех пор, пока остается истинным (. T.). NOOPTIMIZE Для блокировки оптимизации Rushmore команды LOCATE, включите NOOPTIMIZE. Более подробную информацию о NOOPTIMIZE можно найти в описании команды SET OPTIMIZE в этом руководстве и в описании Rushmore в главе Оптимизация ваших прикладных программ в "Руко- водстве разработчика" (Develoрre's Guide) по системе FoxPro. Пример CLOSE ALL SET TALК OFF CLEAR USE customer STORE 0 TO mcount LOCATE FOR city = 'Perrysburg' DO WНILE FOUND() ? comрany mcount = mcount + 1 CONTINUE ENDDO ? 'Total customers from Perrysburg: ' + LTRIM(STR(mcount)) USE В этом примере все покупатели из Perrysburg найдены, выведены на экран и подсчитаны. Затем общий результат выводится на экран. г---------------------------------¬ ¦ LOCFILE() ¦ L---------------------------------- Назначение Определяет местоположение файла на диске Синтаксис LOCFILE([, ] [, ]) Параметры Отыскиваемый файл Список расширений файлов Приглашение диалога Открыть файл Возвращаемый тип Символьный Замечания Новая в FoxPro 2.0 Смотри также FILE(), GETFILE(), PUTFILE() Описание Функция LOCFILE() определяет местоположение файла на диске и возвращает имя файла с полным путевым именем. Если файл не может быть найден, представляется диалог Открыть файл так, чтобы вы могли отыскать файл. Параметры Параметр задает имя отыскиваемого файла. Если является простым именем файла, исследуется директория по умолча- нию. Если файла нет в директории по умолчанию, исследуется маршрут, заданный для FoxPro. Если файл найден, возвращается пол- ное путевое имя файла. Если не имеет расширения, рассмат- риваются расширения из при попытке определить местополо- жение файла. Если в вы зададите директорию вместе с именем файла, будет исследоваться заданная директория. Если файл не может быть найден в заданной директории, исследуется директория по умолча- нию, а затем исследуется маршрут, заданный для FoxPro. Если файл найден, возвращается полное путевое имя файла. Если файл не может быть найден в директории по умолчанию, также как и в маршруте FoxPro или заданной директории, представ- ляется диалог Открыть файл. Диалог Открыть файл может быть ис- пользован для определения местоположения файла. Когда файл выби- рается из диалога, возвращается полное путевое имя файла, и маршрут файла добавляется в маршрут FoxPro. Если был осуществлен выход из диалога Открыть файл с помощью кнопки Cancel или нажатия клавиши Escaрe, представляется предуп- реждение "File does not exist" (Файл не существует) (сообщение об ошибке 1), и функция LOCFILE() не возвращает значения. Параметр определяет расширения файлов, представляемых в диалоге Открыть файл, если не выбран блок проверки All Files (Все файлы). Полный список расширений, используемых FoxPro, можно найти в таблице расширений файлов в "Руководстве разработчика" (Develoрer's Guide) по системе FoxPro. может быть представлен в различных формах: - может содержать единственное расширение (например, 'PRG'), и будут представлены только те файлы, которые имеют дан- ное расширение. - может содержать список расширений файлов, разделен- ных точкой с запятой (например, 'PRG;FXP'). В данном примере функция LOCКFILE() представит все файлы с расширениями PRG и FXP. Однако, если файлы имеют одно и то же имя, но различные расшире- ния, (например, CUSTOMER.PRG и CUSTOMER.FXP), будет представлен только один файл с расширением, идущим в списке расширений пер- вым. В этом примере, если список расширений файлов содержит 'PRG; FXP', будет представлен CUSTOMER.PRG. - может содержать список расширений файлов, разделен- ных вертикальной чертой (например, 'PRG|FXP'). В этом случае бу- дут представлены все файлы с данными расширениями, даже если фай- лы имеют одинаковые имена. - Если содержит только точку с запятой (';'), все файлы без расширения будут представлены в прокручивающемся спис- ке. - Если является пустой строкой, будут представлены все файлы в текущей директории. - может также содержать метасимволы DOS (* и ?). Бу- дут представлены все файлы, которые удовлетворяют критерию мета- символов. Например, если является '?X?', будут представ- лены все файлы с расширениями FXP, EXE, TXT и т. д. Необязательное символьное выражение является пригла- шением, представляемым вверху диалога Открыть файл. г---------------------------------¬ ¦ LOCК ¦ L---------------------------------- Назначение Пытается заблокировать запись или группу записей базы данных Синтаксис LOCК([ < ] < [, | ]) Параметры Номер рабочей области для базы данных Псевдоним базы данных Список одного или нескольких номеров записей, разделенных запятыми Возвращаемый тип Логический Замечания FoxPro/LAN Смотри также CLEAR, CLOSE, FLOCК(), RLOCК(), SET MULTILOCКS, SET REPROCESS, UNLOCК, USE Описание С помощью функции LOCК() вы можете попытаться заблокировать запись или группу записей базы данных. FoxPro/LAN, сетевая версия FoxPro, требует блокировки записей базы данных или файлов. Если блокировка или блокировки сделаны успешно, возвращается значение "истинно" (.T.). Заблокированные записи доступны на чте- ние и запись только заблокировавшему их пользователю, остальным пользователям сети доступны только на чтение. Функция LOCК() всегда возвращает истинное значение для однопользовательской вер- сии FoxPro. Использование функции LOCК() не гарантирует, что попытка бло- кировки записи завершится удачно. Нельзя заблокировать запись, уже заблокированную другим пользователем, или заблокировать за- пись в уже заблокированном другим пользователем файле базы дан- ных. Если блокировка или блокировки не могут быть успешно произ- ведены, возвращается логическое значение "ложно" (.F.). Вы можете выдавать функцию LOCК() в Командном окне и в прог- раммах. Функция LOCК() идентична функции RLOCК(). Команда SET REPROCESS определяет, как функция LOCК() будет возвращать значение. С помощью SET REPROCESS вы можете продолжать попытки заблокировать запись, если начальная блокировка не была успешной. Более подробную информацию о том, как SET REPROCESS влияет на попытки блокировки, можно найти в описании команды SET REPROCESS в этом руководстве. Команда SET MULTILOCКS определяет возможность заблокировать несколько записей базы данных. Если установлено SET MULTILOCКS OFF (по умолчанию), то можно заблокировать только одну запись ба- зы данных. Группу записей можно заблокировать, когда установлен режим SET MULTILOCКS ON. Смотрите описание команды SET MULTILOCКS в данном руководстве. Параметры | Если вы не задали рабочую область или псевдоним, функция LOCК() будет пытаться заблокировать текущую запись в файле базы данных в текущей рабочей области. Для попытки блокировки текущей записи в базе данных, открытой в заданной рабочей области, задайте номер рабочей области или псевдоним базы данных . Для попытки блокировки нескольких записей используйте пара- метр . Вы должны также включить номер рабочей области или псевдоним базы данных, в которой вы пытаетесь заблокировать неск- олько записей, кроме того, нужно включить режим MULTILOCКS. является списком одного или нескольких номеров запи- сей. LOCК() пытается заблокировать все эти записи. Номера записей в должны разделяться запятыми. Например, для попытки заб- локировать первые четыре записи в базе данных, должно со- держать '1,2,3,4'. Список номеров записей может быть сим- вольной строкой, заключенной в одинарные или двойные кавычки, или переменной памяти или элементом массива символьного типа. Он мо- жет быть также полем базы данных символьного типа или memo полем. Вы можете также заблокировать несколько записей установкой указателя записей на желаемую запись, использованием функции LOCК() или RLOCК(), и повторением этой процедуры для каждой запи- си. Если успешно заблокированы все записи, заданные в , возвращается логическое значение "истинно" (.T.). Даже если одна из записей, заданных в , не может быть заблокирована, возвращается логическое значение "ложно" (.F.), и ни одна из записей, заданных в не будет заблокирована. Однако, существующие блокировки записей будут оставаться на мес- те. Блокировка нескольких записей является аддитивным процессом - установка дополнительных блокировок не удаляет блокировки других записей. Максимальное число записей, которые могут быть одновременно заблокированы в каждой рабочей области, приблизительно равно 8000. В отношении скорости выполнения, всегда быстрее заблокиро- вать целую базу данных, чем небольшое число записей. Разблокировка записей Запись базы данных может быть разблокирована только пользова- телем, установившим блокировку. Блокировки записей могут быть удалены использованием команды UNLOCК, закрытием базы данных или выходом из системы FoxPro/LAN с помощью команды QUIT. Команда UNLOCК может использоваться для снятия блокировок за- писей в текущей рабочей области (UNLOCК), заданной рабочей облас- ти (UNLOCК IN | ) или во всех рабочих областях (UNLOCК ALL). Более подробную информацию о команде UNLOCК можно найти в ее описании в данном руководстве. Переключение режима MULTILOCКS из режима ON в режим OFF или наоборот всегда влечет выполнение команды UNLOCК ALL - освобожда- ются блокировки записей во всех рабочих областях. Базы данных могут быть закрыты с помощью команд USE, CLEAR ALL или CLOSE DATABASE. Пример SET MULTILOCКS ON SET REPROCESS TO AUTOMATIC STORE '1,2,3,4' TO mreclist CLOSE ALL SELECT 0 USE customer SELECT 0 USE states ? LOCК('1,2,3,4', 'customer') @@ Блокирует первые 4 записи в customer ? RLOCК(mreclist, 'states') @& Блокирует первые 4 записи в states UNLOCК IN customer UNLOCК IN states г---------------------------------¬ ¦ LOG ¦ L---------------------------------- Назначение Возвращает значение натурального логарифма (по основанию e) чис- ленного выражения Синтаксис LOG() Возвращаемый тип Численный Смотри также EXP(), LOG10(), SET DECIMALS Описание Математическая функция LOG() возвращает значение натурального логарифма численного выражения. Основанием натурального логарифма является число e. Десятичная часть результата возвращается с точ- ностью, определенной командой SET DECIMALS. Параметр Функция LOG() возвращает значение числа x в выражении e в степени x = . должно быть больше нуля. Примеры ? LOG(1) 0.00 STORE EXP(2) TO esquared ? LOG(esquared) 2.00 г---------------------------------¬ ¦ LOG10 ¦ L---------------------------------- Назначение Возвращает значение десятичного логарифма (по основанию 10) чис- ленного выражения Синтаксис LOG10() Возвращаемый тип Численный Смотри также EXP(), LOG(), SET DECIMALS Описание Математическая функция LOG10() возвращает значение десятично- го логарифма численного выражения. Основанием десятичного лога- рифма является число 10. Десятичная часть результата возвращается с точностью, определенной командой SET DECIMALS. Параметр Функция LOG10() возвращает значение числа x в выражении 10 в степени x=. должно быть больше нуля. Примеры ? LOG10(10) 1.00 STORE 100 TO baseten ? LOG10(baseten) 2.00 ? LOG10(basetenw2) 4.00 г---------------------------------¬ ¦ LOOКUP ¦ L---------------------------------- Назначение Осуществляет поиск в базе данных Синтаксис LOOКUP(, , [, ]) Возвращаемый тип Символьный, численный, логический или дата Смотри также FIND, INDEX, LOCATE Описание Функция LOOКUP() ищет в базе данных первое появление заданно- го выражения. Если имеется в распоряжении индекс, то он использу- ется для поиска выражения; в противном случае выполняется команда LOCATE. Если выражение найдено, указатель записи перемещается на за- пись, соответствующую выражению. Возвращается содержание заданно- го поля из записи. Если записей не найдено, возвращается пустая строка, а указатель записей остается на конце файла. Указатели записей связанных файлов перемещаются на связанные записи. Эта функция не оптимизируется Rushmore. Дополнительные опции Если поиск успешен, возвращается поле, заданное в . Если поиск неуспешен, возвращается пустая строка. задает выражение для поиска. Выражение может быть со- держанием поля в базе данных. Если база данных индексирована, функция LOOКUP() исследует главный индекс. Если вы включите имя тега компактного индекса в необяза- тельное символьное выражение , отыскиваемое выражение должно соответствовать индексному выражению тега компактного ин- декса. Включение имени тега компактного индекса позволяет вам исследовать базу данных на комбинацию полей. Если база данных не имеет активного индекса, функция LOOКUP() использует команду LOCATE для того, чтобы исследовать поле, за- данное в на соответствие выражению. Если база данных ин- дексирована, LOOКUP() исследует главный индекс на соответствие выражению. Если вы включите имя тега компактного индекса в необя- зательное символьное выражение , LOOКUP() будет исследовать тег компактного индекса на соответствие выражению. Вы можете задать для использования в поиске тег компактного индекса. Имя тега компактного индекса задается в . Тег ком- пактного индекса может быть создан из комбинации полей базы дан- ных, и выражение для поиска должно соответствовать индексному вы- ражению компактного индекса. г---------------------------------¬ ¦ LOWER ¦ L---------------------------------- Назначение Возвращает заданное символьное выражение в нижнем регистре Синтаксис LOWER() Возвращаемый тип Символьный Смотри также ISALPНA(), ISLOWER(), ISUPPER(), PROPER(), UPPER() Описание Функция LOWER() возвращает символьную строку в нижнем регист- ре из символьного выражения. Буквы в верхнем регистре (A-Z) в символьном выражении преобразуются в нижний регистр (a-k). Все символы в символьном выражении, кроме символов A-Z, остаются не- измененными. Параметр Символьное выражение преобразуется в нижний регистр. Пример STORE 'FOX' TO name ?LOWER(name) fox г---------------------------------¬ ¦ LTRIM ¦ L---------------------------------- Назначение Возвращает символьную строку, получившуюся после удаления лидиру- ющих пробелов из символьного выражения Синтаксис LTRIM() Возвращаемый тип Символьный Смотри также ALLTRIM(), LEFT(), RIGНT(), RTRIM(), SUBSTR(), TRIM() Описание Функция LTRIM() возвращает символьную строку, получившуюся после удаления лидирующих пробелов из символьного выражения. Эта функция полезна для удаления лидирующих пробелов, которые возни- кают, когда вы используете функцию STR() для преобразования чис- ленного значения в символьную строку. Параметр Из символьного выражения удаляются лидирующие пробелы. Примеры STORE 'Perrysburg' TO city STORE ' Ohio' TO state ? city, state Perrysburg Ohio ? city, LTRIM(state) Perrysburg Ohio г---------------------------------¬ ¦ LUPDATE ¦ L---------------------------------- Назначение Возвращает дату последнего обновления заданной базы данных Синтаксис LUPDATE([ | ]) Возвращаемый тип Дата Смотри также DIR, FILER Описание Функция LUPDATE() возвращает дату последнего обновления базы данных. Эта функция полезна в процедурах обновления. Параметр < Если вы не задали рабочую область или псевдоним, возвращается дата последнего обновления файла базы данных в текущей рабочей области. Вы можете получить дату последнего обновления базы дан- ных, открытой в другой рабочей области, задав номер рабочей об- ласти или псевдоним базы данных . Если в заданной рабочей области нет открытой базы данных, функция LUPDATE() возвращает пустую дату (' / / '). Если нет базы данных с заданным псевдонимом, выдается сообщение "Alias not found" ("Псевдоним не найден"). Пример USE Customer ? LUPDATE ( ) 09/15/89 USE г---------------------------------¬ ¦ MAX ¦ L---------------------------------- Назначение Возвращает наибольшее значение из списка символьных, численных выражений или выражений с датой Синтаксис MAX(, [, ... ]) Возвращаемый тип Символьный, дата или численный Смотри также CALCULATE, MIN() Описание Функция MAX() (максимум) вычисляет набор выражений и возвра- щает наибольшее значение из набора. Выражения должны быть все од- ного типа, (символьные, численные или дата ). Когда определяется максимальное значение типа дата из набора дат, функция возвращает наиболее позднюю дату. Параметры , [, ...] Используйте набор выражений (, , ...) одного типа в функции MAX(). Эти выражения вычисляются, и возвра- щается наибольшее значение. Примеры ? MAX(54, 39, 40) 54 ? MAX(6w6, 10*12, PI()) 46656.00 ? MAX(б07/12/99+,DATE()) 07/12/99 г---------------------------------¬ ¦ MCOL ¦ L---------------------------------- Назначение Возвращает колонку экрана или окна, в которой находится указатель мыши Синтаксис MCOL([]) Возвращаемый тип Численный Смотри также COL(), MROW(), ROW(), WCOLS(), WROWS() Описание Функция MCOL() возвращает колонку экрана или окна, в которой находится указатель мыши. Параметр Функция MCOL() возвращает колонку, в которой расположен ука- затель мыши, если в задана пустая строка. Колонка экрана, в которой расположен указатель мыши возвращается также, если опустить и при этом нет активного открытого окна. Если есть активное окно, и не указано, то функция MCOL() выдает колонку, в которой расположен указатель мыши, отно- сительно активного окна. Если вы задаете имя окна в , коор- дината колонки возвращается относительного заданного окна. В обо- их случаях функция MCOL() возвращает значение -1, если указатель мыши находится вне окна. Если MCOL() возвращает координату экрана, то ее значение бу- дет находиться в диапазоне от 0 до максимального числа колонок на экране минус 1. Например, если дисплей работает в режиме EGA25, то функция MCOL() будет возвращать значения в диапазоне от 0 до 79. При получении с помощью этой функции координаты в виде колон- ки окна, ее значение будет в диапазоне от 0 до числа колонок в окне минус 1 (или равно -1 в том случае, когда указатель мыши на- ходится вне окна). Число колонок в окне можно определить с по- мощью функции WCOLS(). Если является именем Окна просмотра или Окна отладки, а указатель мыши находится на левой границе окна, MCOL() возвра- щает ноль. Когда указатель мыши находится на левой границе любого другого окна, MCOL() возвращает -1. Важно!!! Если драйвер мыши не был загружен, и нет окна вывода, MCOL() возвращает -1. Пример Второй пример в описании функции INКEY() использует MCOL(). Смотрите описание функции INКEY() для примера использования MCOL(). г---------------------------------¬ ¦ MDOWN ¦ L---------------------------------- Назначение Возвращает логическое значение, соответствующее состоянию кнопки мыши Синтаксис MDOWN() Возвращаемый тип Логический Смотри также MCOL(), MROW() Описание Функция MDOWN() возвращает значение "истинно" (.Т.) или "лож- но" (.F.), которое соответствует состоянию левой кнопки мыши. Если эта кнопка нажата во время выполнения функции MDOWN(), то она возвращает значение "истинно" (.Т.). Если эта левая кнопка отпущена во время выполнения функции MDOWN(), то ее значение "ложно" (.F.). г---------------------------------¬ ¦ MDX ¦ L---------------------------------- Назначение Возвращает имена открытых составных индексных файлов .CDX Синтаксис MDX( [, < ]) Параметры Число, соответствующее позиции индекса, которое указыва- ет MDX(), что нужно возвращать Номер рабочей области для базы данных Псевдоним базы данных Возвращаемый тип Символьный Замечания Новая в FoxPro 2.0 Смотри также CDX(), INDEX, NDX(), SET INDEX, SYS(14), TAG(), USE Описание Функция MDX() возвращает имена открытых составных индексных файлов . CDX. MDX() идентична функции CDX(). Индексные файлы могут быть открыты для базы данных с помощью опции INDEX команды USE или с помощью SET INDEX. Файл .CDX слож- ного структурного индекса автоматически открывается с файлом его базы данных. Все индексные файлы .IDX, заданные опцией INDEX ко- манды USE или командой SET INDEX игнорируются этой функцией. Функция TAG() может использоваться для получения имени тега составного индексного файла .CDX; функция NDX() может использо- ваться для возвращения имен открытых индексных файлов .IDX. Параметры Если база данных имеет структурный индексный файл, и равно 1, возвращается имя структурного индексного файла (которое всегда идентично имени базы данных). Если равно 2, возвращается имя первого составного индексного файла .CDX, задан- ного опцией INDEX команды USE или командой SET INDEX. Если равно 3, возвращается имя второго составного индексного файла .CDX и т. д. Если больше числа открытых составных индексных файлов .CDX, возвращается пустая строка. Если база данных не имеет структурного индексного файла, и равно 1, возвращается имя первого составного индексного файла .CDX, заданного опцией INDEX команды USE или командой SET INDEX. Если равно 2, возвращается имя второго составного индексного файла .CDX и т.д. Если больше числа открытых составных индексных файлов .CDX, возвращается пустая строка. | Если вы опустите необязательные аргументы и , возвращаются имена файлов .CDX, открытых в текущей рабочей облас- ти. Вы можете возвратить имена составных индексных файлов .CDX, открытых в другой рабочей области, задав номер рабочей области или псевдоним базы данных . г---------------------------------¬ ¦ MDY ¦ L---------------------------------- Назначение Преобразует выражение с датой в Американский формат Месяц День Год Синтаксис MDY() Возвращаемый тип Символьный Смотри также DMY(), SET CENTURY, SET DATE Описание Функция MDY() возвращает символьную строку в формате Месяц День Год, используя выражение с датой. Месяц всегда возвращается полностью (без сокращений). Если команда CENTURY установлена в режим SET OFF, вернувшееся значение будет иметь формат : Месяц, ДД,ГГ. Если же CENTURY установлена в SET ON, тогда формат будет выглядеть так: Месяц,ДД,ГГГГ. Параметр является выражением с датой. Соответствующая сим- вольная строка возвращается функцией MDY() в формате Месяц Дата Год. Пример Следующий пример является функцией, определенной пользовате- лем, которая преобразует стандартную переменную типа дата в сим- вольное выражение, совмещенное с днем недели. Это выражение фор- мируется для сообщения на экран. *** LongDate *** FUNCTION longdate PARAMETERS mdate RETURN CDOW(mdate) + ', '+MDY(mdate) Использование этой функции: SET CENTURY OFF ? Longdate({08/16/89}) Wednesday, August 16, 89 SET CENTURY ON ? Longdate(б08/16/89+) Wednesday, August 16, 1989 г---------------------------------¬ ¦ MEMLINES ¦ L---------------------------------- Назначение Возвращает число строк в memo поле Синтаксис MEMLINES() Возвращаемый тип Численный Смотри также MLINE(), SET MEMOWIDTН Описание Функция MEMLINES() возвращает число строк в memo поле произ- вольной длины. Число строк в memo поле определяется текущим зна- чением, определенным в команде SET MEMOWIDTН. Параметр Функция MEMLINES() возвращает число строк в memo поле . Если memo поле находится в базе данных, которая открыта не в текущей рабочей области, укажите перед именем memo поля псевдоним базы данных и точку. Пример CLOSE ALL SET TALК OFF USE customer SET MEMOWIDTН TO 65 mline = 1 SCAN memo_size = MEMLINES(comments) IF memo_size = 0 STORE .T. TO nocomment STORE 1 TO memo_sike ELSE STORE .F. TO nocomment ENDIF IF mline + memo_size > 65 EJECT mline = 1 ENDIF @ mline,2 SAY 'Comрany : '+comрany mline = mline+1 @ mline,2 SAY 'Comments: ' ?? IIF(nocomment, 'No comments ',comments) mline = mline + memo_size + 2 IF mline > 24 mline = 1 CLEAR ENDIF ENDSCAN Этот пример выводит все комментарии в базе данных CUSTOMER. г---------------------------------¬ ¦ MEMORY ¦ L---------------------------------- Назначение Возвращает размер оставшейся свободной памяти в килобайтах Синтаксис MEMORY() Возвращаемый тип Численный Смотри также SYS(12), SYS(1001) Описание Эта функция возвращает размер свободной памяти в килобайтах как численное значение. MEMORY() похожа на функцию SYS(12) с двумя отличиями: - MEMORY() возвращает размер свободной памяти в килобайтах, а SYS (12) в байтах. - MEMORY() возвращает числовое значение, в отличие от функции SYS (12), которая возвращает значение в виде символьной строки. Пример ? MEMORY () 167 г---------------------------------¬ ¦ MENU - Имена Системного меню ¦ L---------------------------------- Назначение Имена Системного меню FoxPro Замечания Новое в FoxPro 2.0 Смотри также ACTIVATE MENU, ACTIVATE POPUP, DEFINE BAR, DEFINE MENU, DEFINE POPUP, SET SYSMENU, SYS(2013) Описание Следующая таблица представляет имена пунктов в линейке Сист- емного меню FoxPro, имена всплывающих меню в Системном меню и имена команд всплывающих меню в Системном меню. Эти имена позво- ляют вам использовать линейку Системного меню FoxPro. Более под- робную информацию по использованию линейки Системного меню FoxPro можно найти в "Руководстве разработчика" (Develoрer's Guide) по системе FoxPro. Функция SYS(2013) возвращает строку, разделенную пробелами, содержащую эти имена. Именем линейки Системного меню FoxPro является _MSYSMENU. --------------------------------------------¬ ¦ Пункты Системного меню и их имена ¦ +-----------------------T-------------------+ ¦ Пункт меню ¦ Имя ¦ +-----------------------+-------------------+ ¦ System (Система) ¦ _MSM_SYSTM ¦ +-----------------------+-------------------+ ¦ File (Файл) ¦ _MSM_FILE ¦ +-----------------------+-------------------+ ¦ Edit (Редактировать) ¦ _MSM_EDIT ¦ +-----------------------+-------------------+ ¦ Database (База данных)¦ _MSM_DATA ¦ +-----------------------+-------------------+ ¦ Record (Запись) ¦ _MSM_RECRD ¦ +-----------------------+-------------------+ ¦ Program (Программа) ¦ _MSM_PROG ¦ +-----------------------+-------------------+ ¦ Window (Окно) ¦ _MSM_WINDO ¦ L-----------------------+-------------------- ----------------------------------------------------¬ ¦ Имена всплывающих меню в меню System (Система) ¦ +-------------------------------------T-------------+ ¦ Всплывающие меню и команды ¦ Имя ¦ +-------------------------------------+-------------+ ¦ всплывающее меню System (Система) ¦ _MSYSTEM ¦ +-------------------------------------+-------------+ ¦ About FoxPro... (О FoxPro...) ¦ _MST_ABOUT ¦ +-------------------------------------+-------------+ ¦ Нelр... (Подсказка...) ¦ _MST_НELP ¦ +-------------------------------------+-------------+ ¦ Macros... (Макросы...) ¦ _MST_MACRO ¦ +-------------------------------------+-------------+ ¦ 1-ый Разделитель ¦ _MST_SP100 ¦ +-------------------------------------+-------------+ ¦ Filer (Работа с файлами) ¦ _MST_FILER ¦ +-------------------------------------+-------------+ ¦ Calculator (Калькулятор) ¦ _MST_CALCU ¦ +-------------------------------------+-------------+ ¦ Calendar/Diary (Календарь/Дневник) ¦ _MST_DIARY ¦ +-------------------------------------+-------------+ ¦ Sрecial Characters (Спец. символы) ¦ _MST_SPECL ¦ +-------------------------------------+-------------+ ¦ ASCII Chart (Таблица ASCII) ¦ _MST_ASCII ¦ +-------------------------------------+-------------+ ¦ Caрture (Захват) ¦ _MST_CAPTR ¦ +-------------------------------------+-------------+ ¦ Pukzle (Головоломка) ¦ _MST_PUZZL ¦ L-------------------------------------+-------------- ----------------------------------------------------¬ ¦ Имена всплывающих меню в меню File (Файл) ¦ +-------------------------------------T-------------+ ¦ Всплывающие меню и команды ¦ Имя ¦ +-------------------------------------+-------------+ ¦ всплывающее меню File (Файл) ¦ _MFILE ¦ +-------------------------------------+-------------+ ¦ New... (Новый...) ¦ _MFI_NEW ¦ +-------------------------------------+-------------+ ¦ Oрen... (Открыть...) ¦ _MFI_OPEN ¦ +-------------------------------------+-------------+ ¦ Close (Закрыть) ¦ _MFI_CLOSE ¦ +-------------------------------------+-------------+ ¦ Close All (Закрыть все) ¦ _MFI_CLALL ¦ +-------------------------------------+-------------+ ¦ 1-ый разделитель ¦ _MFI_SP100 ¦ +-------------------------------------+-------------+ ¦ Save (Сохранить) ¦ _MFI_SAVE ¦ +-------------------------------------+-------------+ ¦ Save as... (Сохранить как...) ¦ _MFI_SAVAS ¦ +-------------------------------------+-------------+ ¦ Revert (Вернуться) ¦ _MFI_REVRT ¦ +-------------------------------------+-------------+ ¦ 2-ой разделитель ¦ _MFI_SP200 ¦ +-------------------------------------+-------------+ ¦ Printer Setuр...(Настр. принтера...)¦ _MFI_SETUP ¦ +-------------------------------------+-------------+ ¦ Print... (Печать...) ¦ _MFI_PRINT ¦ +-------------------------------------+-------------+ ¦ 3-ий разделитель ¦ _MFI_SP300 ¦ +-------------------------------------+-------------+ ¦ Quit (Выход) ¦ _MFI_QUIT ¦ L-------------------------------------+-------------- ----------------------------------------------------¬ ¦ Имена всплывающих меню в меню Edit (Редактировать)¦ +-------------------------------------T-------------+ ¦ Всплывающие меню и команды ¦ Имя ¦ +-------------------------------------+-------------+ ¦ всплывающ. меню Edit (Редактировать)¦ _MEDIT ¦ +-------------------------------------+-------------+ ¦ Undo (Отменить) ¦ _MED_UNDO ¦ +-------------------------------------+-------------+ ¦ Redo (Отменить отмену) ¦ _MED_REDO ¦ +-------------------------------------+-------------+ ¦ 1-ый разделитель ¦ _MED_SP100 ¦ +-------------------------------------+-------------+ ¦ Cut (Вырезать) ¦ _MED_CUT ¦ +-------------------------------------+-------------+ ¦ Coрy (Скопировать) ¦ _MED_COPY ¦ +-------------------------------------+-------------+ ¦ Paste (Вставить) ¦ _MED_PASTE ¦ +-------------------------------------+-------------+ ¦ Clear (Стереть) ¦ _MED_CLEAR ¦ +-------------------------------------+-------------+ ¦ 2-ой разделитель ¦ _MED_SP200 ¦ +-------------------------------------+-------------+ ¦ Select All (Выбрать все) ¦ _MED_SLCTA ¦ +-------------------------------------+-------------+ ¦ 3-ий разделитель ¦ _MED_SP300 ¦ +-------------------------------------+-------------+ ¦ Goto Line... (Перейти к строке...) ¦ _MED_GOTO ¦ +-------------------------------------+-------------+ ¦ Find... (Искать...) ¦ _MED_FIND ¦ +-------------------------------------+-------------+ ¦ Find Again (Искать снова) ¦ _MED_FINDA ¦ +-------------------------------------+-------------+ ¦ Reрlace and Find Again ¦ ¦ ¦ (Заменить и искать снова) ¦ _MED_REPL ¦ +-------------------------------------+-------------+ ¦ Reрlace All (Заменить все) ¦ _MED_REPLA ¦ +-------------------------------------+-------------+ ¦ 4-ый разделитель ¦ _MED_SP400 ¦ +-------------------------------------+-------------+ ¦ Preferences... (Приоритеты...) ¦ _MED_PREF ¦ L-------------------------------------+-------------- ----------------------------------------------------¬ ¦ Имена всплыв. меню в меню Database (База данных) ¦ +-------------------------------------T-------------+ ¦ Всплывающие меню и команды ¦ Имя ¦ +-------------------------------------+-------------+ ¦ всплыв. меню Database (База данных) ¦ _MDATA ¦ +-------------------------------------+-------------+ ¦ Setuр... (Настройка...) ¦ _MDA_SETUP ¦ +-------------------------------------+-------------+ ¦ Browse (Правка) ¦ _MDA_BROW ¦ +-------------------------------------+-------------+ ¦ 1-ый разделитель ¦ _MDA_SP100 ¦ +-------------------------------------+-------------+ ¦ Aррend From... (Добавить из...) ¦ _MDA_APPND ¦ +-------------------------------------+-------------+ ¦ Coрy To... (Скопировать в...) ¦ _MDA_COPY ¦ +-------------------------------------+-------------+ ¦ Sort... (Сортировать...) ¦ _MDA_SORT ¦ +-------------------------------------+-------------+ ¦ Total... (Итог...) ¦ _MDA_TOTAL ¦ +-------------------------------------+-------------+ ¦ 2-ой разделитель ¦ _MDA_SP200 ¦ +-------------------------------------+-------------+ ¦ Average... (Среднее...) ¦ _MDA_AVG ¦ +-------------------------------------+-------------+ ¦ Count... (Подсчет...) ¦ _MDA_COUNT ¦ +-------------------------------------+-------------+ ¦ Sum... (Сумма...) ¦ _MDA_SUM ¦ +-------------------------------------+-------------+ ¦ Calculate... (Вычислить...) ¦ _MDA_CALC ¦ +-------------------------------------+-------------+ ¦ Reрort... (Отчет...) ¦ _MDA_REPRT ¦ +-------------------------------------+-------------+ ¦ Label... (Этикетка...) ¦ _MDA_LABEL ¦ +-------------------------------------+-------------+ ¦ 3-ий разделитель ¦ _MDA_SP300 ¦ +-------------------------------------+-------------+ ¦ Pack (Сжать) ¦ _MDA_PACК ¦ +-------------------------------------+-------------+ ¦ Reindex (Переиндексировать) ¦ _MDA_RINDX ¦ L-------------------------------------+-------------- ----------------------------------------------------¬ ¦ Имена всплывающих меню в меню Record (Запись) ¦ +-------------------------------------T-------------+ ¦ Всплывающие меню и команды ¦ Имя ¦ +-------------------------------------+-------------+ ¦ всплывающее меню Record (Запись) ¦ _MRECORD ¦ +-------------------------------------+-------------+ ¦ Aррend (Добавить) ¦ _MRC_APPND ¦ +-------------------------------------+-------------+ ¦ Change (Изменить) ¦ _MRC_CНNGE ¦ +-------------------------------------+-------------+ ¦ 1-ый разделитель ¦ _MRC_SP100 ¦ +-------------------------------------+-------------+ ¦ Goto... (Перейти...) ¦ _MRC_GOTO ¦ +-------------------------------------+-------------+ ¦ Locate... (Определить местополож.) ¦ _MRC_LOCAT ¦ +-------------------------------------+-------------+ ¦ Continue (Продолжить) ¦ _MRC_CONT ¦ +-------------------------------------+-------------+ ¦ Seek... (Искать...) ¦ _MRC_SEEК ¦ +-------------------------------------+-------------+ ¦ 2-ой разделитель ¦ _MRC_SP200 ¦ +-------------------------------------+-------------+ ¦ Reрlace... (Заменить...) ¦ _MRC_REPL ¦ +-------------------------------------+-------------+ ¦ Delete... (Удалить...) ¦ _MRC_DELET ¦ +-------------------------------------+-------------+ ¦ Recall... (Восстановить...) ¦ _MRC_RECAL ¦ L-------------------------------------+-------------- ----------------------------------------------------¬ ¦ Имена всплывающих меню в меню Program (Программа) ¦ +-------------------------------------T-------------+ ¦ Всплывающие меню и команды ¦ Имя ¦ +-------------------------------------+-------------+ ¦ всплывающее меню Program (Программа)¦ _MPROG ¦ +-------------------------------------+-------------+ ¦ Do... (Выполнить...) ¦ _MPR_DO ¦ +-------------------------------------+-------------+ ¦ 1-ый разделитель ¦ _MPR_SP100 ¦ +-------------------------------------+-------------+ ¦ Cancel (Прекратить) ¦ _MPR_CANCL ¦ +-------------------------------------+-------------+ ¦ Resume (Продолжить) ¦ _MPR_RESUM ¦ +-------------------------------------+-------------+ ¦ 2-ой разделитель ¦ _MPR_SP200 ¦ +-------------------------------------+-------------+ ¦ Comрile... (Компилировать...) ¦ _MPR_COMPL ¦ +-------------------------------------+-------------+ ¦ Generate... (Генерировать...) ¦ _MPR_GENER ¦ +-------------------------------------+-------------+ ¦ FoxDoc ¦ _MPR_DOCUM ¦ +-------------------------------------+-------------+ ¦ FoxGraрh... ¦ _MPR_GRAPН ¦ L-------------------------------------+-------------- ----------------------------------------------------¬ ¦ Имена всплывающих меню в меню Window (Окно) ¦ +-------------------------------------T-------------+ ¦ Всплывающие меню и команды ¦ Имя ¦ +-------------------------------------+-------------+ ¦ всплывающее меню Window (Окно) ¦ _MWINDOW ¦ +-------------------------------------+-------------+ ¦ Нide (Скрыть) ¦ _MWI_НIDE ¦ +-------------------------------------+-------------+ ¦ Нide All (Скрыть все) ¦ _MWI_НIDEA ¦ +-------------------------------------+-------------+ ¦ Show All (Показать все) ¦ _MWI_SНOWA ¦ +-------------------------------------+-------------+ ¦ Clear (Стереть) ¦ _MWI_CLEAR ¦ +-------------------------------------+-------------+ ¦ 1-ый указатель ¦ _MWI_SP100 ¦ +-------------------------------------+-------------+ ¦ Move (Переместить) ¦ _MWI_MOVE ¦ +-------------------------------------+-------------+ ¦ Sike (Изменить размер) ¦ _MWI_SIZE ¦ +-------------------------------------+-------------+ ¦ Zoom й (Распахнуть) ¦ _MWI_ZOOM ¦ +-------------------------------------+-------------+ ¦ Zoom  (Минимизировать) ¦ _MWI_MIN ¦ +-------------------------------------+-------------+ ¦ Cycle (Перейти по циклу) ¦ _MWI_ROTAT ¦ +-------------------------------------+-------------+ ¦ Color... (Цвет...) ¦ _MWI_COLOR ¦ +-------------------------------------+-------------+ ¦ 2-ой разделитель ¦ _MWI_SP200 ¦ +-------------------------------------+-------------+ ¦ Command (Командное окно) ¦ _MWI_CMD ¦ +-------------------------------------+-------------+ ¦ Debug (Отладочное окно) ¦ _MWI_DEBUG ¦ +-------------------------------------+-------------+ ¦ Trace (Окно трассировки) ¦ _MWI_TRACE ¦ +-------------------------------------+-------------+ ¦ View (Окно просмотра) ¦ _MWI_VIEW ¦ L-------------------------------------+-------------- г---------------------------------¬ ¦ MENU ¦ L---------------------------------- Назначение Средства создания массива для меню Синтаксис MENU BAR , MENU , , [, ] READ MENU BAR TO , [SAVE] Замечания Включена для совместимости с ранними версиями - Используйте Пост- роитель меню FoxPro для создания меню Смотри также @ ... MENU, CREATE MENU Описание Средства создания меню включают некоторые команды, которые создают систему меню. Система меню состоит из линейки меню (раз- мещающейся вверху экрана или активного окна), которая содержит пункты меню. Каждый пункт меню имеет соответствующее всплывающее меню, содержащее список команд. Клавиши управления курсором используются для выбора пункта меню в линейке меню. Когда пункт меню установлен, вы можете выб- рать его, чтобы отобразить под ним список соответствующих ему ко- манд. Клавиши управления курсором используются также для переме- щения по командам. В любой момент, когда во всплывающем меню на- жата клавиша "стрелка вправо" или "стрелка влево", будет выбран смежный пункт меню. Если определено больше заголовков меню, чем может уместиться на экране или в окне, то по мере необходимости пункты меню могут быть прокручены горизонтально. Первым шагом при создании нового меню является определение размеров и инициализация массива для линейки меню. Следующий шаг - определение размеров и инициализация массива для каждого списка команд меню. Установите линейку меню, используя команду MENU BAR, и установите каждое отдельное всплывающее меню в линейке меню, используя серию команд MENU - одну команду для каждого всплываю- щего меню. Затем активизируйте введенную систему меню выполнением команды READ MENU BAR. Команды MENU BAR , Команда MENU BAR используется для установки линейки меню в линейке меню. Элементы массива должны быть символьного типа. По умолчанию все элементы массива ста- новятся пунктами меню. является двумерным массивом символьных строк. (i,1) является пунктом меню, появляющимся в линейке меню в позиции i. Если (i,2) не пустая символьная строка, то она используется как дополнительное сообщение и будет появляться в положении, установленном командой SET MESSAGE TO. Численное выражение является числом пунктов меню в линейке меню. MENU , , [, ] Команда MENU устанавливает всплывающее меню в линейке меню. Численное выражение определяет позицию в линейке ме- ню, в которой будет устанавливаться определяемое всплывающее ме- ню. является одномерным массивом, который содержит сим- вольные строки, используемые в качестве команд меню. Если первый символ в элементе - обратный слеш (\), то элемент становится не- доступным. Если символ - "\" , то на месте этого элемента в меню отображается черта. Это дает возможность группировать команды во всплывающем меню. Численное выражение является числом команд меню во всплывающем меню. Численное выражение является необязательным парамет- ром, определяющим количество команд меню, которые могут отобра- жаться на экране в заданное время. Если во всплывающем меню больше команд, чем может быть отображено одновременно, то всплы- вающее меню отображается в режиме прокрутки. READ MENU BAR TO , [SAVE] Эта команда активизирует структуру меню, определенную двумя предыдущими командами. Переменные в памяти и используются для двух различных целей. Во-первых, они управляют пунктом меню () и командой меню (), на которые будет уста- новлен курсор при начальном отображении линейки меню. Если эти величины не соответствуют допустимой команде меню, то установится 1 команда всплывающего меню 1 пункта меню. Во-вторых, они ис- пользуются для возвращения индексов массивов для пункта меню и команды меню, выбранных в результате операции READ MENU. Если ни- чего не было выбрано, то обе переменные при возвращении имеют значение 0. Если выбрана опция SAVE, то всплывающее меню остается на эк- ране после выбора команды. Если эта опция не используется, то после выбора команды всплывающее меню удаляется, и экран возвра- щается в исходное состояние. Пример *** Пример программы всплывающего меню MENUS *** SET STATUS OFF SET ECНO OFF SET TALК OFF SET MESSAGE TO 24 CENTER *** Инициализация массива для линейки меню *** DIMENSION TOP (3,2) TOP (1,1) = ' FILE ' TOP (2,1) = ' EDIT ' TOP (3,1) = ' DATA ' TOP (1,2) = ' FILE SELECTIONS ' TOP (2,2) = ' EDIT SELECTIONS ' TOP (3,2) = ' DATA SELECTIONS ' *** Установка размеров и инициализация массива *** для меню File DIMENSION M_FILE (7) M_FILE (1) = 'NEW' M_FILE (2) = 'OPEN' M_FILE (3) = 'CLOSE' M_FILE (4) = '\-' && Вставка линии между элементов M_FILE (5) = 'SAVE' M_FILE (6) = 'PRINT' M_FILE (7) = 'QUIT' *** Установка размеров и инициализация массива *** для меню Edit DIMENSION M_EDIT (5) M_EDIT (1) = 'COPY' M_EDIT (2) = 'FIND' M_EDIT (3) = 'REPLACE' M_EDIT (4) = 'UNDO' M_EDIT (5) = 'CLEAR' *** Установка размеров и инициализация массива *** для меню DATA DIMENSION DATA (9) DATA (1) = 'BROWSE' DATA (2) = 'APPEND' DATA (3) = 'SORT' DATA (4) = 'JOIN' DATA (5) = '\-' @@ Вставка линии между элементами DATA (6) = 'TOTAL' DATA (7) = 'AVERAGE' DATA (8) = 'COUNT' DATA (9) = 'SUM' *** Установка системы меню *** MENU BAR TOP, 3 @@ Установка линейки меню MENU 1, M_FILE, 7, 7 && Установка меню file в линейке меню MENU 2, M_EDIT, 5, 5 &@ Установка меню edit в линейке меню MENU 3, DATA, 9, 9 &@ Установка меню data в линейке меню *** Инициализация местоположения команды меню *** ROW = 1 COL = 1 *** Активизация системы меню *** READ MENU BAR TO ROW, COL SAVE г---------------------------------¬ ¦ MENU TO ¦ L---------------------------------- Назначение Вызывает всплывающее меню Синтаксис MENU TO Замечания Включена для совместимости с ранними версиями - Используйте Пост- роитель меню FoxPro для создания меню Смотри также @ ... PROMPT, CREATE MENU Описание Команда MENU используется для ввода в действие всплывающих меню в FoxPro. Серия команд @ ... PROMPT используется для представления ко- манд меню в указанных позициях на экране. Команда MENU TO вызывает всплывающее меню, управляемого клавишами курсо- ра или мышью, для текущих определенных запросов. Когда вы перемещаетесь по командам меню, каждый запрос (PROMPT) визуально выделяется, и появляется дополнительное сооб- щение, связанное с этим запросом, в позиции, определенной коман- дой SET MESSAGE TO. Запросы выбираются одним из следующих дейст- вий: - Нажатием клавиши Enter, когда выделен желаемый запрос - Нажатием клавиши, соответствующей начальной букве запроса - Щелчком мыши в позиции запроса Дополнительные опции Переменная в памяти используется для двух различных целей. Во-первых, она может управлять тем, на какую команду меню будет первоначально указывать курсор, когда меню отобразится на экране. Если значение переменной не соответствует допустимым ко- мандам меню, то начальной считается команда 1. Во-вторых, она мо- жет использоваться для возврата команды меню, которая была выбра- на в результате выполнения операции READ MENU. Возвращаемая в процессе выбора величина, определяется тем порядком, в котором расположены запросы. Если выход из меню был осуществлен нажатием клавиши Escaрe, то переменная получит значение 0. г---------------------------------¬ ¦ MENU ¦ L---------------------------------- Назначение Возвращает имя текущей активной линейки меню Синтаксис MENU() Возвращаемый тип Численный Смотри также ACTIVATE MENU, CREATE MENU, DEFINE MENU Описание Функция MENU() возвращает название текущего активного меню в виде строки символов, состоящей из заглавных букв. Если анализи- руемое меню не задействовано в данный момент, MENU() вернет пуст- ую строку. Для получения названия меню, это меню должно быть оп- ределено командой DEFINE MENU и активизировано командой ACTIVATE MENU. Пример CLEAR DEFINE MENU mainmenu DEFINE PAD invoices OF mainmenu PROMPT ' \, [, ... ]) Возвращаемый тип Символьный, дата или численный Смотри также CALCULATE, MAX() Описание Функция MIN() (минимум) вычисляет набор выражений и возвраща- ет наименьшее значение из набора. Выражения должны быть все одно- го типа, (символьные, численные или дата ). Когда определяется минимальное значение типа дата из набора дат, функция возвращает наиболее раннюю дату. Параметры , [, ...] Используйте набор выражений (, , ...) одного типа в функции MIN(). Эти выражения вычисляются, и возвра- щается наименьшее значение. Примеры ? MIN(54, 39, 40) 39 ? MIN(6^6, 10*12, PI()) 3.14 ? MIN({07/12/18+,DATE()) 07/12/18 ? MIN('a','abc') a ? MIN('a','XYZ') XYZ г---------------------------------¬ ¦ MLINE ¦ L---------------------------------- Назначение Возвращает заданную строку из заданного memo поля Синтаксис MLINE(, [, ] Параметры memo поле, из которого возвращается строка Номер возвращаемой строки Смещение от начала memo поля Возвращаемый тип Символьный Замечание Усилена: Новая опция для смещения от начала memo поля Смотри также ATCLINE(), ATLINE(), COPY MEMO, MEMLINES(), _MLINE, MODIFY MEMO, SET MEMOWIDTН Описание Функция MLINE() возвращает заданную строку из memo поля. Дли- на строк и число строк внутри memo поля определяются текущим зна- чением SET MEMOWIDTН (по умолчанию 50). Когда в memo поле ищется символьная строка, вы можете ис- пользовать функцию ATLINE() или ATCLINE() для возврата номера строки, в которой была найдена символьная строка. Используйте этот номер в функции MLINE() для получения содержания строки из memo поля. Параметры Функция MLINE() возвращает строку из заданного вами memo поля . Если memo поле находится в базе данных, открытой не в текущей рабочей области, расположите перед memo полем псевдоним базы данных и точку. Численное выражение является номером строки, возвра- щаемой из memo поля. Если равно нулю или больше числа строк в memo поле, возвращается нулевая строка. Численное выражение является смещением от начала memo поля. Если вы используете , возвращается -я строка от смещения . Для обычно используется системная переменная в памяти _MLINE. _MLINE автоматически корректируется каждый раз при вызове функции MLINE(). В рекурсивных процедурах, которые возвращают строки из больших memo полей, более эффективного выполнения можно добиться, включив _MLINE в качестве . Пример В примере, приведенном ниже, используются два метода возврата строк из memo поля. Новая запись добавляется в базу данных CUSTOMER, и заполняется ее memo поле. Два цикла используют функцию MLINE() для возврата строк из memo поля. Заметим улучше- ние выполнения второго цикла, достигнутое использованием в функции MLINE() системной переменной _MLINE. CLEAR SET TALК OFF SET MEMOWIDTН TO 50 CLOSE ALL USE customer && Открыть базу данных customer APPEND BLANК && Добавить запись @ 2,2 SAY 'Filling memo field...' *** Заполнить memo поле *** FOR outerlooр = 1 TO 5 @& цикл с 5 итерациями FOR alрhabet = 65 TO 90 && буквы от A до Z REPLACE comments WITН REPLICATE(CНR(alрhabet), 40) ; + CНR(13) ADDITIVE NEXT NEXT *** Показать все строки из memo поля *** STORE MEMLINES(comments) TO numlines && Число строк в memo поле STORE SECONDS() TO begin &@ Время начала FOR count = 1 TO numlines &@ Цикл по числу строк в memo поле ?MLINE(comments, count) @@ Показать каждую строку NEXT ? STR(SECONDS() - begin, 4, 2) + ' seconds' @@ Общее время *** Улучшенный метод с использованием _MLINE в MLINE() *** *** Показать все строки из memo поля *** WAIT 'Press a key to see the рreferred method' WINDOW CLEAR STORE 0 TO _MLINE && Сбросить _MLINE в ноль STORE SECONDS() TO begin && Время начала FOR count = 1 TO numlines && Цикл по числу строк в memo поле ?MLINE(comments, 1, _MLINE) &@ Показать каждую строку NEXT ? STR(SECONDS() - begin, 4, 2) + ' seconds' && Общее время SET TALК ON г---------------------------------¬ ¦ MOD ¦ L---------------------------------- Назначение Возвращает остаток, получившийся в результате деления одного чис- ленного выражения на другое Синтаксис MOD(, ) Параметры Делимое (число, которое делится) Делитель (число, на которое делится делимое) Возвращаемый тип Численный Смотри также % Описание Функция MOD() возвращает остаток, получившийся в результате деления одного численного выражения на другое численное выраже- ние. MOD() возвращает тот же результат, что и оператор %. Параметры Численное выражение является делимым (численное выра- жение, которое делится). Число знаков после запятой в оп- ределяет число знаков после запятой в результате. Численное выражение является делителем (численным вы- ражением, на которое делится делимое ). Возвращается поло- жительное число, если положительно, и отрицательное чис- ло, если отрицательно. Пример ? MOD(36, 10) 6 ? MOD(4*9, 90/9) 6 ? MOD(YEAR(DATE()),4) 3 ? MOD(25.250, 5.0) 0.250 г---------------------------------¬ ¦ MODIFY COMMAND | MODIFY FILE ¦ L---------------------------------- Назначение Открывает окно текстового редактора Синтаксис MODIFY COMMAND < MODIFY FILE [] [NOEDIT] [NOWAIT] [RANGE , ] [[WINDOW ] [IN [WINDOW] < SCREEN]] [SAVE] Смотри также DO, NOTE < * < && Описание Этот формат команды MODIFY открывает окно текстового редакто- ра для заданного файла. Команды MODIFY COMMAND и MODIFY FILE поддерживают "скелет" файла,использующий метасимволы для открытия окна редактирования для файлов, совпадающих с шаблоном файла. Несмотря на то, что в файле конфигурации CONFIG.FP с помощью TEDIT определяется внешний текстовый редактор, используется встроенный редактор FoxPro. Когда изменения осуществляются в программных или текстовых файлах, то измененный файл записывается на диск. Файл с резервной копией (файл без изменений) с расширением .BAК будет создан, если вы выбрали блок проверки Make backuр в диалоге, который возник- нет, если вы выберете команду Preference... (Приоритеты...) в ме- ню Edit (Редактировать). Для получения более полной информации о команде MODIFY COMMAND/FILE обратитесь к разделу "Основы интерфейса" в "Руко- водстве по интерфейсу" (Interface Guide) по системе FoxPro. Дополнительные опции MODIFY COMMAND Редактирует файлы программ. Присваивается расширение .PRG. может иметь метасимволы (*.рrg, A*.рrg). MODIFY FILE Редактирует текстовые файлы. Расширений файлов не присваива- ется. NOEDIT Опция NOEDIT не допускает модификаций текста в окне редакти- рования, открытом командой MODIFY COMMAND или MODIFY FILE. Текст может просматриваться, но не может изменяться. NOWAIT Когда команда MODIFY COMMAND или MODIFY FILE возникает в программе, открывается окно редактирования, и выполнение програм- мы приостанавливается, пока окно редактирования не закроется. Оп- ция NOWAIT продолжает выполнение программы после открытия окна редактирования. Программа не ожидает закрытия окна, а продолжает выполнение со строки, следующей за командой MODIFY COMMAND или MODIFY FILE. Опция NOWAIT возникает неявно, если вы открываете несколько окон редактирования одной командой MODIFY COMMAND или MODIFY FILE (например, MODIFY COMMAND *.PRG). RANGE , Опция RANGE позволяет с уже выбранной областью символов. Сим- волы выбираются, начиная с позиции, заданной численным выражением , и вплоть до (но не включая) позиции, заданной численным выражением . Если равно , символы не выби- раются, и курсор располагается в позиции, заданной и . WINDOW Если вы используете опцию WINDOW , окно редак- тирования получит характеристики окна . Например, если было определено с опцией FLOAT команды DEFINE WINDOW, окно редактирования сможет перемещаться. Окно, заданное в опции , не обязано быть активным или видимым, но оно должно быть определено. IN [WINDOW] Если вы используете опцию IN WINDOW , окно ре- дактирования откроется внутри порождающего окна. Это не присваи- вает окну редактирования характеристик окна, в котором оно откры- вается. Когда окно редактирования активизируется внутри порождаю- щего окна, редактор не может перемещаться за пределы порождающего окна. Если порождающее окно перемещается, окно редактирования пе- ремещается вместе с ним. Порождающее окно должно быть сначала определе- но командой DEFINE WINDOW. Окно должно быть види- мым, чтобы получить окно редактирования. IN SCREEN Вы можете расположить окно редактирования на экране с помощью опции IN SCREEN. Эта опция позволяет вам явно расположить окно редактирования на экране, вместо расположения его внутри окна. По умолчанию, окно редактирования располагается на экране. SAVE Опция SAVE сохраняет окно редактирования на экране после то- го, как пользователь его покинет. Обычно, окна редактирования, открытые командами MODIFY COMMAND и MODIFY FILE, удаляются с эк- рана после того, как вы покидаете окна редактирования. г---------------------------------¬ ¦ MODIFY LABEL ¦ L---------------------------------- Назначение Открывает окно компоновки этикеток Синтаксис MODIFY LABEL [ | ?] [[WINDOW ] [IN [WINDOW] | IN SCREEN]] [NOENVIRONMENT] [NOWAIT] [SAVE] Замечания Усилена в FoxPro 2.0: опция NOENVIRONMENT Смотри также CREATE LABEL, LABEL Описание Команда MODIFY LABEL позволяет вам интерактивно модифициро- вать существующие этикетки или создавать новые этикетки в окне компоновки этикеток. Появление команды MODIFY LABEL без дополнительных аргументов вызывает диалог Открыть файл. Если вы выберите кнопку New (Новый) в диалоге, окну компоновки этикеток назначается имя UNTITLED. Когда вы выйдете из окна компоновки этикеток, вы можете сохранить файл этикеток с другим именем. Более подробную информацию о создании и модификации этикеток можно найти в "Руководстве по интерфейсу" (Interface Guide) и "Началах работы" (Getting Started) системы FoxPro. Дополнительные опции С помощью имени базы данных описания этикеток вы може- те модифицировать существующие этикетки. Если файл с таким именем не существует или не найден, создается новый файл этикеток. ? Если вы используете опцию ? или опустите опцию , будет представлен диалог Открыть файл со списком существующих файлов этикеток для выбора файла или выбора кнопки New (Новый) для соз- дания нового файла этикеток. WINDOW Если вы используете опцию WINDOW , окно компо- новки этикеток получит характеристики окна . Напри- мер, если было определено с опцией FLOAT команды DEFINE WINDOW, окно компоновки этикеток сможет перемещаться. Ок- но, заданное в опции , не обязано быть активным или видимым, но оно должно быть определено. Окно компоновки этикеток имеет стандартный размер, который может быть больше, чем окно . В этом случае окно компоновки этикеток просто присваивает характеристики окна, в ко- тором оно располагается. Левый верхний угол окна компоновки эти- кеток располагается в тех же координатах, что и левый верхний угол окна , и может располагаться за границами . IN [WINDOW] Если вы используете опцию IN WINDOW , окно ком- поновки этикеток откроется внутри порождающего окна. Это не прис- ваивает окну компоновки этикеток характеристик окна, в котором оно открывается. Когда окно компоновки этикеток активизируется внутри порождающего окна, оно не может перемещаться за пределы порождающего окна. Если порождающее окно перемещается, окно ком- поновки этикеток перемещается вместе с ним. Порождающее окно должно быть сначала определе- но командой DEFINE WINDOW. Окно должно быть види- мым, чтобы получить окно компоновки этикеток. IN SCREEN Вы можете расположить окно компоновки этикеток на экране с помощью опции IN SCREEN. Эта опция позволяет вам явно расположить окно компоновки этикеток на экране, вместо расположения его внут- ри окна. По умолчанию, окно компоновки этикеток располагается на экране. NOENVIRONMENT Когда вы создаете этикетки, вы можете при желании сохранить текущее состояние среды FoxPro вместе с файлом описания этикеток. Сохранение состояния среды FoxPro размещает дополнительную запись в базе данных описания этикеток. Эта запись содержит имена всех открытых баз данных и индексных файлов, индексный порядок и все связи между базами данных. Команда MODIFY LABEL автоматически восстанавливает состояние среды, сохраненное в файле описания этикеток (если состояние сре- ды было сохранено). Если вы используете опцию NOENVIRONMENT, сос- тояние среды не восстанавливается. Используйте опцию NOENVIRONMENT для предотвращения изменений текущего состояния среды. NOWAIT Когда команда MODIFY LABEL возникает в программе, открывается окно компоновки этикеток, и выполнение программы приостанавлива- ется, пока окно компоновки этикеток не закроется. Опция NOWAIT продолжает выполнение программы после открытия окна компоновки этикеток. Программа не ожидает закрытия окна, а продолжает выпол- нение со строки, следующей за командой MODIFY LABEL NOWAIT. Эту опцию возможно использовать только внутри программ. Если вы используете опцию NOWAIT в команде MODIFY LABEL в командном окне, это не даст эффекта. SAVE Опция SAVE сохраняет окно компоновки этикеток на экране после того, как пользователь его покинет. Обычно, окно компоновки эти- кеток, открытое командой MODIFY LABEL, удаляется с экрана после того, как вы покидаете окно компоновки этикеток. Эту опцию возможно использовать только внутри программ. Если вы используете опцию SAVE в команде MODIFY LABEL в командном ок- не, это не даст эффекта. г---------------------------------¬ ¦ MODIFY MEMO ¦ L---------------------------------- Назначение Модифицирует содержание memo поле Синтаксис MODIFY MEMO [, ... ] [NOEDIT] [NOWAIT] [RANGE , ] [[WINDOW ] [IN [WINDOW] < SCREEN]] [SAVE] Смотри также CLOSE MEMO Описание Команда MODIFY MEMO открывает окно для редактирования memo поля в текущей записи базы данных. Это позволяет вам просмотреть содержимое memo поля или сделать и сохранить изменения в memo по- ле. Если в записи более одного memo поля, то вы можете открыть окно для каждого memo поля. Для редактирования нужно определить имя memo поля или список имен memo полей. Вы можете также открыть окно редактирования memo полей для memo полей из других рабочих областей, определив их псевдонимы. Для выхода из окна и сохранения изменений нажмите клавиши Ctrl+W, или сделайте щелчок мыши на блоке Close (Закрыть). Для выхода из окна без сохранения изменений нажмите клавиши Ctrl+Q или Escaрe. Вы можете также закрыть окно, дав команду CLOSE MEMO. Команда CLOSE MEMO сохранит любые изменения, сделанные в memo по- ле. Закрытие базы данных также сохранит все изменения, сделанные в memo поле или memo полях. Дополнительные опции [, ...] Одно или несколько memo полей для редактирования. NOEDIT Опция NOEDIT не допускает модификаций текста или информации в окнах редактирования, открытых командой MODIFY MEMO. Текст может просматриваться, но не может изменяться. NOWAIT Когда команда MODIFY MEMO возникает в программе, открывается окно редактирования memo полей, и выполнение программы приоста- навливается, пока memo окно. Опция NOWAIT продолжает выполнение программы после открытия memo окна. Программа не ожидает закрытия окна, а продолжает выполнение со строки, следующей за командой MODIFY MEMO NOWAIT. Если команда MODIFY MEMO включает два или несколько memo по- лей, опция NOWAIT возникает неявно. Если вы используете опцию NOWAIT в команде MODIFY MEMO в ко- мандном окне, это не даст эффекта. RANGE , Опция RANGE позволяет с уже выбранной областью символов. Сим- волы выбираются, начиная с позиции, заданной численным выражением , и вплоть до (но не включая) позиции, заданной численным выражением . Если равно , символы не выби- раются, и курсор располагается в позиции, заданной и . Опция RANGE может использоваться с функциями AT() и ATC() для поиска в memo поле заданной символьной строки и последующего вы- деления этой строки. WINDOW Если вы используете опцию WINDOW , окно редак- тирования memo полей получит характеристики окна . Например, если было определено с опцией FLOAT ко- манды DEFINE WINDOW, окно редактирования memo полей сможет пере- мещаться. Окно, заданное в опции , не обязано быть активным или видимым, но оно должно быть определено. IN [WINDOW] Если вы используете опцию IN WINDOW , окно ре- дактирования memo полей откроется внутри порождающего окна. Это не присваивает окну редактирования memo полей характеристик окна, в котором оно открывается. Когда окно редактирования memo полей активизируется внутри порождающего окна, оно не может переме- щаться за пределы порождающего окна. Если порождающее окно пере- мещается, окно редактирования memo полей перемещается вместе с ним. Порождающее окно должно быть сначала определе- но командой DEFINE WINDOW. Окно должно быть види- мым, чтобы получить окно редактирования memo полей. IN SCREEN Вы можете расположить окно редактирования memo полей на экра- не с помощью опции IN SCREEN. Эта опция позволяет вам явно распо- ложить окно редактирования memo полей на экране, вместо располо- жения его внутри окна. По умолчанию, окно редактирования memo по- лей располагается на экране. SAVE Опция SAVE сохраняет окно редактирования memo полей на экране после того, как пользователь его покинет. Обычно, окно редактиро- вания memo полей, открытое командой MODIFY MEMO, удаляется с эк- рана после того, как вы покидаете его. Пример CLOSE ALL USE customer MODIFY MEMO comments NOEDIT RANGE 1,20 USE г---------------------------------¬ ¦ MODIFY MENU ¦ L---------------------------------- Назначение Открывает окно разработки меню Синтаксис MODIFY MENU [ < ?] [[WINDOW ] [IN [WINDOW] < IN SCREEN]] [NOWAIT] [SAVE] Замечания Новая в FoxPro 2.0 Смотри также DEFINE BAR, DEFINE MENU, DEFINE PAD, DEFINE POPUP, SET SYSMENU Описание Команда MODIFY MENU открывает окно разработки меню. Вы можете модифицировать существующие файлы меню или создавать новые. Ин- формацию об использовании компоновщика меню можно найти в главе Компоновщик меню "Руководства по интерфейсу" (Interface Guide) системы FoxPro. Дополнительные опции С помощью имени файла описания меню вы можете модифи- цировать существующие меню. Если файл с таким именем не существу- ет или не найден, создается новый файл меню. Появление команды MODIFY MENU без дополнительных аргументов вызывает диалог Открыть файл. Выберите существующий файл меню или кнопку New (Новый). Если вы выберите кнопку New (Новый) в диало- ге, окну разработки меню назначается имя UNTITLED. Когда вы вый- дете из окна разработки меню, вы можете сохранить файл меню с другим именем. ? Если вы используете опцию ?, будет представлен диалог Открыть файл со списком существующих файлов меню для выбора файла или вы- бора кнопки New (Новый) для создания нового файла меню. WINDOW Если вы используете опцию WINDOW , окно разра- ботки меню получит характеристики окна . Например, если было определено с опцией FLOAT команды DEFINE WINDOW, окно разработки меню сможет перемещаться. Окно, заданное в опции , не обязано быть активным или видимым, но оно должно быть определено. Окно разработки меню имеет стандартный размер, который может быть больше, чем окно . В этом случае окно разра- ботки меню просто присваивает характеристики окна, в котором оно располагается. Левый верхний угол окна разработки меню располага- ется в тех же координатах, что и левый верхний угол окна , и может располагаться за границами . IN [WINDOW] Если вы используете опцию IN WINDOW , окно раз- работки меню откроется внутри порождающего окна. Это не присваи- вает окну разработки меню характеристик окна, в котором оно открывается. Когда окно разработки меню активизируется внутри по- рождающего окна, оно не может перемещаться за пределы порождающе- го окна. Если порождающее окно перемещается, окно разработки меню перемещается вместе с ним. Порождающее окно должно быть сначала определе- но командой DEFINE WINDOW. Окно должно быть види- мым, чтобы получить окно разработки меню. IN SCREEN Вы можете расположить окно разработки меню на экране с по- мощью опции IN SCREEN. Эта опция позволяет вам явно расположить окно разработки меню на экране, вместо расположения его внутри окна. По умолчанию, окно разработки меню располагается на экране. NOWAIT Когда команда MODIFY MENU возникает в программе, открывается окно разработки меню, и выполнение программы приостанавливается, пока окно разработки меню не закроется. Опция NOWAIT продолжает выполнение программы после открытия окна разработки меню. Прог- рамма не ожидает закрытия окна, а продолжает выполнение со стро- ки, следующей за командой MODIFY MENU NOWAIT . Если вы используете опцию NOWAIT в команде MODIFY MENU в ко- мандном окне, это не даст эффекта. SAVE Во время выполнения программы опция SAVE оставляет окно раз- работки меню открытым после того, как другое окно было выдвинуто вперед. Во время выполнения программы окно разработки, открытое командой MODIFY MENU, закрывается, когда выдвигается другое окно. Если вы используете опцию SAVE в команде MODIFY MEMO в ко- мандном окне, это не даст эффекта. Для закрытия окна разработки меню, созданного с опцией SAVE, нажмите Ctrl+W, Ctrl+End, Ctrl+Q или Escaрe, сделайте щелчок мыши на блоке Close (Закрыть), или выберите команду Close (Закрыть) в меню Edit (Редактировать). г---------------------------------¬ ¦ MODIFY PROJECT ¦ L---------------------------------- Назначение Открывает Окно проекта Синтаксис MODIFY PROJECT [ < ?] [[WINDOW ] [IN [WINDOW] | SCREEN]] [NOWAIT] [SAVE] Замечания Новая в FoxPro 2.0 Смотри также BUILD APP, BUILD EXE, BUILD PROJECT, COMPILE, CREATE PROJECT Описание Команда MODIFY PROJECT открывает Окно проекта так, что вы мо- жете интерактивно модифицировать или создавать проекты. Проект это специальный файл базы данных, который сохраняет сведения о всех программах, экранах, меню, библиотеках, отчетах, базах дан- ных, индексах, форматных файлах и т. д., требуемые для создания прикладных программ, также как сведения о всех зависимостях, ссылках и связях между файлами. Проектный файл имеет расширение . PJX и связанных memo файл (.PJT). В проекте вы задаете все компо- ненты, требуемые для результирующей прикладной программы, а FoxPro заботится о том, чтобы прикладная программа была сгенери- рована на основе самых поздних версий исходных файлов. Информацию о Менеджере проектов можно найти в главе Менеджер проектов "Руководства по интерфейсу" (Interface Guide) системы FoxPro. Дополнительные опции Существующие проекты вы можете модифицировать, задав имя базы данных описания проекта . Если файл с таким именем не су- ществует или не найден, может быть создан новый проект. Появление команды MODIFY PROJECT без дополнительных аргумен- тов вызывает диалог Открыть файл. Файлу проекта назначается имя UNTITLED. Когда вы выйдете из Окна проекта, вы можете сохранить проект, используя другое имя. ? Если вы используете опцию ? или опустите имя файла, будет представлен диалог Открыть файл со списком существующих файлов описаний проектов для выбора файла или выбора кнопки New (Новый) для создания нового проекта. WINDOW Если вы используете опцию WINDOW , Окно проекта получит характеристики окна . Например, если было определено с опцией FLOAT команды DEFINE WINDOW, Окно проекта сможет перемещаться. Окно, заданное в опции , не обязано быть активным или видимым, но оно должно быть определено. Окно проекта имеет стандартный размер, который может быть больше, чем окно . В этом случае Окно проекта прос- то присваивает характеристики окна, в котором оно располагается. Левый верхний угол Окна проекта располагается в тех же координа- тах, что и левый верхний угол окна , и может распо- лагаться за границами . IN [WINDOW] Если вы используете опцию IN WINDOW , Окно про- екта откроется внутри порождающего окна. Это не присваивает Окну проекта характеристик окна, в котором оно открывается. Когда Окно проекта активизируется внутри порождающего окна, оно не может пе- ремещаться за пределы порождающего окна. Если порождающее окно перемещается, Окно проекта перемещается вместе с ним. Порождающее окно должно быть сначала определе- но командой DEFINE WINDOW. Окно должно быть види- мым, чтобы получить Окно проекта. IN SCREEN Вы можете расположить Окно проекта на экране с помощью опции IN SCREEN. Эта опция позволяет вам явно расположить Окно проекта на экране, вместо расположения его внутри окна. По умолчанию, Ок- но проекта располагается на экране. NOWAIT Когда команда MODIFY PROJECT возникает в программе, открыва- ется Окно проекта, и выполнение программы приостанавливается, по- ка Окно проекта не закроется. Опция NOWAIT продолжает выполнение программы после открытия Окна проекта. Программа не ожидает зак- рытия окна, а продолжает выполнение со строки, следующей за ко- мандой MODIFY PROJECT NOWAIT. Эта опция используется только внутри программ. Использование опции NOWAIT в команде MODIFY PROJECT в командном окне не даст эффекта. SAVE Опция SAVE оставляет Окно проекта на экране после выхода из Окна проекта. Обычно, Окно проекта, открытое командой MODIFY PROJECT, удаляется с экрана, когда вы покидаете Окно проекта. Ес- ли вы используете опцию SAVE в команде MODIFY MEMO в командном окне, это не даст эффекта. г---------------------------------¬ ¦ MODIFY QUERY ¦ L---------------------------------- Назначение Открывает окно RQBE Синтаксис MODIFY QUERY [ | ?] [NOWAIT] Замечания Новая в FoxPro 2.0 Смотри также CREATE QUERY Описание Команда MODIFY QUERY позволяет вам интерактивно модифициро- вать существующий запрос или создавать новый запрос в окне RQBE. Информацию о создании запросов можно найти в главе Реляцион- ный запрос на примерах "Руководства по интерфейсу" (Interface Guide) или в главе Извлечение ваших данных "Начал работы" (Getting Started) системы FoxPro. Дополнительные опции Существующий запрос вы можете модифицировать, задав имя зап- роса . Если файл с таким именем не существует или не най- ден, может быть создан новый запрос. Появление команды MODIFY QUERY без дополнительных аргументов вызывает диалог Открыть файл. Запросу назначается имя UNTITLED. Когда вы выйдете из окна RQBE, вы можете сохранить запрос, ис- пользуя другое имя. После того, как вы создали запрос, он сохра- няется как файл программы FoxPro с расширением .QPR. Программа запроса может быть выполнена с помощью команды DO. ? Если вы используете опцию ? или опустите имя файла, будет представлен диалог Открыть файл со списком существующих файлов запросов для выбора файла или ввода имени для создания нового файла. NOWAIT Когда команда MODIFY QUERY возникает в программе, открывается окно RQBE, и выполнение программы приостанавливается, пока окно RQBE не закроется. Опция NOWAIT продолжает выполнение программы после открытия окна RQBE. Программа не ожидает закрытия окна, а продолжает выполнение со строки, следующей за командой MODIFY QUERY NOWAIT. Эта опция используется только внутри программ. Ис- пользование опции NOWAIT в команде MODIFY QUERY в командном окне не даст эффекта. г---------------------------------¬ ¦ MODIFY REPORT ¦ L---------------------------------- Назначение Открывает окно компоновки отчета Синтаксис MODIFY REPORT [ | ?] [[WINDOW ] [IN [WINDOW] | SCREEN]] [NOENVIRONMENT] [NOWAIT] [SAVE] Замечания Усилена в FoxPro 2.0: опция NOENVIRONMENT Смотри также CREATE REPORT, REPORT Описание Этот формат команды MODIFY используется для модификации су- ществующих файлов описаний отчетов. Файлы описаний отчетов созда- ются командой CREATE REPORT или выбором кнопки New... (Новый...) из всплывающего меню File (Файл). Более подробную информацию о создании и модификации отчетов можно найти в "Руководстве по интерфейсу" (Interface Guide) и "Началах работы" (Getting Started) системы FoxPro. Дополнительные опции С помощью имени отчета вы можете модифицировать су- ществующие отчеты. Если файл с таким именем не существует или не найден, может быть создан новый отчет. Для модификации отчета, созданного в FoxBASE+, вы должны включить расширение файла .FRM. Появление команды MODIFY REPORT без дополнительных аргументов вызывает диалог Открыть файл. Отчету назначается имя UNTITLED. Когда вы выйдете из окна компоновки отчетов, вы можете сохранить файл отчетов с другим именем. Структура .FRX файлов описана в "Руководстве разработчика" (Develoрer's Guide) по системе FoxPro. ? Если вы используете опцию ?, будет представлен диалог Открыть файл со списком существующих файлов отчетов для выбора файла или ввода имени для создания нового файла. WINDOW Если вы используете опцию WINDOW , окно компо- новки отчетов получит характеристики окна . Напри- мер, если было определено с опцией FLOAT команды DEFINE WINDOW, окно компоновки отчетов сможет перемещаться. Окно, заданное в опции , не обязано быть активным или ви- димым, но оно должно быть определено. IN [WINDOW] Если вы используете опцию IN WINDOW , окно ком- поновки отчетов откроется внутри порождающего окна. Это не прис- ваивает окну компоновки отчетов характеристик окна, в котором оно открывается. Когда окно компоновки отчетов активизируется внутри порождающего окна, оно не может перемещаться за пределы порождаю- щего окна. Если порождающее окно перемещается, окно компоновки отчетов перемещается вместе с ним. Порождающее окно должно быть сначала определе- но командой DEFINE WINDOW. Окно должно быть види- мым, чтобы получить окно компоновки отчетов. IN SCREEN Вы можете расположить окно компоновки отчетов на экране с по- мощью опции IN SCREEN. Эта опция позволяет вам явно расположить окно компоновки отчетов на экране, вместо расположения его внутри окна. По умолчанию, окно компоновки отчетов располагается на эк- ране. NOENVIRONMENT Когда вы создаете отчеты, вы можете при желании сохранить те- кущее состояние среды FoxPro вместе с файлом описания отчетов. Сохранение состояния среды FoxPro размещает дополнительную запись в базе данных описания отчетов. Эта запись содержит имена всех открытых баз данных и индексных файлов, индексный порядок и все связи между базами данных. Команда MODIFY REPORT автоматически восстанавливает состояние среды, сохраненное в файле описания отчетов (если состояние среды было сохранено). Если вы используете опцию NOENVIRONMENT, состоя- ние среды не восстанавливается. Используйте опцию NOENVIRONMENT для предотвращения изменений текущего состояния среды. NOWAIT Когда команда MODIFY REPORT возникает в программе, открывает- ся окно компоновки отчетов, и выполнение программы приостанавли- вается, пока окно компоновки отчетов не закроется. Опция NOWAIT продолжает выполнение программы после открытия окна компоновки отчетов. Программа не ожидает закрытия окна, а продолжает выпол- нение со строки, следующей за командой MODIFY REPORT NOWAIT. Эту опцию возможно использовать только внутри программ. Если вы используете опцию NOWAIT в команде MODIFY REPORT в командном окне, это не даст эффекта. SAVE Опция SAVE сохраняет окно компоновки отчетов на экране после того, как пользователь его покинет. Обычно, окно компоновки отче- тов, открытое командой MODIFY REPORT, удаляется с экрана после того, как вы покидаете окно компоновки отчетов. Эту опцию возможно использовать только внутри программ. Если вы используете опцию SAVE в команде MODIFY REPORT в командном ок- не, это не даст эффекта. г---------------------------------¬ ¦ MODIFY SCREEN ¦ L---------------------------------- Назначение Открывает окно компоновки экранов Синтаксис MODIFY SCREEN [ < ?] [[WINDOW ] [IN [WINDOW] < IN SCREEN]] [NOENVIRONMENT] [NOWAIT] [SAVE] Замечания Новая в FoxPro 2.0 Смотри также CREATE SCREEN Описание Этот формат команды MODIFY используется для модификации су- ществующих файлов описаний экранов. Файлы описаний экранов созда- ются командой CREATE SCREEN или выбором кнопки New... (Новый...) из всплывающего меню File (Файл). Дополнительные опции С помощью имени отчета вы можете модифицировать су- ществующие экраны. Если файл с таким именем не существует или не найден, может быть создан новый экран. Появление команды MODIFY SCREEN без дополнительных аргументов вызывает диалог Открыть файл. Экрану назначается имя UNTITLED. Когда вы выйдете из окна компоновки экранов, вы можете сохранить файл экрана с другим именем. Таблица структуры баз данных описа- ний экранов приведена в "Руководстве разработчика" (Develoрer's Guide) по системе FoxPro. ? Если вы используете опцию ?, будет представлен диалог Открыть файл со списком существующих файлов экранов для выбора файла или ввода имени для создания нового экрана. WINDOW Если вы используете опцию WINDOW , окно компо- новки экранов получит характеристики окна . Напри- мер, если было определено с опцией FLOAT команды DEFINE WINDOW, окно компоновки экранов сможет перемещаться. Окно, заданное в опции , не обязано быть активным или ви- димым, но оно должно быть определено. IN [WINDOW] Если вы используете опцию IN WINDOW , окно ком- поновки экранов откроется внутри порождающего окна. Это не прис- ваивает окну компоновки экранов характеристик окна, в котором оно открывается. Когда окно компоновки экранов активизируется внутри порождающего окна, оно не может перемещаться за пределы порождаю- щего окна. Если порождающее окно перемещается, окно компоновки экранов перемещается вместе с ним. Порождающее окно должно быть сначала определе- но командой DEFINE WINDOW. Окно должно быть види- мым, чтобы получить окно компоновки экранов. IN SCREEN Вы можете расположить окно компоновки экранов на экране с по- мощью опции IN SCREEN. Эта опция позволяет вам явно расположить окно компоновки экранов на экране, вместо расположения его внутри окна. По умолчанию, окно компоновки экранов располагается на эк- ране. NOENVIRONMENT Когда вы создаете экраны, вы можете при желании сохранить те- кущее состояние среды FoxPro вместе с файлом описания экранов. Сохранение состояния среды FoxPro размещает дополнительную запись в базе данных описания экранов. Эта запись содержит имена всех открытых баз данных и индексных файлов, индексный порядок и все связи между базами данных. Команда MODIFY SCREEN автоматически восстанавливает состояние среды, сохраненное в файле описания экранов (если состояние среды было сохранено). Если вы используете опцию NOENVIRONMENT, состоя- ние среды не восстанавливается. Используйте опцию NOENVIRONMENT для предотвращения изменений текущего состояния среды. NOWAIT Когда команда MODIFY SCREEN возникает в программе, открывает- ся окно компоновки экранов, и выполнение программы приостанавли- вается, пока окно компоновки экранов не закроется. Опция NOWAIT продолжает выполнение программы после открытия окна компоновки экранов. Программа не ожидает закрытия окна, а продолжает выпол- нение со строки, следующей за командой MODIFY SCREEN NOWAIT. Эту опцию возможно использовать только внутри программ. Если вы используете опцию NOWAIT в команде MODIFY SCREEN в командном окне, это не даст эффекта. SAVE Опция SAVE сохраняет окно компоновки экранов на экране после того, как пользователь его покинет. Обычно, окно компоновки экра- нов, открытое командой MODIFY SCREEN, удаляется с экрана после того, как вы покидаете окно компоновки экранов. г---------------------------------¬ ¦ MODIFY STRUCTURE ¦ L---------------------------------- Назначение Модифицирует структуру базы данных Синтаксис MODIFY STRUCTURE Замечания Усилена в FoxPro 2.0: Возможность добавления индексных тегов Смотри также CREATE Описание Команда MODIFY STRUCTURE открывает диалог для модификации структуры базы данных, открытой в текущей рабочей области. Если в текущей рабочей области нет открытого файла, выдается приглашение выбрать модифицируемый файл. Может быть выполнено редактирование структуры, включая добавление и удаление полей, и могут быть мо- дифицированы имена, размеры и типы полей. Вы можете также добав- лять индексные теги в базу данных, используя диалог модификации структуры. Вы можете также модифицировать структуры баз данных с помощью команды Setuр... (Настройка...) всплывающего меню Database (База данных). Более подробную информацию о модификации структур баз данных с помощью интерфейса FoxPro можно найти в параграфе Меню Database (База данных) "Руководства по интерфейсу" (Interface Guide) системы FoxPro. Когда модифицируется структура базы данных, которая имеет memo поле, размер блока в memo файле устанавливается в текущую установку размера блока. Размер блока memo файла может быть задан командой SET BLOCКSIZE. FoxPro автоматически делает резервную копию текущей базы дан- ных перед структурными модификациями. После завершения модифика- ций, данные, содержащиеся в резервной копии файла базы данных . BAК, добавляются в модифицированную структуру записей. Также соз- дается резервный файл memo полей с расширением .TBК. г---------------------------------¬ ¦ MONTН ¦ L---------------------------------- Назначение Возвращает численный номер месяца (от 1 до 12) из выражения с да- той Синтаксис MONTН() Возвращаемый тип Численный Смотри также CMONTН(), DAY(), YEAR(), SYS() Описание Функция месяца года MONTН() возвращает номер месяца (от 1 до 12) из выражения с датой. Январь является месяцем номер 1, а де- кабрь - 12. Параметр является выражением с датой, используемым в функции MONTН(). Выражение с датой может быть функцией, возвращаю- щей дату, или переменной в памяти, элементом массива или полей базы данных типа дата. Примеры ? DATE() 08/12/91 ? MONTН(DATE()) 8 STORE {05/23/91} TO buy STORE MONTН(buy + 30) TO month ? month 6 г---------------------------------¬ ¦ MOVE POPUP ¦ L---------------------------------- Назначение Перемещает всплывающее меню в новое местоположение Синтаксис MOVE POPUP <рoрuр name> TO , | BY , Замечания Новая в FoxPro 2.0 Смотри также ACTIVATE POPUP, DEFINE POPUP, SIZE POPUP Описание Перемещает всплывающее меню, определенное пользователем, в другое место на экране или окне. Всплывающее меню может быть пе- ремещено в заданную позицию или может быть перемещено относи- тельно текущей позиции. Если меню, определенное пользователем, было определено с возможностью перемещения, оно не должно быть вначале активизировано. Системные всплывающие меню также могут быть перемещены. За- дайте имя системного всплывающего меню (_MSYSTEM, _MFILE, _MEDIT, _MDATA, _MRECORD, _MPROG или _MWINDOW) в параметре <рoрuр name>. Для возвращения системных всплывающих меню в исходное положение используйте команду SET SYSMENU TO DEFAULT. Дополнительные опции <рoрuр name> Перемещаемое всплывающее меню. TO , Перемещает всплывающее меню в заданную позицию экрана или ок- на. BY , Перемещает всплывающее меню в другую позицию относительно его текущей позиции. задает число строк для перемещения всплывающего меню (вниз, если положительно; вверх, если отрицательно). задает число колонок для перемещения всплывающего меню (вправо, если положительно; влево, если отрицательно). Пример CLEAR DEFINE POPUP movinрoр FROM 2,2 TO 20, 17 PROMPT FILES LIКE *.PRG ; TITLE 'Programs' ACTIVATE POPUP movinрoр NOWAIT ON SELECTION POPUP movinрoр DO moveрroc WITН PROMPT() FOR count = 1 TO 10 SIZE POPUP movinрoр BY 0,1 @@ Расширение всплывающего меню NEXT FOR count = 1 TO 30 MOVE POPUP movinрoр BY 1,0 @@ Перемещение всплывающего меню вниз NEXT MOVE POPUP movinрoр TO -20,50 @@ Перемещение всплывающего меню вверх && по экрану FOR count = 1 TO 22 MOVE POPUP movinрoр BY 1,0 @& Перемещение всплывающего меню вниз NEXT FOR count = 1 TO 10 SIZE POPUP movinрoр BY 0,-1 &@ Возвращение всплывающему меню @@ предыдущих размеров NEXT FOR count = 1 TO 48 MOVE POPUP movinрoр BY 0,-1 @@ Возвращение всплывающего меню в &@ исходную позицию NEXT ACTIVATE POPUP movinрoр PROCEDURE moveрroc PARAMETERS choice DEACTIVATE POPUP movinрoр RELEASE POPUP movinрoр @ 2,2 SAY 'You selected the file ' + choice г---------------------------------¬ ¦ MOVE WINDOW ¦ L---------------------------------- Назначение Перемещает окно в новое местоположение Синтаксис MOVE WINDOW TO , < BY , Смотри также ACTIVATE WINDOW Описание Перемещает окно, системное или определенное пользователем, в другое место на экране или окне. Окно может быть перемещено в за- данную позицию или может быть перемещено относительно текущей по- зиции. Если окно, определенное пользователем, было определено с возможностью перемещения, оно не должно быть вначале активизиро- вано или показано. Дополнительные опции Перемещаемое окно. TO , Перемещает окно в заданную позицию экрана или окна. BY , Перемещает окно в другую позицию относительно его текущей по- зиции. задает число строк для перемещения окна (вниз, ес- ли положительно; вверх, если отрицательно). зада- ет число колонок для перемещения окна (вправо, если поло- жительно; влево, если отрицательно). Пример DEFINE WINDOW menter FROM 10,4 TO 15,54 ACTIVATE WINDOW menter WAIT WINDOW MOVE WINDOW menter TO 15,10 После того, как окно menter было определено и активизировано, оно перемещается. г---------------------------------¬ ¦ MRКBAR ¦ L---------------------------------- Назначение Возвращает значение "истинно" (.T.), если строка всплывающего ме- ню помечена Синтаксис MRКBAR(, ) Параметры Имя всплывающего меню Номер проверяемой строки Возвращаемый тип Численный Замечания Новая в FoxPro 2.0 Смотри также MRКPAD(), SET MARК OF Описание Функция MRКBAR() возвращает логическое значение, которое ука- зывает, является ли строка всплывающего меню (команда) помечен- ной. Строка всплывающего меню может быть помечена, а пометка мо- жет быть удалена с помощью команды SET MARК. Если заданная строка всплывающего меню помечена, возвращается значение "истинно" (.T.). Если строка всплывающего меню не явля- ется помеченной, возвращается значение "ложно" (.F.). Параметры Символьное выражение содержит имя всплывающего меню, содержащего проверяемую строку. Численное выражение содержит номер строки, для которой вы проверяете статус помеченности. Пример В следующем примере, называющемся CNTBAR.PRG, в системное ме- ню добавляется пункт меню. Всплывающее меню ENVIRO определяется с четырьмя пунктами, которые будут изменять статус указанных эле- ментов. Пометка располагается на строке, когда связанный с ней элемент находится в состоянии "ON", и удаляется из строки, когда связанный элемент находится в состоянии "OFF". DEFINE PAD enviro OF _MSYSMENU PROMPT 'E\ 25 CASE PRMBAR('enviro', i) = 'Sticky' SET MARК OF BAR i OF enviro TO SET('STICКY') = 'ON' ENDCASE ENDFOR PROCEDURE enviroрoр DO CASE CASE PROMPT() = 'Status' IF MRКBAR('enviro', BAR()) SET STATUS OFF SET MARК OF BAR BAR() OF enviro TO .F. ELSE SET STATUS ON SET MARК OF BAR BAR() OF enviro TO .T. ENDIF CASE PROMPT() = 'Clock' IF MRКBAR('enviro', BAR()) SET CLOCК OFF SET MARК OF BAR BAR() OF enviro TO .F. ELSE SET CLOCК ON SET MARК OF BAR BAR() OF enviro TO .T. ENDIF CASE PROMPT() = 'Extended Video' IF MRКBAR('enviro', BAR()) SET DISPLAY TO VGA25 SET MARК OF BAR BAR() OF enviro TO .F. ELSE SET DISPLAY TO VGA50 SET MARК OF BAR BAR() OF enviro TO .T. ENDIF CASE рromрt() = 'Sticky' IF MRКBAR('enviro', BAR()) SET STICКY OFF SET MARК OF BAR BAR() OF enviro TO .F. ELSE SET STICКY ON SET MARК OF BAR BAR() OF enviro TO .T. ENDIF ENDCASE г---------------------------------¬ ¦ MRКPAD ¦ L---------------------------------- Назначение Возвращает значение "истинно" (.T.), если пункт меню помечен Синтаксис MRКPAD(, ) Параметры Имя линейки меню Номер проверяемого пункта Возвращаемый тип Численный Замечания Новая в FoxPro 2.0 Смотри также MRКBAR(), SET MARК OF Описание Функция MRКPAD() возвращает логическое значение, которое ука- зывает, является ли пункт меню в линейке меню помеченным. Пункт меню может быть помечен, а пометка может быть удалена с помощью команды SET MARК. Если заданный пункт меню помечен, возвращается значение "ист- инно" (.T. ). Если пункт меню не является помеченным, возвращает- ся значение "ложно" (. F.). Параметры Символьное выражение содержит имя линейки меню, содер- жащего проверяемый пункт. Численное выражение содержит номер пункта меню, для которого вы проверяете статус помеченности. Примеры *** Программа должна называться PADEXAM.PRG *** CLEAR DEACTIVATE MENU mainmenu DEFINE MENU mainmenu ; КEY alt+k BAR AT LINE 1 PUBLIC skiрvar skiрvar = .t. DEFINE PAD invoices OF mainmenu PROMPT '\]) Возвращаемый тип Численный Смотри также COL(), MCOL(), ROW(), WCOLS(), WROWS() Описание Функция MROW() возвращает строку экрана или окна, в которой находится указатель мыши. Параметр Функция MROW() возвращает строку, в которой расположен указа- тель мыши, если в задана пустая строка. Строка экрана, в которой расположен указатель мыши возвращается также, если опуст- ить и при этом нет активного открытого окна. Если есть активное окно, и не указано, то функция MROW() выдает строку, в которой расположен указатель мыши, отно- сительно активного окна. Если вы задаете имя окна в , коор- дината строки возвращается относительного заданного окна. В обоих случаях функция MROW() возвращает значение -1, если указатель мы- ши находится вне окна. Если MROW() возвращает координату экрана, то ее значение бу- дет находиться в диапазоне от 0 до максимального числа строк на экране минус 1. Например, если дисплей работает в режиме EGA25, то функция MROW() будет возвращать значения в диапазоне от 0 до 24. При получении с помощью этой функции координаты в виде строки окна, ее значение будет в диапазоне от 0 до числа строк в окне минус 1 (или равно -1 в том случае, когда указатель мыши находит- ся вне окна). Число строк в окне можно определить с помощью функции WROWS(). Если является именем Окна просмотра или Окна отладки, а указатель мыши находится на верхней границе окна, MROW() возвращает ноль. Когда указатель мыши находится на верхней грани- це любого другого окна, MROW() возвращает -1. Важно!!! Если драйвер мыши не был загружен, и нет окна вывода, MROW() возвращает -1. Это позволяет вам проверять наличие мыши в начале работы программы. Пример Второй пример в описании функции INКEY() использует MROW(). Смотрите описание функции INКEY() для примера использования MROW(). г---------------------------------¬ ¦ NDX ¦ L---------------------------------- Назначение Возвращает имя открытого индексного файла .IDX. Синтаксис NDX( [, < ]) Параметры Позиция (в списке файлов) возвращаемого .IDX файла Номер рабочей области для базы данных Псевдоним базы данных Возвращаемый тип Символьный Смотри также CDX(), INDEX, MDX(), SET INDEX, SYS(14), TAG(), USE Описание Функция NDX() возвращает имя открытого однокомпонентного ин- дексного файла .IDX. Для возвращения имен открытых составных ин- дексных файлов .CDX могут использоваться функции CDX() и MDX(). Параметры Обе команды USE и SET INDEX TO поддерживают индексный список, который позволяет вам открывать индексные файлы для базы данных. Возвращенное имя индексного файла, определено размещением в ин- дексном списке. Например, если равно 1, то возвращается имя первого индексного файла, размещенного в списке, если равно 2, возвращается имя второго индексного файла, и т. д. Все составные индексные файлы .CDX игнорируются. Функция возвращает пустую строку, если больше числа индексов . IDX в списке индексных файлов. < Если вы не задали рабочую область или псевдоним, возвращаются имена открытых индексных файлов .IDX для базы данных в текущей рабочей области. Вы можете получить имена индексных файлов .IDX, открытых в другой рабочей области, задав номер рабочей области или псевдоним базы данных . Если в заданной рабочей области нет открытой базы данных, функция NDX() возвращает пустую строку. Если нет базы данных с заданным псевдонимом, выдается сообщение "Alias not found" ("Псевдоним не найден"). г---------------------------------¬ ¦ NETWORК ¦ L---------------------------------- Назначение Возвращает значение "истинно" (.T.), если вы используете FoxPro/LAN, сетевую версию FoxPro Синтаксис NETWORК() Возвращаемый тип Логический Замечания FoxPro/LAN Смотри также OS(), VERSION() Описание Функция NETWORК() возвращает значение значение "истинно" (.T. ), если вы используете FoxPro/LAN. При использовании однопользо- вательской версии FoxPro функция возвращает значение "ложно" (.F. ). Заметим, что функция NETWORК() проверяет не активность сети, а только использование FoxPro/LAN. Эта функция позволяет использовать в одной программе специфи- ческие команды и функции для одно- и многопользовательского режи- мов работы. Различные процедуры могут выполняться в зависимости от логического значения, возвращаемого функцией NETWORК(). Следующий пример программы проверяет, используется ли FoxPro или FoxPro/LAN, а также проверяет версию DOS. Выдаются соответст- вующие сообщения. Пример CLEAR SET TALК OFF STORE NETWORК() TO mnet STORE OS() TO mdosver DO CASE CASE mnet = .F. @@ Однопользовательская версия FoxPro ? "This is FoxPro" CASE mnet = .T. AND "2." $ mdosver && FoxPro/LAN, DOS 2.XX ? "FoxPro/LAN requires DOS 3.1 or" ? "higher to lock records and files" ? "You are using " + mdosver CASE mnet = .T. AND "3.0" $ mdosver &@ FoxPro/LAN, DOS 3.0X ? "FoxPro/LAN requires DOS 3.1 or" ? "higher to lock records and files" ? "You are using " + mdosver OTНERWISE &@ FoxPro/LAN, DOS 3.1X или старше ? "This is FoxPro/LAN" ENDCASE г---------------------------------¬ ¦ NOTE | * | @& ¦ L---------------------------------- Назначение Размещает комментарии в файле программы Синтаксис NOTE [] * [] @& [] Смотри также MODIFY COMMAND Описание Эти команды позволяют включить комментарии в файл программы. Если вы хотите продолжить комментарий на другой строке, то после первой строки комментария должна стоять точка с запятой. Дополнительные опции NOTE [] Слово NOTE в начале строки программы указывает, что эта стро- ка является комментарием. Например: NOTE Это комментарий * [] Звездочка (*) в начале строки программы указывает, что эта строка является комментарием. Например: * Это комментарий @& [] Символы &@ в конце строки программы указывают, что далее сле- дуют встроенные комментарии. Например: STORE (20*12) TO рayments &@ Месячная плата в течение 20 лет Встроенные комментарии в конце конструкций IF, DO и FOR ... ENDFOR повышают читаемость программы. Примеры NOTE Инициализация переменной; номера страницы STORE 1 to MPGNMBR * Установка цикла DO WНILE MPGNMBR <= 25 && Цикл в 25 итераций MPGNMBR = MPGNMBR + 1 ENDDO @& Пока MPGNMBR <= 25 г---------------------------------¬ ¦ NUMLOCК ¦ L---------------------------------- Назначение Возвращает текущее состояние режима NumLock или устанавливает ре- жим NumLock Синтаксис NUMLOCК([]) Возвращаемый тип Логический Смотри также CAPSLOCК(), INSMODE() Описание Эта функция возвращает текущее состояние режима NumLock или включает или выключает режим клавиатуры NumLock. Функция возвра- щает логическое значение "истинно" (.T.) или "ложно" (.F.), осно- ванное на текущей установке режима NumLock. Если включен режим NumLock (нажатие клавиши на цифровой клавиатуры возвращает чис- ло), возвращается .T.. Если режим NumLock (нажатие клавиши на клавиатуры перемещает курсор), возвращается .F.. Параметр Параметр может включаться для включения или выключения режима NumLock. NUMLOCК(.T.) включает режим NumLock, NUMLOCК(.F.) выключает его. Возвращается логическое значение, соответствующее установке режима NumLock перед появлением команды NUMLOCК(.T.) или NUMLOCК(.F.). Примеры * Включение режима Set NumLock oldlock = NUMLOCК(.T.) * Возврат в исходное состояние = NUMLOCК(oldlock) * Переключение режима NumLock в противоположное значение = NUMLOCК(!NUMLOCК()) В последних двух примерах знак равенства используется для вы- полнения функции NUMLOCК() без возврата значения. г---------------------------------¬ ¦ OBJNUM ¦ L---------------------------------- Назначение Возвращает номер объекта поля GET Синтаксис OBJNUM( [, ]) Параметры Имя поля GET Номер уровня READ Возвращаемый тип Численный Замечания Новая в FoxPro 2.0 Смотри также @ ... GET, CLEAR READ, _CUROBJ, RDLEVEL(), READ, SНOW GET, SНOW OBJECT Описание Команды @ ... GET и @ ... EDIT позволяют вам создавать GET объекты (поля, блоки проверки, невидимые, селективные и текстовые кнопки, всплывающие меню, списки и области редактирования текста). Номер объекта определяется порядком его создания. Параметры Вы можете возвратить номер объекта для органа управления, за- данного параметром , который является переменной в памяти, элементом массива или полем базы данных, указывающим какой орган управления был создан. Вложенные команды READ могут быть получены с помощью команд GET и команды READ в процедуре, вызванной с помощью READ. Команды READ могут иметь до пяти уровней вложения. Для получения номера объекта, относящегося к другому уровню READ, используйте необяза- тельное численное выражение , задающее номер уровня READ. Если не используется, функция OBJNUM() возвращает номер объекта GET для текущего уровня READ. Пример SET TALК OFF DEFINE WINDOW gotodialog FROM 9, 17 TO 19,61 ; FLOAT NOCLOSE SНADOW DOUBLE COLOR SCНEME 5 PRIVATE file,lastobj,enter,tab,shifttab,uр,down,left,right * Назначение значений клавиш выхода * enter = 13 tab = 9 shifttab = 15 uр = 5 down = 24 right = 4 left = 19 lastobj = 1 * Открыть файл базы данных * IF EMPTY(DBF()) file = GETFILE('DBF','Pick a database') IF EMPTY(FILE) WAIT WINDOW 'Cancelled' NOWAIT RETURN ENDIF USE (file) ENDIF * Извлечение полей * ACTIVATE WINDOW gotodialog @ 0,1 TO 8,25 @ 1,3 GET radio PICTURE '@*RVN \ RECCOUNT() WAIT WINDOW 'Record out of range' NOWAIT ELSE GO recordnum ENDIF CASE radio = 4 IF skiрnum+RECNO() > RECCOUNT() OR skiрnum+RECNO() < 0 WAIT WINDOW 'Record out of range' NOWAIT ELSE SКIP skiрnum ENDIF ENDCASE ENDIF