Отображает поля для редактирования.
EDIT [FIELDS FieldList] [Scope] [FOR lExpression1] [WHILE lExpression2] [FONT cFontName[, nFontSize [, nFontCharSet]]] [STYLE cFontStyle] [FREEZE FieldName] [KEY eExpression1[, eExpression2]] [LAST | NOINIT] [LPARTITION] [NAME ObjectName] [NOAPPEND] [NOCAPTION] [NODELETE] [NOEDIT | NOMODIFY] [NOLINK] [NOMENU] [NOOPTIMIZE] [NORMAL] [NOWAIT] [PARTITION nColumnNumber [LEDIT] [REDIT]] [PREFERENCE PreferenceName] [REST] [SAVE] [TIMEOUT nSeconds] [TITLE cTitleText] [VALID [:F] lExpression3 [ERROR cMessageText]] [WHEN lExpression4] [WIDTH nFieldWidth] [WINDOW WindowName1] [IN [WINDOW] WindowName2 | IN SCREEN [COLOR SCHEME nSchemeNumber] |
Параметры
- FIELDS FieldList
-
Задает поля, которые появляются в окне редактирования. Поля отображаются в порядке, определенном в списке FieldList. В этот список можно включать поля из других связанных таблиц. В таких случаях перед именем поля нужно ставить псевдоним соответствующей таблицы и точку.
Если предложение FIELDS опущено, отображаются все поля таблицы в том порядке, в каком они фигурируют в структуре таблицы.
Список полей также может содержать любую комбинацию полей или вычисляемых полей, в том числе полей из таблиц, открытых в других рабочих областях. Список полей имеет следующий синтаксис:
Copy Code
FieldName1 [:R] [:nColumnWidth] [:V = lExpression1 [:F] [:E = cMessageText]] [:P = cFormatCodes] [:B = eLowerBound, eUpperBound [:F]] [:H = cHeadingText] [:W = lExpression2] [, FieldName2 [:R]...]
Вычисляемые поля
В списке полей можно задавать операторы для создания вычисляемых полей. Вычисляемое поле содержит данные, созданные с помощью выражения и доступные только для чтения. Это выражение может иметь любой вид, но оно должно быть допустимым выражением Visual FoxPro.
Оператор, используемый для создания вычисляемого поля, имеет следующий синтаксис:
CalculatedFieldName = eExpression
В следующем примере создается вычисляемое поле location
:
![]() | |
---|---|
CLOSE DATABASES OPEN DATABASE (HOME(2) + 'data\testdata') USE customer && Open customer table EDIT FIELDS location = ALLTRIM(city) + ', ' + country |
В состав списка полей предложения FIELDS может входить восемь опций, которые обеспечивают специальные виды обработки для полей, отображаемых в окне редактирования.
- : nColumnWidth
-
Задает размер изображения для поля в столбцах. Значение :nColumnWidthне влияет на размер поля в таблице, а лишь изменяет способ изображения поля в окне редактирования.
- :R
-
В следующем примере открывается окно редактирования с полями
cust_id
иcompany
s. Полеcust_id
доступно только для чтения и не может быть изменено.Copy Code
CLOSE DATABASES OPEN DATABASE (HOME(2) + 'data\testdata') USE customer && Open customer table EDIT FIELDS cust_id:R, company
- :V = lExpression1
-
Задает опцию проверки, в соответствии с которой в окне редактирования выполняется проверка достоверности данных на уровне поля. Если выражение lExpression1 имеет значение "истина" (.T.) в момент выведения курсора из данного поля, то данные, записанные в это поле, считаются правильными и курсор переходит в следующее поле.
Если выражение lExpression1 имеет значение "ложь" (.F.), введенные данные считаются некорректными, курсор остается в поле и выдается сообщение об ошибке. Если значение lExpression1 равно 0, введенные данные также считаются некорректными и курсор остается в поле, но сообщение об ошибке не выдается.
По умолчанию выражение lExpression1 вычисляется только при попытке модифицировать поле. Чтобы выполнять принудительную проверку, задайте опцию :F.
Опция :E позволяет вам выдавать собственное сообщение об ошибке.
Опция проверки не действует для memo-полей.
- :F
-
Задает опцию форсированной проверки достоверности, которая определяет, когда должно вычисляться выражение опции проверки (lExpression1) при выведении курсора из поля или при активизации другого окна. Если опция :F не задана, lExpression1 будет вычисляться только при внесении изменений в поле. Если опция :F задана, lExpression1 вычисляется даже тогда, когда поле не изменяется.
- :E = cMessageText
-
Отображает сообщение об ошибке cMessageText вместо системного сообщения, выдаваемого по умолчанию.
Если выражение проверки достоверности :V = lExpression1 имеет значение "истина" (.T.), курсор выходит из поля без проблем. Если это выражение имеет значение "ложь" (.F.), курсор остается в поле и выдается сообщение об ошибке.
Если значение выражения проверки достоверности :V = lExpression1 равно 0, сообщение не выдается и курсор остается в данном поле. Это дает вам возможность выдавать собственные сообщения об ошибках в программах проверки достоверности.
Сообщение об ошибке выдается только в том случае, если установка SET NOTIFY имеет значение ON. Если действует установка SET BELL ON, раздается звуковой сигнал.
В следующем примере открывается таблица
products
и отображаются поляproduct_id
иprod_name
. Чтобы выполнить проверку достоверности поляproduct_id
, введите в него значение, превышающее 100.Опция :V представляет критерий достоверности. Опция :F форсирует проверку достоверности, чтобы она производилась независимо от того, изменялись ли данные. Опция :E заменяет системное сообщение об ошибке Visual FoxPro пользовательским сообщением.
В Visual FoxProсообщение об ошибке выдается в строке состояния внизу основного окна Visual FoxPro.
Чтобы закрыть окно редактирования, нажмите клавишу Esc.
Copy Code
CLOSE DATABASES OPEN DATABASE (HOME(2) + 'data\testdata') USE products && Open products table IF _WINDOWS OR _MAC SET STATUS BAR ON ENDIF USE products EDIT FIELDS in_stock :V = in_stock < 100 ; :F ; :E = 'The stock amount must be less than 100'
- :P = cFormatCodes
-
Задает опцию шаблона, которая позволяет создать шаблон редактирования в виде кодов cFormatCodes управляющих отображением и вводом данных для каждого поля в окне редактирования.
Подробнее о применении шаблонов с кодами редактирования смотрите описание свойств Formaty и InputMask.
В следующем примере опция шаблона использована для того, чтобы разрешить ввод в поле
unit_price
только числовых данных определенного формата:Copy Code
CLOSE DATABASES OPEN DATABASE (HOME(2) + 'data\testdata') USE products && Open products table EDIT FIELDS unit_price :P = '99,999.99'
- :B = eLowerBound, eUpperBound[:F]
-
Задает набор граничных значений для данных. Выражения границ eLowerBound и eUpperBound должны иметь тот же тип, что и поле; в качестве этих выражений нельзя задавать пользовательские функции. Если введенные данные не попадают в диапазон между eLowerBound и eUpperBound, выдается системное сообщение, содержащее диапазон, который следует соблюдать.
По умолчанию введенные данные проверяются на нарушение граничных значений только при внесении изменений в содержимое поля. Чтобы форсировать проверку соблюдения граничных значений, задайте опцию принудительной проверки достоверности (:F).
В следующем примере определяется допустимый диапазон значений в поле
in_stock
от 1 до 100. Чтобы закрыть окно редактирования, нажмите клавишу Esc.Copy Code
CLOSE DATABASES OPEN DATABASE (HOME(2) + 'data\testdata') USE products && Open products table EDIT FIELDS in_stock :B = 1, 100 :F
- :H = cHeadingText
-
Задает опцию заголовка (:H), которая позволяет вам заменять имена поля, используемые по умолчанию, собственными заголовками с текстом cHeadingText. По умолчанию имена полей в окне редактирования ставятся левее самих полей.
В следующем примере для отображаемых полей задаются заголовки, определяемые пользователем.
Copy Code
CLOSE DATABASES OPEN DATABASE (HOME(2) + 'data\testdata') USE products && Open products table EDIT FIELDS prod_name :H = 'Product Name:', ; unit_price :H = 'Price per Unit:'
- :W = lExpression2
-
Задает опцию WHEN, с помощью которой можно запретить вводить курсор в поле, в зависимости от значения логического выражения lExpression. Опция (:W) вычисляет значение lExpression. Если lExpression2 имеет значение "ложь" (.F.), вы не сможете вводить курсор в поле. Если lExpression2 меет значение "истина" (.T.), курсор можно вводить в поле. Выражение lExpression2 поддерживает пользовательские функции.
Если текущее поле помечено как доступное только для чтения, запрещается вводить курсор в любое поле. Это имеет место только в том случае, когда каждое поле содержит предложение WHEN с выражением, имеющим значение "ложь".
- Scope
-
Задает диапазон записей, отображаемых в окне редактирования. Диапазон определяется следующими предложениями: ALL, NEXT nRecords, RECORD nRecordNumber, и REST. Команды, использующие предложение Scope , воздействуют только на таблицу в активной рабочей области. По умолчанию областью действия команды EDIT являются все записи (предложение ALL).
Подробнее о предложениях диапазона смотрите тему Выражение Scope.
- FOR lExpression1
-
Задает отображение в окне редактирования только записей, удовлетворяющих логическому условию lExpression1 Это позволяет отфильтровывать ненужные записи.
Технология Rushmore оптимизирует запрос EDIT FOR, если lExpression1 является оптимизируемым выражением. В целях достижения наилучшей производительности используйте в предложении FOR оптимизируемое выражение.
Для получения дополнительной информации, смотрите Команда SET OPTIMIZE и Использование оптимизации запросов Rushmore для ускорения доступа к данным.
- WHILE lExpression2
-
Задает условие, в соответствии с которым записи отображаются в окне редактирования, пока логическое выражение lExpression2 остается истинным (.T.).
- FONT cFontName[, nFontSize [, nFontCharSet]]
-
Задает шрифт окна редактирования и размер шрифта. Символьное выражение cFontName содержит имя шрифта, а числовое выражение nFontSize задает размер шрифта. Вы можете определить языковой скрипт с nFontCharSet. Смотрите функцию GETFONT( ) для получения списка доступных языковых значений скрипта.
Например, следующее предложение задает 16-пунктовый шрифт Courier для полей, отображенных в окне редактирования:
Copy Code
FONT 'Courier',16
Если вы задали предложение FONT, опустив размер шрифта nFontSize, в окне редактирования используется размер 10 пунктов.
Если предложение FONT опущено, используется 8-пунктовый шрифт MS Sans Serif. Если заданный шрифт отсутствует, его заменяет шрифт с похожими характеристиками.
- STYLE cFontStyle
-
Задает стиль шрифта для окна редактирования в Visual FoxPro. Если предложение STYLE опущено, используется стиль Normal (нормальный).
Если заданный стиль шрифта отсутствует, его заменяет стиль с похожими характеристиками.
Символ Стиль шрифта B
Bold (Полужирный)
I
Italic (Курсив)
N
Normal (Нормальный)
O
Outline (Контурный)
Q
Opaque (Непрозрачный)
S
Shadow (Затененный)
-
Strikeout (Перечеркнутый)
T
Transparent (Прозрачный)
U
Underline (Подчеркнутый)
Можно указать сразу несколько символов, задав комбинацию стилей. В следующем примере открывается окно редактирования, в котором используется шрифт с подчеркиванием:
Copy Code
CLOSE DATABASES OPEN DATABASE (HOME(2) + 'data\testdata') USE customer && Opens customer table IF _WINDOWS EDIT FIELDS contact FONT 'System', 15 STYLE 'NU' ENDIF IF _MAC EDIT FIELDS contact FONT 'Geneva', 14 STYLE 'NU' ENDIF
- FREEZE FieldName
-
Разрешает вносить изменения только в одно поле в окне редактирования ѕ в поле FieldName. Остальные поля только отображаются, их нельзя редактировать.
- KEY eExpression1[, eExpression2]
-
Ограничивает диапазон записей, отображаемых в окне редактирования. В предложении KEY можно задать значение ключа индекса (eExpression1) или диапазон значений ключа (eExpression1 , eExpression2) для записей, отображаемых в окне редактирования. Таблица должна быть индексирована, и значение (или значения) ключа индекса, указанное в предложении KEY, должно быть того же типа, что и выражение индекса в главном файле индекса или в главном теге.
В следующем примере задано отображение в окне редактирования только тех записей, для которых почтовые коды попадают в диапазон от 10,000 до 30,000 :
Copy Code
CLOSE DATABASES OPEN DATABASE (HOME(2) + 'data\testdata') USE customer && Open customer table SET ORDER TO postalcode EDIT KEY '10000', '30000'
- LAST | NOINIT
-
Сохраняет все изменения, внесенные в конфигурацию окна редактирования. юда относятся изменения в списке полей, в размерах каждого поля, в позиции и размерах окна редактирования; все эти изменения записываются в файл FoxUser.dbf. Подробнее об этом файле смотрите Команда SET RESOURCE.
Если команда EDIT выдана с предложением LAST, окно редактирования открывается в той конфигурации, которая была сохранена последней в файле FoxUser.dbf. Тем самым восстанавливается предыдущая конфигурация окна редактирования, созданная последней командой EDIT. Если последний раз вы выдавали команду EDIT из окна команд с длинным списком предложений, то, чтобы не набирать все это еще раз, выдайте EDIT LAST.
Если вы выходите из сеанса редактирования, нажав клавиши CTRL+Q, то все изменения, внесенные в конфигурацию окна редактирования в ходе текущего сеанса, будут потеряны.
- LPARTITION
-
Помещает курсор в первое поле левого раздела окна редактирования. Окно редактирования можно с помощью предложения PARTITION разбить на два раздела ѕ левый и правый. По умолчанию курсор при открытии окна редактирования помещается в первое поле правого раздела.
Если указать опцию LPARTITION, не задав предложение PARTITION, курсор будет помещен в первое поле правого раздела окна редактирования.
- NAME ObjectName
-
Создает ссылку на окно редактирования как на объект, что позволяет манипулировать этим окном, используя объектно-ориентированные свойства элемента управления Grid.
Подробнее об объектно-ориентированном программировании в Visual FoxPro смотрите Объектно-ориентированное программирование. Подробнее о свойствах элемента управления Grid, которые можно задать для окна редактирования, созданного с помощью предложения NAME, смотрите тему Элемент управления Grid.
- NOAPPEND
-
Запрещает пользователю добавлять записи в таблицу, нажимая клавиши CTRL+Y или выбирая команды Append Mode из меню View.
Note
Предложение NOAPPEND не помешает добавлять запись из программы (созданной с помощью предложений VALID, WHEN или команды ON KEY LABEL), когда вы находитесь в окне редактирования.
- NOCAPTION
-
Определяет, что всегда для заголовков столбца будут использовать имена полей таблицы или представления, даже когда база данных содержит дружественный заголовок для таблицы. Этот пункт применяется только к таблицам или представлениям в базе данных.
- NODELETE
-
Не разрешает помечать записи на удаление в окне редактирования. По умолчанию запись можно пометить на удаление, нажав клавиши CTRL+T, выбрав в меню Table команду Toggle Deletion Mark или щелкнув самый левый столбец этой записи.
Note
Предложение NODELETE не помешает пометить запись на удаление в программе (созданной с помощью предложений VALID, WHEN или команды ON KEY LABEL), когда вы находитесь в окне редактирования.
- NOEDIT | NOMODIFY
-
Не разрешает пользователю модифицировать таблицу. Предложения NOEDIT и NOMODIFY идентичны. Если вы задали какое-либо из них, вы можете просматривать таблицу и вести в ней поиск, но не редактировать. Впрочем, вы также можете добавлять и удалять записи.
- NOLINK
-
Отсоединяет друг от друга разделы окна редактирования. По умолчанию левый и правый разделы окна редактирования связаны: когда вы прокручиваете один из них, другой раздел также прокручивается.
- NOMENU
-
Удаляет заголовок меню Table в Visual FoxPro и заголовок меню Browse в предыдущих версиях FoxPro из системной строки меню, блокируя доступ к меню Edit.
- NOOPTIMIZE
-
Блокирует оптимизацию команды EDIT по технологии Rushmore.
Для получения дополнительной информации, смотрите Команда SET OPTIMIZE и Использование оптимизации запросов Rushmore для ускорения доступа к данным.
- NORMAL
-
Открывает окно редактирования с обычными установками, принимаемыми по умолчанию, такими как цвета, размеры, позиция, заголовок и управляющие опции (GROW, FLOAT, ZOOM и т.д.). Если предложение NORMAL опущено и текущим окном вывода оказывается пользовательское окно с собственными установками, в окне редактирования тоже принимаются эти пользовательские установки.
- NOWAIT
-
Продолжает выполнение программы сразу после открытия окна редактирования. Программа не ждет закрытия окна редактирования, а продолжает выполняться со строки, непосредственно следующей за строкой с командой EDIT NOWAIT. Если предложение NOWAIT опущено, то когда команда EDIT выдается в программе, окно редактирования открывается и выполнение программы приостанавливается до тех пор, пока окно редактирования не закроется.
Опция NOWAIT доступна только в рамках программы. Если задать NOWAIT при выдаче команды EDIT из окна команд, это никак не повлияет на ход работы.
- PARTITION nColumnNumber
-
Разбивает окно редактирования на левый и правый разделы; nColumnNumber sзадает номер столбца, по которому проходит линия разбиения. Например, если значение nColumnNumber равно 20, линия разбиения находится в столбце 20 окна редактирования.
- LEDIT
-
Указывает, что левый раздел окна редактирования будет находиться в режиме Browse (режиме просмотра).
- REDIT
-
Указывает, что правый раздел окна редактирования будет находиться в режиме Browse. В следующем примере открывается окно редактирования с линией разбиения в столбце 20, причем правый раздел открывается в режиме Browse.
Чтобы оба раздела были открыты в режиме Browse, задайте оба ключевых слова.
Copy Code
CLOSE DATABASES OPEN DATABASE (HOME(2) + 'data\testdata') USE customer && Opens customer table EDIT PARTITION 30 REDIT
- PREFERENCE PreferenceName
-
Сохраняет атрибуты и опции окна редактирования для использования в будущем. В отличие от предложения LAST, которое восстанавливает окно редактирования в том виде, в каком оно выглядело в предыдущем сеансе, предложение PREFERENCE сохраняет атрибуты окна редактирования в файле ресурсов FoxUser.dbf на неопределенный срок. Эти установки могут быть извлечены в любой момент. Подробнее о файле ресурсов FoxUser.dbf, смотрите Команда SET RESOURCE.
Если выдать команду EDIT, задав при этом имя набора установок PreferenceName , то в первый раз в файле FoxUser.dbf будет создан элемент, хранящий конфигурацию окна редактирования. Если впоследствии снова выдать EDIT с тем же именем набора установок, окно редактирования будет восстановлено в этом виде. При закрытии окна редактирования конфигурация установок обновляется.
Имя установки может состоять не более чем из 10 символов, должно начинаться с буквы или символа подчеркивания и может содержать любую комбинацию букв, цифр и символов подчеркивания.
Настроив вид окна наиболее подходящим для вас способом, вы можете предотвратить возможность изменения этих установок. Закройте окно редактирования, выдайте команду SET RESOURCE OFF, откройте файл FoxUser.dbf в виде таблицы и сделайте поле с установками доступным только для чтения, задав в логическом поле READONLY значение "истина" (.T.).
Подробнее о файле ресурсов FoxUser.dbf, смотрите Команда SET RESOURCE.
- REST
-
Запрещает перемещать указатель записи из текущей позиции в начало таблицы. По умолчанию команда EDIT устанавливает указатель записи в начало таблицы.
- SAVE
-
Сохраняет окно редактирования и все его области редактирования memo-полей активными и видимыми (открытыми). Пройдя в цикле по всем остальным открытым окнам с помощью клавиатуры или мыши, вы сможете вернуться в окно редактирования.
Опция SAVE доступна только в рамках программы. Если указать SAVE в команде EDIT, выданной в окне команд, это никак не повлияет на ход работы, поскольку установка EDIT SAVE всегда принимается по умолчанию в интерактивном режиме.
- TIMEOUT nSeconds
-
Задает интервал времени, в течение которого окно редактирования может ждать ввода. Числовое выражение nSeconds определяет, сколько секунд может пройти, прежде чем окно редактирования автоматически закроется, не дождавшись введенных данных.
Опция TIMEOUT доступна только в рамках программы; если ее задать в окне команд, это никак не отразится на ходе работы. В следующем примере окно редактирования закрывается, если в течение 10 секунд в него не были введены данные.
Copy Code
DEFINE WINDOW wEdit FROM 1,1 TO 24,40 ; CLOSE ; GROW ; COLOR SCHEME 10 CLOSE DATABASES OPEN DATABASE (HOME(2) + 'data\testdata') USE customer && Open customer table EDIT WINDOW wEdit ; FIELDS phone :H = 'Phone Number:' , ; company :H = 'Company:' ; TIMEOUT 10 RELEASE WINDOW wEdit
- TITLE cTitleText
-
Заменяет имя или псевдоним таблицы, отображаемый по умолчанию в строке заголовка окна редактирования, на заголовок с текстом cTitleText. В противном случае в строке заголовка появится имя или псевдоним просматриваемой таблицы.
Если вы выдали команду EDIT WINDOW, чтобы поместить окно редактирования в пользовательское окно, заголовок пользовательского окна заменяется заголовком окна редактирования.
Copy Code
CLOSE DATABASES OPEN DATABASE (HOME(2) + 'data\testdata') USE customer && Open customer table EDIT; TITLE 'My Edit Window' ; FIELDS phone :H = 'Phone Number' , ; company :H = 'Company:'
- VALID lExpression3
-
Выполняет в окне редактирования проверку достоверности на уровне записи. Предложение VALID выполняется только в том случае, если в запись вносится изменение и вы перемещаете курсор к другой записи. Предложение VALID не выполняется, если изменение вносится только в memo-поле.
Если VALID возвращает значение "истина" (.T.), вы можете перемещать курсор к другой записи. Если VALID возвращает "ложь" (.F.), курсор остается в текущем поле и Visual FoxPro выдает сообщение об ошибке. Используя предложение ERROR, вы можете выдавать собственное сообщение об ошибке в случае, когда VALID возвращает "ложь". Символьное выражение cMessageTextопределяет текст этого сообщения. Если VALID возвращает 0, курсор остается в текущем поле, но сообщение об ошибке не выдается.
Предложение VALID не следует смешивать с опцией проверки (:V), которая обеспечивает проверку достоверности на уровне поля.
- :F
-
Форсирует выполнение предложения VALID перед тем, как пользователь переводит курсор к следующей записи. В этом случае VALID выполняется даже тогда, когда запись не изменилась.
- ERROR cMessageText
-
Задает сообщение об ошибке с текстом cMessageText: оно заменяет системное сообщение, используемое по умолчанию. Visual FoxPro выдает это сообщение, когда VALID возвращает "ложь" (.F.).
- WHEN lExpression4
-
Проверяет условие, когда пользователь переводит курсор к другой записи. Если lExpression4 имеет значение "истина" (.T.), пользователь может модифицировать запись, к которой он перешел. Если lExpression4 имеет значение "ложь" (.F.) или 0, запись, к которой перешел пользователь, становится доступной только для чтения и не может быть модифицирована.
Предложение WHEN не выполняется, когда активизируется другое окно.
- WIDTH nFieldWidth
-
Ограничивает значением nFieldWidth количество символов, отображаемых для каждого поля тему окна редактирования. Задавая предложение WIDTH, вы не изменяете размер полей в таблице; изменяется лишь способ их отображения в окне редактирования. Если для какого-либо поля с помощью предложения FIELDS была задана своя ширина, она заменяет значение, заданное для этого поля предложением WIDTH.
- WINDOW WindowName1
-
Задает пользовательское окно, характеристики которого перенимает окно редактирования. Например, если пользовательское окно создано с помощью предложения FLOAT, окно редактирования можно будет перемещать. Заданное окно не обязательно должно быть активным или видимым, но оно должно быть определено.
- IN [WINDOW] WindowName2
-
Определяет родительское окно, в пределах которого открыто окно редактирования. Окно редактирования не принимает характеристики родительского окна. Окно редактирования, активизированное в родительском окне не может быть перемещено вне родительского окна. Если перемещяется родительское окно, окно редактироавния перемещяется с ним.
Чтобы обращаться к окну редактирования, родительское окно должно быть определено командой DEFINE WINDOW и должно быть активным и видимым.
- IN SCREEN
-
Принудительно помещает окно редактирования в основное окно Visual FoxPro, когда активно пользовательское окно.
- COLOR SCHEME nSchemeNumber
-
Задает номер цветовой схемы, используемой для определения цветов окна редактирования. В Visual FoxPro, окно редактирования принимает цветовую схему, установленную в диалоговом окне Color на Панели управления.
Замечания
Команда EDIT позволяет редактировать в окне выбранную таблицу. EDIT работает точно так же, как CHANGE.
Если вы для выхода из окна редактирования нажали клавишу Esc, то изменения, внесенные в последнее модифицированное поле, аннулируются. Однако если вы, модифицировав поля перешли в другую запись, изменения будут сохранены.
В программе с помощью команды DEACTIVATE WINDOW можно сохранить внесенные изменения и закрыть окно редактирования. При этом в команде DEACTIVATE WINDOW нужно задать имя окна редактирования. Подробнее об именах окон редактирования смотрите Функция WTITLE( ).
Поддержка команды SET SKIP
Команда SET SKIP позволяет устанавливать многозначное ("один-ко-многим") отношение между двумя таблицами (смотрите пример). Каждой записи родительской таблицы может соответствовать несколько связанных записей в дочерней таблице. Если вы создали многозначное отношение, вы можете с помощью команды EDIT просматривать записи как из родительской таблицы, так и из дочерней.
Родительская запись фигурирует только один раз, вместе с первой соответствующей ей записью из дочерней таблицы. Все остальные связанные записи отображаются в строках, следующих за родительской записью и первой дочерней записью. В FoxPro для MS-DOS во всех столбцах с информацией из родительской таблицы, идущих после первой дочерней записи, отображаются затененные блоки. В Visual FoxPro, символ заполнения, используемый для повторяющейся родительской информации, зависит от текущего шрифта окна просмотра.
Для получения дополнительной информации, смотрите Команда SET SKIP.
Поддержка функций COL( ) и ROW( )
Функции COL( ) и ROW( ) используются для получения текущей позиции курсора по строкам и столбцам в окне редактирования. Если окно редактирования открыто в основном окне Visual FoxPro, возвращаемая позиция курсора выражается относительно основного окна Visual FoxPro, а не самого окна редактирования. Если окно редактирования открыто в пользовательском окне, функции COL( ) и ROW( ) возвращают позицию курсора относительно пользовательского окна.
Пример
T В следующем примере с помощью команды SET SKIP строится отношение один-ко-многим между двумя таблицами. В родительской таблице (customer
) ля каждой составленной накладной существует только одна запись. Дочерняя таблица (orders
) содержит несколько записей для каждой записи из родительской таблицы.
После того, как отношение создано, открывается окно редактирования, в котором отображаются записи как из родительской, так и из дочерней таблицы.
![]() | |
---|---|
CLEAR CLOSE DATABASES OPEN DATABASE (HOME(2) + 'data\testdata') USE customer ORDER cust_id IN 0 && Parent table USE orders ORDER cust_id IN 0 && Child table SELECT customer && Back to parent work area SET RELATION TO cust_id INTO orders && Establish relationship SET SKIP TO orders && One-to-many relationship WAIT WINDOW 'Scroll to see shipping dates for each customer' NOWAIT EDIT FIELDS customer.cust_id :H='Customer Number', ; customer.city :H='Customer City', orders.shipped_on |
Смотрите также
Справочное руководство
Команда BROWSEКоманда Grid
Команда SET SKIP
Функция WTITLE( )
Функция COL( )
Функция ROW( )