Отображает поля для редактирования.

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 опущено, отображаются все поля таблицы в том порядке, в каком они фигурируют в структуре таблицы.

Список полей также может содержать любую комбинацию полей или вычисляемых полей, в том числе полей из таблиц, открытых в других рабочих областях. Список полей имеет следующий синтаксис:

  CopyCode imageCopy Code
FieldName1 
   [:R] 
   [:nColumnWidth]
   [:V = lExpression1 [:F] [:E = cMessageText]]
   [:P = cFormatCodes] 
   [:B = eLowerBound, eUpperBound [:F]]
   [:H = cHeadingText]
   [:W = lExpression2]
   [, FieldName2 [:R]...]

Expand imageВычисляемые поля

В списке полей можно задавать операторы для создания вычисляемых полей. Вычисляемое поле содержит данные, созданные с помощью выражения и доступные только для чтения. Это выражение может иметь любой вид, но оно должно быть допустимым выражением Visual FoxPro.

Оператор, используемый для создания вычисляемого поля, имеет следующий синтаксис:

CalculatedFieldName = eExpression

В следующем примере создается вычисляемое поле location:

  CopyCode imageCopy Code
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 и companys. Поле cust_id доступно только для чтения и не может быть изменено.

  CopyCode imageCopy 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.

  CopyCode imageCopy 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 только числовых данных определенного формата:

  CopyCode imageCopy 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.

  CopyCode imageCopy 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. По умолчанию имена полей в окне редактирования ставятся левее самих полей.

В следующем примере для отображаемых полей задаются заголовки, определяемые пользователем.

  CopyCode imageCopy 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 для полей, отображенных в окне редактирования:

  CopyCode imageCopy 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 (Подчеркнутый)

Можно указать сразу несколько символов, задав комбинацию стилей. В следующем примере открывается окно редактирования, в котором используется шрифт с подчеркиванием:

  CopyCode imageCopy 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 :

  CopyCode imageCopy 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.

NoteNote

Предложение NOAPPEND не помешает добавлять запись из программы (созданной с помощью предложений VALID, WHEN или команды ON KEY LABEL), когда вы находитесь в окне редактирования.

NOCAPTION

Определяет, что всегда для заголовков столбца будут использовать имена полей таблицы или представления, даже когда база данных содержит дружественный заголовок для таблицы. Этот пункт применяется только к таблицам или представлениям в базе данных.

NODELETE

Не разрешает помечать записи на удаление в окне редактирования. По умолчанию запись можно пометить на удаление, нажав клавиши CTRL+T, выбрав в меню Table команду Toggle Deletion Mark или щелкнув самый левый столбец этой записи.

NoteNote

Предложение 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, задайте оба ключевых слова.

  CopyCode imageCopy 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 секунд в него не были введены данные.

  CopyCode imageCopy 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, чтобы поместить окно редактирования в пользовательское окно, заголовок пользовательского окна заменяется заголовком окна редактирования.

  CopyCode imageCopy 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 на Панели управления.

Expand imageЗамечания

Команда EDIT позволяет редактировать в окне выбранную таблицу. EDIT работает точно так же, как CHANGE.

Если вы для выхода из окна редактирования нажали клавишу Esc, то изменения, внесенные в последнее модифицированное поле, аннулируются. Однако если вы, модифицировав поля перешли в другую запись, изменения будут сохранены.

В программе с помощью команды DEACTIVATE WINDOW можно сохранить внесенные изменения и закрыть окно редактирования. При этом в команде DEACTIVATE WINDOW нужно задать имя окна редактирования. Подробнее об именах окон редактирования смотрите Функция WTITLE( ).

Expand imageПоддержка команды SET SKIP

Команда SET SKIP позволяет устанавливать многозначное ("один-ко-многим") отношение между двумя таблицами (смотрите пример). Каждой записи родительской таблицы может соответствовать несколько связанных записей в дочерней таблице. Если вы создали многозначное отношение, вы можете с помощью команды EDIT просматривать записи как из родительской таблицы, так и из дочерней.

Родительская запись фигурирует только один раз, вместе с первой соответствующей ей записью из дочерней таблицы. Все остальные связанные записи отображаются в строках, следующих за родительской записью и первой дочерней записью. В FoxPro для MS-DOS во всех столбцах с информацией из родительской таблицы, идущих после первой дочерней записи, отображаются затененные блоки. В Visual FoxPro, символ заполнения, используемый для повторяющейся родительской информации, зависит от текущего шрифта окна просмотра.

Для получения дополнительной информации, смотрите Команда SET SKIP.

Expand imageПоддержка функций COL( ) и ROW( )

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

Expand imageПример

T В следующем примере с помощью команды SET SKIP строится отношение один-ко-многим между двумя таблицами. В родительской таблице (customer) ля каждой составленной накладной существует только одна запись. Дочерняя таблица (orders) содержит несколько записей для каждой записи из родительской таблицы.

После того, как отношение создано, открывается окно редактирования, в котором отображаются записи как из родительской, так и из дочерней таблицы.

  CopyCode imageCopy Code
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

Expand imageСмотрите также