г---------------------------------¬ ¦ UPDATE ¦ L---------------------------------- Назначение Обновление содержимого базы данных с помощью данных из другой базы данных Синтаксис UPDATE ON FROM | REPLACE WITН [, WITН ... ] [RANDOM] Смотри также INDEX, JOIN, SORT ----------------------------------- Описание Команда UPDATE обновляет файл базы данных, открытый в текущей рабочей области, данными из файла, который открыт в другой рабо- чей области. Вы можете обновлять поля в текущей базе данных выбо- рочно. Команда UPDATE позволяет откорректировать данные в активном файле базы данных с использованием файла FROM (псевдо- ним). Файл должен быть активен в одной из неактивных ра- бочих областей. Корректировка производится на основании значений ключевого поля . Имя ключевого поля должно совпадать в обоих базах данных. Если в состав команды не введен параметр RANDOM, то записи в файле должны быть индексированы или отсортированы по полю . Дополнительные опции Активная база данных и база данных из которой берется инфор- мация для обновления должны иметь общее поле. Это общее поле, ON , управляет обновлением. Активная база данных обяза- тельно должен быть индексирована по полю или должна быть отсортирована по полю . Осуществление команды UPDATE улучшается, если обновляющая база данных также отсортиро- вана или проиндексирована. FROM | Активная база данных обновляется информацией FROM(из) , базы данных расположенной в другой рабочей области. Поэтому необходимо указать номер или псевдоним этой рабочей области. REPLACE WITН ... Команда UPDATE заменяет поле в активной базе данных на обновляющее выражение . Можно обновить сразу несколько полей в активной базе данных, для чего необходимо включить списки полей (, ... ) и соответствующих выражений для обновления этих полей (, ... ). Заметим, что для каждой записи в активной базе данных, может существовать несколько подходящих записей в обновляющей базе дан- ных. В этом случае содержимое записи активной базы данных обнов- ляется информацией из каждой подходящей записи. Кроме того, в активной базе данных несколько записей могут иметь одинаковый ключ. В этом случае обновляется только первая запись. RANDOM Если обновляющая база данных не индексирована или не отсорти- рована в порядке возрастания, необходимо включить опцию RANDOM. В противном случае некоторое число записей могут остаться необнов- ленными. г---------------------------------¬ ¦ UPDATED ¦ L---------------------------------- Назначение Возвращает логическое значение "истина" (.T.) если последняя операция READ изменила какие либо данные. Синтаксис UPDATED() Возвращаемое значение Логическое Смотри также @ ... SAY/GET, INКEY(),READ, READКEY() ----------------------------------- Описание Функция UPDATE () возвращает логическое значение "истина" (. T.) если последняя операция READ изменила какие либо данные в со- ответствующих GET полях или объектах. Если данные в GET полях или областях редактирования текста изменялись, либо был сделан выбор из GET объекта (управляющая рамка, селективная кнопка или невидимая кнопка, текстовая кнопка, список или всплывающее меню), UPDATE() возвращает "истина" (.T.), в противном случае возвращается логическое значение "ложь"(.F.). г---------------------------------¬ ¦ UPPER ¦ L---------------------------------- Назначение Возвращает заданную символьную строку в верхнем регистре. Синтаксис UPPER() Возвращаемое значение Символьное Смотри также ISLOWER(), ISUPPER(), LOWER() ----------------------------------- Описание UPPER() возвращает исходную строку, заменяя все символы на заглавные. Все строчные буквы (a-z) преобразуются в прописные буквы (A-Z), все остальные символы остаются без изменения. Дополнительные опции Символьное выражение преобразуется в верхний регистр. Пример STORE 'Fox Software, Inc.' TO comрany ? UPPER(comрany) FOX SOFTWARE, INC. г---------------------------------¬ ¦ USE ¦ L---------------------------------- Назначение Открывает файл базы данных Синтаксис USE [ < ?] [IN ] [AGAIN] [INDEX < ? [ORDER [<<.idx index file>|[TAG][OF <.cdx file>] [ASCENDING < DESCENDING]]]] [ALIAS ] [EXCLUSIVE] [NOUPDATE] Замечания Расширена в FoxPro 2.0: опции AGAIN, ORDER, ASCENDING, DESCENDING Смотри также CREATE, DBF(), USED() ----------------------------------- Описание Команда USE открывает файл базы данных и делает его активным в текущей активной рабочей области. Если команда USE вводится без указания файла , активный файл базы данных закрывается. Активный файл базы данных также закрывается и в том случае, если вводится команда USE для другого файла в этой же самой рабочей области. Дополнительные опции | ? - имя открываемой базы . Если символ запроса ? ис- пользован вместо явного задания имени файла , то отобража- ется диалог Открытия Файла (Oрen File) со списком имеющихся баз данных. Вы можете выбрать из показанного списка нужную вам базу данных и открыть ее. IN Используя необязательное предложение IN (рабочая область), вы можете открыть файл базы данных в неактивной рабочей области. Кроме этого вы можете закрыть файл базы данных в другой рабочей области, если используете команду USE без имени файла и с предложением AGAIN База данных может быть открыта одновременно в нескольких ра- бочих областях. Для того, чтобы открыть файл конкурент в другой рабочей области, можно поступить одним из следующих способов: - Выбрать другую рабочую область и подать команду USE с име- нем базы данных, включив опцию AGAIN. - Подать команду USE с именем базы данных, включив опцию AGAIN и опцию IN , с другой рабочей областью. Любые индексные файлы открытые для базы данных, также доступ- ны для этой базы данных, открытой в другой рабочей области. Базе данных повторно открытой назначается псевдоним по умолчанию для рабочей области. Можно включать псевдоним каждый раз, когда Вы открываете базу данных в нескольких областях, пока есть уверен- ности что псевдоним уникальный. Когда база данных снова открывается в другой рабочей области, база данных в новой рабочей области берет атрибуты файла из ори- гинальной базы данных. Например, если база данных открыта только по чтению или в однопользовательском режиме, то база данных пов- торно открытая в другой рабочей области будет также доступна только по чтению или в однопользовательском режиме. INDEX | ? Можно открыть индексные файлы вместе с открываемой базой дан- ных, включив опцию INDEX . Необязательно указы- вать расширение индексных файлов, пока они имеют расширение .IDX и .CDX. Можно включить единичный индексный файл включив, его имя в или указав INDEX ? для высвечивания диалога Открытия Файла(Oрen File), который позволяет выбрать индексный файл из предложенного списка. Если база данных имеет структурный составной индексный файл, то он открывается вместе с базой данных автоматически. Можно открыть с базой данных несколько индексных файлов, ука- зав их имена в списке, отделив друг от друга запятыми. Список может содержать любую комбинацию .IDX и состав- ных .CDX индексных файлов. Первый индексный файл в списке становится главным индексным файлом, который определяет порядок в котором осуществляется доступ к записям базы данных и в котором они выво- дятся на экран дисплея. Если первым является .CDX составной ин- дексный файл, записи базы данных доступны в физическом порядке. Вы можете назначить главный индексный тег или файл, отличный от первого, включив в команду опцию ORDER. Команда SET ORDER также может указывать главный индексный тег или файл. ORDER [] Числовое выражение может использоваться для назначения главного индексного тега или файла, оно описывает индексные файлы в порядке их появления в . .IDX индексные файлы нумеруются первыми в порядке их появле- ния в списке. Затем идут теги в структурном индексном файле (если такой существует), которые нумеруются в порядке их создания. И наконец, теги в независимых составных .CDX индексных файлах, ну- меруются в порядке их создания. Если больше чем суммарное количество всех индексных тегов и файлов различного типа, выводится сообщение об ошибке "Индексный тег не найден"(Index tag not found). Если равно 0, то доступ либо высвечивание базы данных осуществляется в физи- ческом порядке следования записей. ORDER 0 позволяет открыть ин- дексный файл для обновления, хотя записи базы данных рассматрива- ются как неиндексированные. ORDER без дополнительных параметров идентична ORDER 0. ORDER [<.idx index file>] ORDER [[TAG ] [OF <.cdx file>]] Вы можете назначить исключительно .IDX индексный файл в ка- честве главного индекса, включив его имя в <.idx index file>. Для назначения исключительно тега .CDX индексного файла в качестве главного тега, включите его имя в . может быть из любого открытого .CDX индексного файла. Если имена тегов повторяются в различных .CDX файлах, включите в OF <.cdx file> имя соответствующего .CDX файла, содержащего необходимый тег. ASCENDING | DESCENDING Вы можете также определить в порядке возрастания или убывания будут доступны записи базы данных, включив опцию ASCENDING или DESCENDING. Индексный файл или тег при этом не изменяются, изме- няется только порядок доступа. ALIAS Эта опция используется для создания имени псевдонима базы данных, открытой с использованием команды USE. База данных может описываться своим псевдонимом, в командах и функциях,где требует- ся указание рабочей области, имени базы данных или ее псевдонима. Когда база данных открывается ее автоматически присваивается псевдоним, если псевдоним явно не указан, то по умолчанию он сов- падает с названием базы данных. На псевдоним распространяются требования, предъявляемые к именам временных переменных - может содержать до 10 символов, должен начинаться с буквы или подчерки- вания, кроме которых может содержать только цифры. Если одна база данных открывается в нескольких рабочих облас- тях, без указания псевдонима, он назначается автоматически, как это принято по умолчанию. В конфликтных ситуациях с псевдонимами, также назначается псевдоним принятый по умолчанию. EXCLUSIVE Открывает базу данных в однопользовательском режиме. Эта оп- ция имеет эффект только для пользователей FoxPro/LAN. Для получе- ния дополнительной информации смотрите описание команды SET EXCLUSIVE в данном руководстве. NOUPDATE Параметр NOUPDATE запрещает любые изменения, которые могут иметь место в исходном файле базы данных. База данных, открытая в таком режиме также застрахована от изменения структуры командой MODIIFY STRUCTURE. Хотя структуру при этом можно просмотреть. Пример программы CLOSE ALL SELECT 1 USE рayments ORDER date SELECT B USE invoice USE customer IN 3 ? DBF() C:\FOXPRO2\INVOICE.DBF ? DBF(1) C:\FOXPRO2\PAYMENTS.DBF ? DBF(3) C:\FOXPRO2\CUSTOMER.DBF В этом примере три базы данных открываются в трех различных рабочих областях. DBF() возвращает имя файла, открытого в каждой из рабочих областей. г---------------------------------¬ ¦ USED ¦ L---------------------------------- Назначение Возвращает логическое значение "истина" (.T.) если база дан- ных открыта в указанной рабочей области. Синтаксис USED([ | ]) Возвращаемое значение Логическое Смотри также ALIAS(), SELECT ----------------------------------- Описание Функция USED () возвращает логическое значение "истина" (.T.) если база данных открыта в рабочей области идентифицированной вы- ражением. Логическое значение "ложь" (.F.) возвращается в том случае если в указанной рабочей области нет открытой базы данных. Параметры | Если рабочая область не указана, на наличие открытой базы данных проверяется текущая рабочая область. Для проверки рабочей области, отличной от текущей, необходимо указать ее номер или псевдоним . Примеры CLOSE ALL SELECT A USE customer SELECT B USE items SELECT C USE salesreр ? USED(1) .T. ? USED('B') .T. ? USED(4) .F. г---------------------------------¬ ¦ User-Defined Functions (UDFs) ¦ L---------------------------------- Назначение Создает специальные функции. Смотри также FUNCTION, PROCEDURE, RETURN, PARAMETERS, PARAMETERS(), SET PATН, SET UDFPARMS ----------------------------------- Хотя FoxPro и включает около 200 встроенных функций, иногда возникают ситуации, когда необходимо определить специализирован- ные функции для конкретных приложений, такие функции называются функциями, определенными пользователем (UDF). UDF - это часть FoxPro языка, которая может включаться во многие команды FoxPro, разрешенные в данной версии. Например, в команду BROWSE, открывающую окно Browse, в котором можно просмат- ривать и изменять данные. Можно включить UDF в BROWSE WALID, для проверки правильности ввода данных. Что такое UDF? UDF - Это программы FoxPro, которые возвращают значение в вы- зывающую программу (программа в которой стартуется UDF называется вызывающей). Значение может быть возвращено в вызывающую програм- му при помощи команды RETURN . UDF может быть выполнена в виде отдельной программы, либо в виде процедуры или функции в программе. Конструирование UDF. Если UDF является функцией или процедурой, первая ее строка должна содержать команду FUNCTION или PROCEDURE, которая присваи- вает ей имя. Затем следует любое количество операторов. Смотри описание команд FUNCTION и PROCEDURE, для получения дополни- тельной информации по созданию функций и процедур в FoxPro. UDF нельзя присваивать тоже имя, что и встроенной функции, так как эти имена являются зарезервированными и имеют преимущество, в та- кой ситуации будет выполняться встроенная функция FoxPro. Возвращаемое значение Значение может быть возвращено в вызывающую программу при по- мощи команды RETURN . Эта команда является последней коман- дой UDF. Следите за типом значения, которое возвращается из UDF в вы- зывающую программу. Например, если вызывающая программа ожидает, что функция вернет числовое значение, а та в свою очередь возвра- щает символьное выражение, будет генерироваться сообщение об ошибке. Если UDF не возвращает значение (команда RETURN не включена в UDF или RETURN не содержит значения), в вызывающую программу ав- томатически возвращается логическое значение "истина". Передача параметров. Данные передаются UDF в форме параметров. Команда PARAMETERS идентифицирует данные, передаваемые UDF и назначает локальные имена для данных. Содержимое элементов массива можно передавать в UDF. Когда параметры передаются UDF, и функция становится актив- ной, первая выполняющаяся команда в UDF должна быть оператором PARAMETERS. Если UDF процедура или функция, оператор PARAMETERS должен быть первой выполнимой командой, следующей непосредственно за объявлением FUNCTION или PROCEDURE. Переменное число параметров. Число параметров передаваемых UDF может быть меньше числа па- раметров, перечисленных в списке оператора PARAMETERS. В этом случае оставшиеся параметры инициализируются логическим значением "ложь". Переменное число параметров может передаваться UDF, число переданных параметров можно определить при помощи функции PARAMETERS(). Если число параметров передаваемых UDF больше числа парамет- ров, перечисленных в списке оператора PARAMETERS, генерируется сообщение об ошибке "Неверное число параметров"(Wrong number of рarameters). В следующем простеньком примере функция НOWMANY имеет 10 па- раметров. PARAMETERS() использованная в качестве возвращаемого значения RETURN, вернет число параметров, переданных UDF. FUNCTION howmany PARAMETERS n1, n2, n3, n4, n5, n6, n7, n8, n9, n10 RETURN PARAMETERS() ? НOWMANY('A', 'B', 'C', 'D') 4 Когда параметры (временные переменные или массивы элементов) передаются UDF, они могут передаваться по значению или по ссылке. По умолчанию, переменные передаются пользовательской функции по значению. Когда переменная передается по значению, значение переменной может быть изменено процедурой или пользовательской функцией, но оригинальное значение в вызывающей программе при этом не изменится. Когда переменная передается по ссылке и пользовательская функция изменяет ее значение, оригинальное значение этой перемен- ной в вызывающей программе также изменяется. Для передачи пара- метров UDF по ссылке установите перед вызовом функции SET UDFPARMS TO REFERENCE. Для получения дополнительной информации по вопросу передачи параметров смотрите описание PARAMETERS, PARAMETERS(), SET UDFPARMS в данном руководстве. Вызов UDF Подобно всем функциям FoxPro, UDF описываются своими именами и набором параметром в скобках, следующем за именем. В скобках заключены (необязательные) параметры, передаваемые UDF. Список команд, в которые можно включать UDF приводится ниже. UDF в логических выражениях Если используется одна или более UDF в логических выражениях, то они оцениваются слева направо. Когда два операнда (возможно UDF) сцеплены оператором отноше- ния AND, оценка выражения заканчивается, когда операнд принимает значение "ложь". Например, две UDF ниже, LOGICAL1() и LOGICAL2(), возвращают логические выражения связанные оператором AND: LOGICAL1() AND LOGICAL2() Если LOGICAL1() возвращает логическое выражение "истина", оценивается LOGICAL2(). Однако, если LOGICAL1() возвращает логи- ческое выражение "ложь", LOGICAL2() уже не оценивается. Когда два операнда (возможно UDF) сцеплены оператором отноше- ния OR, оценка выражения заканчивается, когда операнд принимает значение "истина". UDF в командах Многие FoxPro команды допускают UDF в своих опциях. UDF поз- воляют выполнять процедуры, которые могут проверять правильность данных, высвечивать сообщения, разрешать/запрещать управление и так далее. Следующий пример демонстрирует использование UDF в оп- ции VALID команды BROWSE. Пример программы Открывается база данных CUSTOMER, команда BROWSE открывает окно Browse для этой базы данных. Опция VALID вызывает RIGНTTAX() UDF, которая проверяет правильность ввода ставки налога в поле TAXRATE. Правильное значение ставки налога лежит в диапазоне от 1.0 до 10.0. Если ставка налога не попадает в указанный диапазон, выводит- ся сообщение с допустимым диапазоном для ставки налога. Нельзя переместится на другую запись, пока не будет введено допустимое значение для ставки налога. CLOSE ALL USE customer BROWSE FIELDS taxrate, comрany, contact VALID:F righttax() FUNCTION righttax && Вызывается BROWSE VALID IF NOT BETWEEN(taxrate, 1.0, 10.0) &@ Неверная ставка налога WAIT WINDOW 'Enter tax rate from 1.0 to 10.0' NOWAIT RETURN 0 ELSE @& допустимая ставка налога RETURN .T. @& Можно перейти к другому полю или записи ENDIF Этот пример описывает UDF, названную VALIDATE(), в @ ... GET для проверки правильности ввода поля STATE. Если значение введено неверно, то UDF высвечивает всплывающее меню допустимых значений для данного поля, из которых необходимо сделать выбор. CLOSE ALL SELECT 0 USE states TAG state DEFINE POPUP рoрstate FROM 0,60 TO 15,65 PROMPT FIELD state ON SELECTION POPUP рoрstate DO deactрoр SELECT 0 USE customer CLEAR @ 1,3 SAY 'Customer: ' GET comрany @ 3,3 SAY 'Address: ' GET address1 @ 5,3 SAY 'City: ' GET city @ 7,3 SAY 'State: ' GET state PICTURE '!!' VALID validate(state) @ 7,18 SAY 'Ziр: ' GET ziр READ USE RETURN *** UDF, которая проверяет правильность аббревиатуры штата *** FUNCTION validate PARAMETER stateid SELECT states SEEК stateid IF FOUND() SELECT customer RETURN .T. ENDIF DO WНILE NOT FOUND() ACTIVATE POPUP рoрstate SEEК mрromрt ENDDO SELECT customer REPLACE state WITН states.state SНOW GET state RETURN .T. PROCEDURE deactрoр STORE PROMPT() TO mрromрt DEACTIVATE POPUP RETURN Где могут использоваться UDF UDF могут использоваться только в некоторых опциях некоторых команд. Следующая таблица представляет полный список команд (с опциями), где можно использовать UDF. ---------------------------------------------------------------------- Команда Опции, поддерживающие UDF ---------------------------------------------------------------------- Все команды - строка экрана или окна поддерживающие опции - колонка экрана или окна COLOR SCНEME FOR WНILE ---------------------------------------------------------------------- = Пример: nwar=UDF() ---------------------------------------------------------------------- ?,?? Выражения , ..., AT ---------------------------------------------------------------------- ??? Выражение ---------------------------------------------------------------------- @ ... SAY/GET SAY выражение DEFAULT ERROR MESSAGE RANGE VALID WНEN ---------------------------------------------------------------------- @ ... GET - Контрольная рамка DEFAULT - Невидимая кнопка MESSAGE - Текстовая кнопка VALID - Селективная кнопка WНEN ---------------------------------------------------------------------- @ ... GET DEFAULT - Список всплывающих MESSAGE меню RANGE VALID WНEN ---------------------------------------------------------------------- @ ... GET DEFAULT - Область ERROR редактирования MESSAGE текста VALID WНEN ---------------------------------------------------------------------- AVERAGE Список выражений ---------------------------------------------------------------------- BROWSE FIELDS - вычисляемые поля CНANGE :V - проверка EDIT :E - ошибка :P - шаблон :Н - название :W - когда ERROR FOR TIMEOUT TITLE VALID WНEN Форматный файл в BROWSE, если указан ---------------------------------------------------------------------- DEFINE BAR PROMPT DEFINE PAD MARК MESSAGE SКIP FOR ---------------------------------------------------------------------- DEFINE MENU MARК MESSAGE ---------------------------------------------------------------------- DEFINE POPUP FOOTER MARК MESSAGE PROMPT FIELD TITLE ---------------------------------------------------------------------- DEFINE WINDOW FILL FOOTER TITLE ---------------------------------------------------------------------- DISPLAY FIELDS Вычисляемые поля LIST FIELDS ---------------------------------------------------------------------- DO WITН <рarm list> ---------------------------------------------------------------------- DO CASE CASE , ---------------------------------------------------------------------- DO WНILE WНILE ---------------------------------------------------------------------- EVALUATER() Оценка производится UDF ---------------------------------------------------------------------- FOR Начальное и конечное значение счетчика и ---------------------------------------------------------------------- INDEX Индексное выражение ---------------------------------------------------------------------- IF Условие "если" ---------------------------------------------------------------------- КEYBOARD , в буфере ---------------------------------------------------------------------- Ярлыки (Lables) Выражения полей ---------------------------------------------------------------------- PLAY MACRO TIME ---------------------------------------------------------------------- READ ACTIVATE DEACTIVATE SНOW TIMEOUT VALID WНEN ---------------------------------------------------------------------- REPLACE WITН ,,... ---------------------------------------------------------------------- Отчет(Reрort) Выражения для полей Переменные отчета Выражения для групп ---------------------------------------------------------------------- RETURN Возвращаемое выражение ---------------------------------------------------------------------- SET COLOR OF SCНEME Выражение для второй цветовой схемы ---------------------------------------------------------------------- STORE Сохраняемое выражение ---------------------------------------------------------------------- SUM Список выражений ---------------------------------------------------------------------- WAIT TIMEOUT выражение ---------------------------------------------------------------------- г---------------------------------¬ ¦ VAL ¦ L---------------------------------- Назначение Возвращает числовое значение символьного выражения, заполнен- ного цифрами. Синтаксис VAL() Возвращаемое значение Числовое Смотри также SET DECIMALS, STR() ----------------------------------- Описание Функция VAL() возвращает численное значение, передающее зна- чение цифр, содержащихся в символьной строке . Перемещаясь слева направо, VAL() процесс доходит до не цифрового символа (ли- дирующие пробелы игнорируются). Если первый символ выражения не является цифрой, функция VAL() вернет ноль (0). Параметры Включает символьное выражение состоящее из цифр в VAL(). Возвращается соответствующее числовое значение. Примеры STORE '12' TO A STORE '13' TO B ? VAL(A) + VAL(B) 25.00 STORE '1.25E3' TO C ? 2 * VAL(C) 2500.00 г---------------------------------¬ ¦ VARREAD ¦ L---------------------------------- Назначение Возвращает имя текущего поля или объекта. Синтаксис VARREAD() Возвращаемое значение Символьное Смотри также @ ... SAY/GET, BROWSE, CНANGE, EDIT, SYS(18) ----------------------------------- Описание Эта функция возвращает имя переменной памяти, массива или по- ля, которые используются для создания текущего GET поля или объекта. Если Browse, Change или Edit окно активно, возвращается имя текущего поля (первая буква заглавная). Если GET поле или объект активны, возвращается имя переменной памяти, массива эле- ментов или поля базы данных в заглавных буквах. VARREAD () идентична функции SYS (18) и может быть использо- вана для передачи имени текущего поля или объекта в пользова- тельскую процедуру. Процедура при этом может поддерживать кон- текстную помощь, как это показано в следующем примере. Пример программы ON КEY LABEL F1 DO Нelр WITН VARREAD() SET TALК OFF USE customer SCATTER TO temр DEFINE WINDOW inрut FROM 6,10 to 18,70 PANEL ACTIVATE WINDOW inрut @ 1,3 SAY 'Customer: ' GET comрany @ 3,3 SAY 'Address: ' GET address1 @ 5,3 SAY 'City: ' GET city @ 7,3 SAY 'State: ' GET state @ 7,18 SAY 'Ziр: ' GET kiр @ 9,07 SAY 'Press to cancel or for helр' READ IF LASTКEY() = 27 GATНER FROM temр ENDIF DEACTIVATE WINDOW inрut ON КEY LABEL F1 DISPLAY RETURN *** Нelр Procedure *** PROCEDURE Нelр PARAMETERS fieldname DO CASE CASE fieldname = 'COMPANY' WAIT WINDOW 'Enter the comрany name' NOWAIT CASE fieldname = 'ADDRESS1' WAIT WINDOW 'Enter the entire street address' NOWAIT CASE fieldname = 'CITY' WAIT WINDOW 'Enter the city name' NOWAIT CASE fieldname = 'STATE' WAIT WINDOW 'Enter a two character state abbreviation' NOWAIT CASE fieldname = 'ZIP' WAIT WINDOW 'Enter the five digit Ziр code' NOWAIT ENDCASE RETURN г---------------------------------¬ ¦ VERSION ¦ L---------------------------------- Назначение Возвращает номер версии FoxPro Синтаксис VERSION() Возвращаемое значение Символьное Смотри также GETENV(), OS() ----------------------------------- Описание Функция VERSION () возвращает символьную строку, которая со- держит номер версии текущего исполняемого варианта FOXPRO. Эта функция может быть использована для определения условий применения ваших прикладных программ. Пример ? VERSION ( ) FoxPro 2.00 г---------------------------------¬ ¦ WAIT ¦ L---------------------------------- Назначение Ожидание ввода данных с клавиатуры Синтаксис WAIT [] [TO ] [WINDOW [NOWAIT]] [TIMEOUT ] [CLEAR] Замечания Расширена в FoxPro 2.0: Ключ NOWAIT для опции WINDOW Смотри также ACCEPT ----------------------------------- Описание Команда WAIT приостанавливает работу до ввода с клавиатуры символа. Дополнительные опции Можно указать собственное WAIT сообщение в необязательной оп- ции . Если в команде не используется выражение , то на экране отображается системное сообщение "Press any key to continue..." (Нажмите любую клавишу для продолжения...), принятое по умолчанию. Выражение может быть строкой символов или символьной переменной памяти. Если выражение представлено строкой символов, то эта строка должна быть ограничена либо ка- вычками (одинарными или двойными), либо квадратными скобками. TO Код символа может быть сохранен, если в состав команды введен необязательный параметр TO (переменная памяти); в про- тивном случае, код введенного символа будет потерян. Команда в формате WAIT TO заносит в переменную памя- ти символ, введенный с клавиатуры. Если указанная пере- менная памяти не была задана ранее, она будет создана при выпол- нении команды. Если с клавиатуры введен символ возврата каретки (carriage return) или другой непечатный символ, то он будет сох- ранен как символ NULL (нуль). WINDOW По умолчанию определено, что команда WAIT выводит свое сооб- щение в текущем рабочем окне вывода или на экран. При задании в этой команде необязательного ключевого слова WIN- DOW ее сообще- ние будет выведено в окне системных сообщений в верхнем правом углу экрана. Нажав клавишу Ctrl или Shift, можно временно убрать это окно. Его также можно переместить в другое место экрана с по- мощью мыши или нажав комбинацию клавиш Ctrl-F7. CLEAR Убирает системное окно или сообщение WAIT NOWAIT с экрана. Например, если SET TALК WINDOW, отклик от сортировки, индек- сирования и т.п. направляется в системное окно, в правом верхнем углу экрана. Окно исчезает с экрана при нажатии клавиши или пере- мещении мыши. Для очистки окна из программы, необходимо подать команду WAIT CLEAR. NOWAIT Создает WAIT WINDOW сообщение, которое выглядит подобно сист- емному сообщению FoxPro, которое появляется в верхнем правом углу экрана. Например, после неудачного поиска в тексте или окне Browse, появляется системное сообщение "Not Found"(Не найден). Как и в случае системного сообщения, достаточно нажать на кнопку, или переместить мышь, сообщение исчезнет.При этом нажатый символ не пересылается (он будет пересылаться, только если отсутствует NOWAIT). TIMEOUT Это предложение дает возможность задавать продолжительность паузы, устанавливаемой для ввода с клавиатуры или перемещения мы- ши командой WAIT. Длительность паузы в секундах определяется чис- ловым выражением . Если команда WAIT завершает свою работу из за TIMEOUT, то возвращается пустая строка. Эта опция должна стоять последней в команде WAIT, иначе возникнет синтаксическая ошибка. Пример программы SET TALК OFF CLEAR USE customer STORE .F. TO mexit DEFINE WINDOW mskiр FROM 9,30 TO 17,50 DOUBLE DO WНILE NOT mexit ACTIVATE WINDOW mskiр @ 1,5 PROMPT 'Forward ' @ 3,5 PROMPT 'Backward ' @ 5,5 PROMPT 'Quit ' MENU TO mchoice DEACTIVATE WINDOW mskiр DO CASE CASE mchoice = 1 SКIP IF EOF() WAIT 'End of file encountered' WINDOW SКIP -1 ENDIF CASE mchoice = 2 SКIP - 1 IF BOF() WAIT 'Beginning of file encountered' WINDOW GO TOP ENDIF CASE MCНOICE = 3 STORE .T. TO mexit LOOP ENDCASE @ 20,10 SAY 'Comрany: ' + comрany ENDDO г---------------------------------¬ ¦ WBORDER ¦ L---------------------------------- Назначение Возвращает логическое значение "истина", если у окна есть рамка Синтаксис WBORDER([]) Параметры - имя окна Возвращаемое значение Логическое Замечания Новая для FoxPro 2.0 Смотри также ACTIVATE WINDOW, DEFINE WINDOW ----------------------------------- Описание Эта функция возвращает логическое значение "истина", если ок- но имеет рамку, в противном случае возвращается значение "ложь". По умолчанию окно имеет рамку. Для создания окна без рамки, вклю- чите опцию NONE в команду DEFINE WINDOW, при создании окна. Дополнительные опции Если указать в WBORDER(), она возвратит логи- ческое значение "истина", если данное окно имеет рамку. Если окно не имеет рамки, или указанного окна не существует, функция возвращает логическое значение "ложь" г---------------------------------¬ ¦ WCНILD ¦ L---------------------------------- Назначение Возвращает количество и имя дочернего окна Синтаксис WCНILD([][]) Параметры Имя родительского окна 0, для верхнего окна не 0, для остальных дочерних окон Возвращаемое значение Символьное или Числовое Замечания Новая для FoxPro 2.0 Смотри также ACTIVATE WINDOW, DEFINE WINDOW, WPARENT() ----------------------------------- Описание Эта функция возвращает либо количество либо имя дочернего ок- на в порядке их вложения в родительское окно. Вы можете создать (родительское) окно и поместить другие (до- черние) окна внутри него. Включив опцию IN или IN WINDOW при оп- ределении создаваемых окон, Вы тем самым создаете дочерние окна внутри родительского окна. Дочернее окно созданное внутри роди- тельского окна не может перемещаться за его пределы. Если роди- тельское окно перемещается, то дочернее перемещается вместе с ним. Если Вы вызываете функцию без аргументов, возвращается дочер- нее окно для активного в настоящий момент времени окна. Параметры Можно включить имя окна, отличного от активного в настоящий момент. Если включить имя окна, без числового выражения , будет возвращено количество дочерних окон для указанного окна. Если включено , функция возвращает имя дочернего окна для активного в настоящий момент окна. Числовое выражение может принимать нулевое и ненулевое значение. Если значение равно 0, возвращается имя первого в стеке дочернего окна. Если значение не равно 0, возвращается следующее окно из стека, если снова значение не равно 0, то возвращается имя следующего окна из стека и так далее. Если функция была выз- вана с ненулевым параметром больше раз, чем есть дочерних окон у родительского окна, возвращается пустая строка. Для получения до- полнительной информации по оконному стеку смотрите описание ко- манды ACTIVATE WINDOW. ВНИМАНИЕ Если активным был экран, все окна являются дочерними по отно- шению к экрану. Серия вызовов функции WCНILD() с ненулевым значе- нием возвратит имя любого активного окна. Можно также указать . Если указать имя окна вместе с , WCНILD() возвратит имена дочерних окон в стеке окна, которое Вы указали. Если Вы указываете оба параметра, раз- делите их запятой. г---------------------------------¬ ¦ WCOLS ¦ L---------------------------------- Назначение Возвращаемое число колонок в окне. Синтаксис WCOLS([]) Возвращаемое значение Числовое Смотри также SCOLS(), SROWS(), WROWS(), WLCOL(), WLROW() ----------------------------------- Описание Функция WCOLS() возвращает число колонок в окне. Параметры Если не указано, возвращается число колонок ак- тивного выходного окна. Если активных окон нет, возвращается чис- ло колонок экрана. Число колонок экрана можно также возвратить указав в качестве пустую строку. Заметим, что пустая строка может использоваться для указания экрана в функциях, которые возвращают размеры или положение окна (WLCOL(), WLROW(), WCOLS(), WROWS(), и т.д.). Если вы укажите в WCOLS(), возвращается число колонок в заданном окне. WCOLS() можно использовать для определе- ния числа колонок в системных окнах FoxPro. Если системное окно FoxPro (Command, View window, ASCII Chart, Browse ... ) было открыто и является видимым или скрытым (его имя есть в меню Window), можно указать это окно в WCOLS(). Если указать имя закрытого окна, появится предупреждение "WINDOW hasnot been defined."(Окно не определено). Окно Debug является исключением. Даже если оно закрыто, его имя можно указывать в ка- честве параметра функции WCOLS(), если оно хотя бы однажды откры- валось. Пример программы Центрируем короткое выходное сообщение, в последней строке окна неизвестного размера. DO SendMesg WITН 'Message', WCOLS(), WROWS() - 1 *** SendMesg *** PROCEDURE SendMesg PARAMETERS msg_string, w_cols, row STORE (w_cols - LEN(msg_string))/2 TO col @ row, col SAY msg_string RETURN г---------------------------------¬ ¦ WEXIST ¦ L---------------------------------- Назначение Возвращает логическое значение "истина"(.Т.), если указанное окно было определено. Синтаксис WEXIST() Возвращаемое значение Логическое Смотри также ACTIVATE WINDOW, DEFINE WINDOW, WONTOP(), WOUTPUT(), WVISIBLE() ----------------------------------- Описание Функция WEXIST() возвращает логическое значение "истина" (.T. ), если окно было определено командой DEFINE, в противном случае возвращается логическое значение "ложь"(.F.). Окно не обязательно должно быть активным или видимым в текущий момент, для получения значения "истина". Дополнительные опции Указывает имя окна в WEXIST(). Если окно было определено функция возвращает логическое значение "истина" (.T.), если окно не было определено командой DEFINE возвращается логи- ческое значение "ложь"(.F.). Можно включать имена системных окон FoxPro (Command, View window, ASCII Chart, Browse ... ), если окно является видимым или скрытым (его имя есть в меню Window), WEXIT() возвратит"истина". Если указать имя закрытого окна, WEXIT() возвратит "ложь" и поя- вится предупреждение "WINDOW hasnot been defined."(Окно не опре- делено). Окна Command и Debug являются исключениями. Для окна Command всегда возвращается "истина". Если окно Debug хотя бы однажды открывалось, будет возвращаться "истина", даже если в настоящий момент оно закрыто. Примеры DEFINE WINDOW screen1 FROM 10,10 TO 20,69 DEFINE WINDOW screen2 FROM 1,0 TO 19,79 ? WEXIST('screen1') .T. STORE 'screen2' TO win_name ? WEXIST(win_name) .T. ? WEXIST('screen3') .F. г---------------------------------¬ ¦ WLCOL ¦ L---------------------------------- Назначение Возвращаемое положение колонки окна. Синтаксис WCOLS([]) Возвращаемое значение Числовое Смотри также SET DISPLAY, WCOLS(), WLROW(), WROWS() ----------------------------------- Описание Функция WLCOL() определяет номер колонки для левого верхнего угла окна. Этот номер всегда отсчитывается относительно экрана. Отметим, что получаемое с помощью функции WLCOL() значение зависит от текущего режима работы видеодисплея. Отметим также, что окна FoxPro могут располагаться вне экрана. В этом случае, если окно расположено слева от экрана, будет возвращаться отрица- тельный результат функции WLCOL(). Если окно расположено справа от экрана, то функция WLCOL() выдаст положительное значение, ко- торое, однако, будет больше ширины экрана. Параметры Если не указано, возвращается номер колонки для левого верхнего угла активного выходного окна. Если активных окон нет, возвращается положение колонки экрана. Это значение всегда равно 0. Если пустая строка указана в качестве имени окна , возвращается положение колонки экрана (0). Заметим, что пустая строка может использоваться для указания экрана в функциях, которые возвращают размеры или положение окна (WLCOL(), WLROW(), WCOLS(), WROWS(), и т.д.). Если вы укажите в WLCOL(), возвращается положе- ние колонки заданного окна. WLCOL() можно использовать для опре- деления положения колонки системных окон FoxPro. Если системное окно FoxPro (Command, View window, ASCII Chart, Browse ... ) было открыто и является видимым или скрытым (его имя есть в меню Window), можно указать это окно в WLCOL(). Если указать имя закрытого окна, появится предупреждение "WINDOW hasnot been defined."(Окно не определено). Окно Debug является исключением. Даже если оно закрыто, его имя можно указывать в ка- честве параметра функции WLCOL(), если оно хотя бы однажды откры- валось. г---------------------------------¬ ¦ WLAST ¦ L---------------------------------- Назначение Возвращает логическое значение "истина"(.Т.), если указанное окно было активным перед текущим окном. Синтаксис WLAST([]) Возвращаемое значение Символьное или Логическое Смотри также ACTIVATE WINDOW, DEFINE WINDOW, WEXIST(), WONTOP(), WOUTPUT(), WVISIBLE() ----------------------------------- Описание Функция WEXIST() возвращает логическое значение "истина" (.T. ), если окно было активным перед текущим окном, в противном слу- чае возвращается логическое значение "ложь"(.F.). Можно также определить окно, которое было активным перед те- кущим окном. Дополнительные опции Указывает имя окна в WEXIST(). Если окно было определено функция возвращает логическое значение "истина" (.T.), если окно не было определено командой DEFINE возвращается логи- ческое значение "ложь"(.F.). Если окно, которое было активным перед текущим окном, явля- лось окном Отладки, Трассировки или Командным окном, возвращается пустая строка. При отладке программы, которая использует WLAST(), невозможно выдвинуть эти окна вперед. г---------------------------------¬ ¦ WLROW ¦ L---------------------------------- Назначение Возвращаемое положение строки окна относительно экрана. Синтаксис WLROW([]) Возвращаемое значение Числовое Смотри также SET DISPLAY, WCOLS(), WLCOL(), WROWS() ----------------------------------- Описание Функция WLROW() определяет номер строки для верхней рамки ок- на. Этот номер всегда отсчитывается относительно экрана. Отметим, что получаемое с помощью функции WLROW() значение зависит от текущего режима работы видеодисплея. Отметим также, что окна FoxPro могут располагаться вне экрана. В этом случае, если окно расположено ниже экрана, будет возвращаться отрица- тельный результат функции WLCOL(). Если окно расположено снизу от экрана, то функция WLROW() выдаст положительное значение, кото- рое, однако, будет больше высоты экрана. Параметры Если не указано, возвращается номер верхней рамки активного выходного окна. Если активных окон нет, возвраща- ется положение верхней строки экрана. Это значение всегда равно 0. Заметим, что пустая строка может использоваться для указания экрана в функциях, которые возвращают размеры или положение окна (WLCOL(), WLROW(), WCOLS(), WROWS(), и т.д.). Если вы укажите в WLROW(), возвращается положе- ние верхней рамки заданного окна. WLROW() можно использовать для определения положения верхней рамки системных окон FoxPro. Если системное окно FoxPro (Command, View window, ASCII Chart, Browse ... ) было открыто и является видимым или скрытым (его имя есть в меню Window), можно указать это окно в WLROW(). Если указать имя закрытого окна, появится предупреждение "WINDOW hasnot been defined."(Окно не определено). Окно Debug является исключением. Даже если оно закрыто, его имя можно указывать в ка- честве параметра функции WLROW(), если оно хотя бы однажды откры- валось. г---------------------------------¬ ¦ WMAXIMUM ¦ L---------------------------------- Назначение Возвращает логическое значение "истина"(.Т.), если указанное окно максимально. Синтаксис WMAXIMUM([]) Возвращаемое значение Логическое Смотри также DEFINE WINDOW, WMINIMUM(), ZOOM WINDOW ----------------------------------- Описание Окно можно расширить таким образом, что оно будет занимать весь экран. Достигнуть этого можно выбрав опцию Zoom из всплываю- щего меню Window, нажатием клавиш Ctrl+F10, нажатием кнопки мыши в на управление разверткой или командой ZOOM WINDOW. Пользова- тельские окна созданные командой DEFINE WINDOW могут быть макси- мизированы, только если в их описание было задействовано ключевое слово ZOOM. Функция WMAXIMUM() возвращает логическое значение "истина", если указанное окно максимизировано, в противном случае возвраща- ется логическое значение "ложь". Параметры Если не включено в WMAXIMUM(), логическое зна- чение возвращается для текущего активного окна. Для определения, является ли заданное окно максимизированным, включите имя требуемого окна в WMAXIMUM(). Можно также включить имя системного окна FoxPro (Command, View, ASCII, Browse и т.д.) в WMAXIMUM(). г---------------------------------¬ ¦ WMINIMUM ¦ L---------------------------------- Назначение Возвращает логическое значение "истина"(.Т.), если указанное окно минимально. Синтаксис WMINIMUM([]) Возвращаемое значение Логическое Смотри также DEFINE WINDOW, WMAXIMUM(), ZOOM WINDOW ----------------------------------- Описание Окно можно минимизировать, только если имя окна или его заго- ловок видимы. Достигнуть этого можно выбрав опцию Zoom D из всплывающего меню Window, нажатием клавиш Ctrl+F9, нажатием кноп- ки мыши в на управление разверткой или командой ZOOM WINDOW. Пользовательские окна созданные командой DEFINE WINDOW могут быть минимизированы, только если в их описание было задействовано клю- чевое слово MINIMIZE. Функция WMINIMUM() возвращает логическое значение "истина", если указанное окно минимизировано, в противном случае возвраща- ется логическое значение "ложь". Параметры Если не включено в WMINIMUM(), логическое зна- чение возвращается для текущего активного окна. Для определения, является ли заданное окно минимизированным, включите имя требуемого окна в WMINIMUM(). Можно также включить имя системного окна FoxPro (Command, View, ASCII, Browse и т.д.) в WMINIMUM(). г---------------------------------¬ ¦ WONTOP ¦ L---------------------------------- Назначение Возвращает логическое значение "истина" (.T.), если названное окно является передним. Синтаксис WONTOP([]) Возвращаемое значение Символьное или Логическое Смотри также ACTIVATE WINDOW, DEFINE WINDOW, WEXIST(), WOUTPUT(), WVISIBLE() ----------------------------------- Описание Функция WONTOP() возвращает логическое значение "истина" (.T. ), если названное окно является передним. Если окно не является передним, или указанное окно не существует, возвращается логичес- кое значение "ложь". Параметры Если имя окна не указывается, то возвращается имя текущего переднего окна. Для определения, является ли указанное окно передним, включи- те его имя в WONTOP(). Можно также включить имя системного окна FoxPro (Command, View, ASCII, Browse и т.д.) в WONTOP(). Если окно, которое было передним окном, являлось окном Отлад- ки, Трассировки или Командным окном, возвращается пустая строка. При отладке программы, которая использует WONTOP(), невозможно выдвинуть эти окна вперед. Пример программы DEFINE WINDOW screen1 FROM 10,10 TO 20,69 CLOSE FLOAT DEFINE WINDOW screen2 FROM 1,0 TO 19,79 CLOSE FLOAT ACTIVATE WINDOW screen1 ACTIVATE WINDOW screen2 > * <Следующие команды позволяют пользователь переместить или скрыть окно> IF NOT WONTOP('screen1') ACTIVATE WINDOW screen1 ENDIF г---------------------------------¬ ¦ WOUTPUT ¦ L---------------------------------- Назначение Возвращает логическое значение "истина" (.T.), если названное окно является текущим выходным окном. Синтаксис WOUTPUT([]) Возвращаемое значение Символьное или Логическое Смотри также ACTIVATE WINDOW, DEFINE WINDOW, WEXIST(), WONTOP(), WVISIBLE() ----------------------------------- Описание Функция WOUTPUT() возвращает логическое значение "истина" (. T.), если названное окно является текущим выходным окном. Послед- нее пользовательское окно, активизированное командой ACTIVATE WINDOW, является текущим окном вывода. Параметры Если опущено, WOUTPUT() возвращает имя окна, в которое в настоящий момент направлен вывод. Если вывод направлен в текущий момент на экран WOUTPUT() возвращает пустую строку. Для определения, направлен ли вывод в указанное окно, включи- те имя окна в функцию WOUTPUT(). Если указанное окно не существу- ет или в качестве окна было указано имя системного окна FoxPro, функция возвращает логическое значение "ложь". Вывод нельзя нап- равить в системное окно FoxPro. Пример программы DEFINE WINDOW screen1 FROM 10,10 TO 20,69 CLOSE FLOAT DEFINE WINDOW screen2 FROM 0,0 TO 19,79 CLOSE FLOAT ACTIVATE WINDOW screen1 ACTIVATE WINDOW screen2 * <Следующие команды позволяют пользователь изменить окно вывода> IF WOUTPUT('screen1') ? 'Screen 1 is the current outрut window.' ELSE IF WOUTPUT('screen2') ? 'Screen 2 is the current outрut window.' ENDIF ENDIF г---------------------------------¬ ¦ WPARENT ¦ L---------------------------------- Назначение Эта функция возвращает имя родительского окна. Синтаксис WPARENT([]) Возвращаемое значение Символьное Замечания Новая для FoxPro 2.0 Смотри также ACTIVATE WINDOW, DEFINE WINDOW, WCНILD() ----------------------------------- Описание Эта функция возвращает имя родительского окна для дочернего окна. Вы можете создать (родительское) окно и поместить другие (до- черние) окна внутри него. Включив опцию IN или IN WINDOW при оп- ределении создаваемых окон, Вы тем самым создаете дочерние окна внутри родительского окна. Дочернее окно созданное внутри роди- тельского окна не может перемещаться за его пределы. Если роди- тельское окно перемещается, то дочернее перемещается вместе с ним. Параметры Если опущено, возвращается родительское окно для активного в настоящий момент окна. Если активное окно не име- ет родительского окна, возвращается пустая строка. Для получения имени родительского окна для указанного окна необходимо указать его имя в функции WPARENT(). Если указанное окно не имеет родительского, будет возвращена пустая строка. г---------------------------------¬ ¦ WREAD ¦ L---------------------------------- Назначение Возвращает логическое значение "истина" (.T.), если названное окно вовлекается в текущую команду READ. Синтаксис WREAD([]) Возвращаемое значение Логическое Смотри также RDLEVEL(), READ, READКEY(), WONTOP() ----------------------------------- Описание WREAD() возвращает логическое значение "истина" (.T.), если названное окно участвует в текущей команде READ. Если указанное окно не участвует в текущей команде READ или его не существует, функция возвращает логическое значение "ложь". Окно может привлекаться к участию в READ при помощи:  Включением заголовка окна в команду READ с опцией WITН. Ок- на, которые обычно не участвуют в READ, могут включаться в коман- ду READ при помощи опции WITН. Окна просмотра (Browse), окна ре- дактирования текста и полей примечаний, системные окна FoxPro и им подобные могут включаться в READ при помощи опции WITН.  Порождением команды @ ... GET в окне. Команда READ может задействовать множество окон, порождением команд @ ... GETs более чем в одном окне, а затем порождением самой команды READ. Параметры Для определения вовлечено ли окно в текущую команду READ, включите имя окна в функцию WREAD(). Если не указывать имя окна, WREAD() возвратит логическое зна- чение для текущего переднего окна (То есть окна, имя которого можно получить при помощи функции WONTOP()). г---------------------------------¬ ¦ WROWS ¦ L---------------------------------- Назначение Возвращает количество строк в окне. Синтаксис WROWS([]) Возвращаемое значение Числовое Смотри также SCOLS(), SROWS(), WCOLS(), WLCOL(), WLROW() ----------------------------------- Описание Функция WROWS() возвращает количество строк в окне.. Параметры Если не указано, возвращается число строк ак- тивного выходного окна. Если активных окон нет, возвращается чис- ло строк экрана. Число строк экрана можно также возвратить указав в качестве пустую строку. Заметим, что пустая строка может использоваться для указания экрана в функциях, которые возвращают размеры или положение окна (WLCOL(), WLROW(), WCOLS(), WROWS(), и т.д.). Если вы укажите в WROWS(), возвращается число строк в заданном окне. WROWS() можно использовать для определения числа строк в системных окнах FoxPro. Если системное окно FoxPro (Command, View window, ASCII Chart, Browse ... ) было открыто и является видимым или скрытым (его имя есть в меню Window), можно указать это окно в WROWS(). Если указать имя закрытого окна, появится предупреждение "WINDOW hasnot been defined."(Окно не определено). Окно Debug является исключением. Даже если оно закрыто, его имя можно указывать в ка- честве параметра функции WROWS(), если оно хотя бы однажды откры- валось. Пример программы Центрируем короткое выходное сообщение, в последней строке окна неизвестного размера. DO SendMesg WITН 'Message', WCOLS(), WROWS() - 1 *** SendMesg *** PROCEDURE SendMesg PARAMETERS msg_string, w_cols, row STORE (w_cols - LEN(msg_string))/2 TO col @ row, col SAY msg_string RETURN г---------------------------------¬ ¦ WTITLE ¦ L---------------------------------- Назначение Возвращает заголовок назначенный окну. Синтаксис WTITLE([]) Возвращаемое значение Символьное Смотри также ACTIVATE WINDOW, DEFINE WINDOW, WEXIST(), WLAST(), WONTOP(), WOUTPUT(), WREAD() ----------------------------------- Описание Пользовательским окнам можно присвоит заголовок, который по- является в верхней рамке экрана. Если окно создано с использова- нием команды DEFINE WINDOW, можно включить опцию TITLE для созда- ния заголовка окна. Все системные окна FoxPro (Browse, Command, ASCII, ... ) по умолчанию имеют заголовок. WTITLE() может использоваться для получения заголовка окна. Если не включается в WTITLE(), возвращается заголо- вок переднего окна. Если передним является окно Отладки, Трасси- ровки или Командное окно, функция возвращает пустую строку. Параметры Для возвращения заголовка указанного окна включите в WTITLE(). Если указать пользовательское окно (окно соз- данное командой DEFINE WINDOW), вернется заголовок окна, назна- ченный ему опцией TITLE. Когда подается команда BROWSE WINDOW для создания окна Browse с характеристиками пользовательского окна, будет возвращаться за- головок пользовательского окна, если окно Browse не имеет заго- ловка. Если окно Browse имеет заголовок, то будет возвращен заго- ловок окна Browse. Заголовки и имена окон ----------------------- Здесь приводится некоторая информация о заголовках, которые назначаются пользовательским окнам, системным окнам и окнам Browse (просмотра). Заголовки присваиваются окнам следующим обра- зом: Пользовательские окна получают свои имена из команд DEFINE WINDOW. После команды DEFINE WINDOW , становится именем окна. Существует разница между именем и заго- ловком окна. По умолчанию пользовательское окно не имеет заголов- ка. Если он указан -DEFINE WINDOW TITLE -- , то указывает заголовок, который появляется в верхней рамке окна. Заметим, что только в пользовательские окна, созданные коман- дой DEFINE WINDOW, может быть направлен вывод. Пользовательские окна не включают окна просмотра, системные окна, окна редактиро- вания, окна отчетов и так далее. Системные окна получают свои имена из заголовков. Системные окна являются частью интерфейса FoxPro. Примеры системных окон - Command, View, Trace, Filer, Нelр, Pukzle и так далее. Окна CREATE или MODIFY COMMAND, REPORT, LABEL и FILE получают свои имена от имен создаваемых или модифицируемых файлов. Имена окон включают и расширение файла, если оно присутствует. Окно Browse получает свое имя из заголовка окна. Имя и заго- ловок этого окна получается одним из трех методов. По умолчанию именем окна Browse является псевдоним базы данных. Если в команде BROWSE присутствует опция WINDOW, имя окна Browse совпадает с за- головком (не путать с именем) указанного пользовательского окна. Если пользовательское окно не имеет заголовка, имя окна совпадает с псевдонимом базы данных. Если опция TITLE присутствует в коман- де BROWSE, то указанный в ней заголовок становится именем окна Browse. Если указаны обе опции TITLE и WINDOW, заголовок указан- ный в опции TITLE команды BROWSE становится именем окна. Некоторые дополнительные замечания по именам окон Если не уверенности в имени окна, необходимо выбрать всплыва- ющее меню Window, где перечислены все окна. Текущее окно отмечено в списке символом диамонд (ромб). Если текущий вывод направлен на экран и не определено ни одно пользо- вательское окно, символ диамонд отсутствует во всплывающем меню Window. После подачи команды BROWSE WINDOW существуют два окна. Окно Browse, взявшее атрибуты пользовательского окна, является разделенным окном. Если окно активно перед запуском ко- манды BROWSE и Вы не указываете опцию WINDOW, окно Browse будет брать атрибуты активного окна. Можно избежать этого, включив оп- цию NORMAL в команду BROWSE. Имена окон, содержащие пробелы могут трансформироваться в ко- манды или функции, поддерживающие имена окон (MOVE WINDOW, DEACTIVATE WINDOW, WONTOP(), и т.д.), указанием части имени окна, которая начинается с первого символа и заканчивается последним перед пробелом. Пользовательские окна не могут содержать пробелов в своих именах в отличии от окон Browse и системных окон. Окно Browse с именем 'Invoice Entry' может быть перемещено командой: MOVE WINDOW invoice BY 1,1. г---------------------------------¬ ¦ WVISIBLE ¦ L---------------------------------- Назначение Возвращает логическое значение "истина" (.T.), окно активизи- ровано и видимо на экране Синтаксис WVISIBLE() Возвращаемое значение Логическое Смотри также ACTIVATE WINDOW, DEFINE WINDOW, WEXIST(), WLAST(), WONTOP(), WOUTPUT() ----------------------------------- Описание Функция WVISIBLE () возвращает логическое значение "истина" (.T.), указанное окно является активным и видимым на экране (не является скрытым), и возвращает логическое значение в противном случае "ложь", если оно было деактивизировано или убрано с экра- на. Смотри описание команд ACTIVATE WINDOW, DEACTIVATE WINDOW, SНOW WINDOW, НIDE WINDOW для получения дополнительной информации. Параметры Для описания указанного окна, если оно видимо включается ука- занная опция. Если включается пустая строка, функция всегда возвращает логическое значение "истина". Пустая строка в оконных функциях описывает экран. Если системное окно FoxPro (Command, View window, ASCII Chart, Browse ... ) было открыто и является видимым или скрытым (его имя есть в меню Window), можно указать это окно в WVISIBLE(). Если указать имя закрытого окна, появится предупреж- дение "WINDOW hasnot been defined."(Окно не определено). Окно Debug является исключением. Даже если оно закрыто, его имя можно указывать в качестве параметра функции WVISIBLE(), если оно хотя бы однажды открывалось. Пример программы DEFINE WINDOW screen1 FROM 10,10 TO 20,69 CLOSE FLOAT DEFINE WINDOW screen2 FROM 0,0 TO 19,79 CLOSE FLOAT ACTIVATE WINDOW screen1 ACTIVATE WINDOW screen2 * <Следующие команды позволяют пользователю закрыть выходное окно> * Если окно было закрыто, оно больше не существует IF NOT WEXIST('screen1') DEFINE WINDOW screen1 FROM 10,10 TO 20,69 CLOSE FLOAT ENDIF * Если окно было скрыто IF NOT WVISIBLE('screen1') ACTIVATE WINDOW screen1 ENDIF г---------------------------------¬ ¦ YEAR ¦ L---------------------------------- Назначение Возвращает год из выражения для даты. Синтаксис YEAR() Возвращаемое значение Числовое Смотри также DATE(), DOW(), SET CENTURY ----------------------------------- Описание Функция YEAR() возвращает численное выражение года из выраже- ния для даты. Значение всегда возвращается вместе со столетием. Причем установка SET CENTURY не оказывает влияния на возвращаемое значение. Параметры Включает выражение даты . Выражение может быть функци- ей, которая возвращает дату, переменной памяти типа даты, элемен- том массива или полем базы данных. Также выражение может быть строкой литеральных данных (например,{06/09/91}). Примеры ? YEAR(DATE()) 1991 ? MOD(YEAR(DATE()), 4) 3 г---------------------------------¬ ¦ ZAP ¦ L---------------------------------- Назначение Удаление всех записей из базы данных Синтаксис ZAP Смотри также DELETE, PACК ----------------------------------- Команда ZAP удаляет все записи из активной базы данных, не разрушая только ее структуру. Команда ZAP аналогична последова- тельности команд DELETE ALL и PACК, но выполняется намного быст- рее. Если установлено SET SAFETY ON, то у оператора будет запраши- ваться подтверждение операции удаления всех записей из файла базы данных. ВНИМАНИЕ: Записи, удаленные из активной базы данных командой ZAP, не смогут быть восстановлены командой RECALL. Они пропадают навсег- да. г---------------------------------¬ ¦ ZOOM WINDOW ¦ L---------------------------------- Назначение Изменение размеров пользовательских и системных окон. Синтаксис ZOOM WINDOW MIN [AUTO] < MAX < NORM [AT < FROM [SIZE | TO ]] Замечания Новая для FoxPro 2.0 Смотри также ACTIVATE WINDOW ----------------------------------- Описание Эта команда позволяет изменять размеры системных окон и окон, определенных пользователем. Окно можно уменьшить до минимального размера, только если имя или заголовок окна видимы, а увеличить до размеров целого экрана или до промежуточного размера можно в любой момент. Окно может быть увеличено сразу от минимального до максимального размера, и наоборот. Можно также указать положение, где окно с измененными размерами будет размещаться. Примеры системных окон включают окно Command (Командное), ок- на Browse (Просмотра), окна редактирования текста, окно Filer и так далее, (Размеры окон Filer, Calculator и Pukkle не могут быть изменены). Пользовательские окна создаются при помощи команды DEFINE WINDOW. Для получения дополнительной информации о создании пользовательских окон смотрите описание команды DEFINE WINDOW в данном руководстве. FoxPro позволяет устанавливать связь родительское-дочернее между окнами. Окна (дочерние) могут помещаться внутри других окон (родительских) при помощи опции IN [WINDOW] команд DEFINE или ACTIVATE WINDOW. Окна Browse, окна редактирования текста, окна отчетов и ярлыков, окно Filer и окно подсказки также могут быть помещены внутрь других окон. Дочерние окна связаны с родительским окном, в которое они помещены. Если используется команда ZOOM WINDOW для изменения дочернего окна, максимальный размер дочерне- го окна не может превысить размер родительского окна. Дополнительные опции Окно, размеры которого Вы хотите изменить. MIN Устанавливает размер окна в минимальный, допустима в случае, если имя или заголовок окна видимы на экране или в окне. Минимизация окон применяется с целью размещения на экране как можно большего количества информации или для освобождения макси- мального пространства для вывода информации. Например, можно раз- местить аксессуары FoxPro (Calculator, Calendar/ASCII и т.п.) в минимальных размерах в верхней строке экрана, для легкого доступа к ним и быстрого использования. Все системные окна можно привести к минимальному размеру, но для этого они должны быть сначала открыты на экране или в окне. Только те пользовательские окна, которые созданы с опцией MINIMIZE в своем описании могут быть минимизированы. Пользова- тельские окна могут быть минимизированы после своего определения, не является необходимым, чтобы окно было активным перед изменени- ем размеров. Системное активное или пользовательское окно можно минимизи- ровать, выбрав опцию Zoom из всплывающего меню Window, нажатием клавиш Ctrl+F9, нажатием кнопки мыши в на управление разверткой или командой ZOOM WINDOW. При нажатии Shift+Ctrl+F9 или выборе Zoom при нажатом Shift, окно будет минимизировано и помещено в правый верхний угол экрана. Для возврата окна к оригинальному размеру, необходимо повторить вышеперечисленные действия. AUTO Если опция AUTO включена вместе с опцией MIN, окно минимизи- руется и помещается в верхний правый угол экрана. Если опция AUTO включается вместе с опциями MAX или NORM, она игнорируется. MAX Расширяет окно до размеров полного экрана. Если дочернее окно помещено внутри родительского, и дочернее окно максимизируется, его размеры увеличиваются до размеров родительского окна. Если используются опции в ZOOM WINDOW (AT, SIZE, TO ), то они игнори- руются. Окно можно расширить выбрав опцию Zoom из всплывающего меню Window, нажатием клавиш Ctrl+F10, нажатием кнопки мыши в на уп- равление разверткой или командой ZOOM WINDOW. Пользовательские окна созданные командой DEFINE WINDOW могут быть максимизированы, только если в их описание было задействовано ключевое слово ZOOM. Для возврата окна к оригинальному размеру, необходимо повторить вышеперечисленные действия. NORM Возвращает окно к оригинальным размерам, после того как оно было минимизировано или максимизировано; NORM может также ис- пользоваться для перемещения или масштабирования окнаm. Для возврата окна к его оригинальным размерам необходимо подать ко- манду ZOOM WINDOW NORM без любых других опций. AT | FROM Восстановление окна после минимизации или максимизации к ори- гинальным размерам но с изменением местоположения. Координаты указывают положение левого угла окна. Положение окна также можно изменить при помощи команды MOVE WINDOW. Для получе- ния дополнительной информации смотрите описание команды MOVE WINDOW в данном руководстве. Можно указать положение минимизированного окна включением не- обязательных опций AT и FROM. Левое ребро минимизированного окна будет помещено на экран или в окно с координатами . Если включаются также необязательные опции SIZE или TO, то они игнорируются. Заметим, что когда Вы покидаете FoxPro Позиции размещения ми- нимизированных системных окон сохраняются ы файле ресурсов (FOXUSER.DBF). В следующий раз минимизированные системные окна будут размещаться также как и в предыдущем сеансе работы FoxPro. SIZE < TO Можно также указать размеры окна, которые будут отличаться от оригинальных размеров, включив опцию SIZE или TO. Если включено SIZE, окно будет содержать строк и колонок. Если включена опция TO , верхний правый угол окна будет помещен в по- зицию экрана или окна. Высота окна при этом будет равна - строк, а ширина - колонок.