1. Построение рамки
@ ТО [DOUBLE / PANEL
COLOR / COLOR SCHEME
В указанных координатах строится рамка, ограниченная двойной линией (DOUBLE), с сплошным заполнением (PANEL) и желаемого цвета.
2. Управление цветом
Обозначения цветов:
черный N | желтый GR+ | бирюзовый BG | коричневый GR |
белый W | зеленый G | лиловый RB | красный |
Команда
SET COLOR TO [[,] [,] [,]]
- устанавливает цвета для основного текста, для вывода сообщений,
рамки за пределами используемой области и фона для основных и
дополнительных сообщений. Цвет текста и цвет фона под ним
образуют цветовую пару (например, W/B или R+/ GR).
Цветовую схему можно определить в диалоге и сохранить в специальном файле и командой SET COLOR OF SCHEME TO []/[SCHEME]. Можно задать мерцание изображения: SET BLINK ON/OFF.
10. РАБОТА С НЕСКОЛЬКИМИ БАЗАМИ ДАННЫХВ FoxPro допускается работа сразу со многими базами данных, и при этом можно устанавливать между ними разнообразные связи, которые позволяют синхронно перемещать указатели записей в таких связанных базах. База, в которой указатель движется произвольно, считается старшей, а база (базы), в которой указатель следует за указателем старшей базы, - младший. В старшей и младших базах должны быть совпадающие поля. Допускается сцепление одной базы с несколькими другими. Младшие базы, в свою очередь, могут быть связаны с базами следующего уровня и т.д.
Возможно установление двух типов связей между записями двух сцепленных баз данных. Связь типа одна_запись-к-одной перемещает указатель в младшей базе таким образом, что он всегда устанавливается на первую встреченную им запись с совпадающим признаком. Остальные такие записи (если есть) остаются «не замеченными». Эта связь устанавливается командой SET RELATION. Связь типа одна_запись-ко-многим позволяет обратиться ко всем записям младшей базы с совпадающим признаком (команды SET RELATION и SET SKIP TO).
ПОНЯТИЕ О РАБОЧИХ ОБЛАСТЯХ
В FoxPro обрабатывать сразу несколько файлов баз данных (до 25). Каждый такой файл типа DBF и все вспомогательные файлы (например, индексные) открываются в своей отдельной рабочей области. Переход из области в область осуществляется командой:
SELECT
Первые десять рабочих областей идентифицируются номерами 1-10 или буквами A – J. Области с 11-й по 25-ю обозначаются номерами или буквенно-цифровыми именами W11 – W25. Если в качестве параметра указать цифру 0, произойдет переход в первую свободную рабочую область. Кроме того, рабочие области и файлы базы данных могут идентифицироваться так называемыми псевдонимами. Псевдонимом области по умолчанию является само имя находящегося в ней файла базы данных.
Область, в которой в данный момент работает пользователь, называется активной рабочей областью, и в ней можно работать с находящейся здесь базой данных. В одной команде можно работать с полями других баз (открытых в других областях). В этом случае имя поля из неактивной базы – составное: имени поля предшествует имя рабочей области или псевдоним, разделенные знаком «точка»:
.
Рабочая область в составном имени указывается любым разрешенным образом (буквой, именем ее базы данных, псевдонимом), но не номером. Номер может быть указан в команде SELECT и в функциях.
При входе в СУБД активизируется область 1 (или А), и, если пользователь работает только с одной базой, заботиться об открытии областей не нужно.
В команде USE можно одновременно указывать и область, в которой открывается база. Пример:
USE delivery IN b.
Однако переход в указанную область с помощью такой команды не происходит (для перехода необходимо воспользоваться командой SELECT).
ПРИМЕР РАБОТЫ С НЕСКОЛЬКИМИ БАЗАМИ ДАННЫХ
В НЕСКОЛЬКИХ ОБЛАСТЯХ
В приведенной ниже программе приводится пример работы с двумя базами данных, базой Поставщик (Delivery) и базой Поставка (Supply). Структура баз и назначение полей приводится в Приложении № 3. Данная программа позволяет по введенному коду товара найти всех поставщиков, поставляющих данный товар.
CLEAR
SET TALK OFF
SET EXACT OFF
SELE A
USE Supply
KOD=0
@ 1,2 SAY 'Введите код товара' GET KOD PICTURE'#####'
READ
LOCATE FOR indgoods = kod
IF !FOUND()
WAIT 'Такого кода нет'
RETURN
ENDIF
ind = inddel
SELE B
USE Delivery
LOCATE FOR inddel=ind
IF !FOUND ()
WAIT 'Такого поставщика нет'
RETURN
ENDIF
DISPL namedel, count, tel, A.namgoods, A.pricegds
CLOSE ALL
Связь вида одна_запись-к-одной
Команда
SET RELATION TO INTO [, INTO …] [ADDITIVE]
связывает указатель записей в активной рабочей области с указателем записей из других рабочих областей, которых указаны после слова INTO, по заданному общему полю (ключу). Единственное условие – файл базы данных, с которым устанавливается связь, должен быть проиндексирован по этому полю.
Пример
Связать базы данных SUPPLY.DBF и DELIVERY.DBF по полю INDDEL. По коду поставщика вывести список поставщиков и их реквизиты.
SET TALK OFF
CLEAR
SELE A
IF FILE ('Inddelivery.ind')
USE Delivery INDEX Inddelivery
ELSE
USE delivery
INDEX ON inddel TO Inddelivery
ENDIF
SELE B
USE Supply
SET RELATION TO inddel INTO A
DO WHILE .T.
kod=0
CLEAR
@ 12,23 TO 14,50 DOUBLE
@ 13,25 SAY 'Введите код товара' GET kod PICTURE '#####'
READ
LOCATE FOR indgoods = kod
IF !FOUND()
WAIT 'Такого товара нет'
LOOP
ENDIF
name=namgoods
IF kod 0
SET FILTER TO indgoods = kod
BROWSE ;
TITLE ' Список поставщиков, поставляющих ' + name ;
FIELDS ;
INDDEL :H = ' Код поставщика ' ,;
A.NAMEDEL :H = 'Название поставщика ' ,;
A.ADRDEL :H = 'Адрес ' ,;
A.TEL :H = 'Телефон '
SET FILTER TO
ENDIF
IF LASTKEY()=27
EXIT
ENDIF
ENDDO
PACK
CLOSE ALL
В этой программе выводятся записи, в которых для каждого кода поставщика inddel из текущей базы данных Supply.dbf (открытой в области В) выводятся поля A.namedel (Название поставщика), A.adrdel (Адрес) и A.TEL (Телефон) из базы данных Delivery.dbf (открытой в области A).
В FoxPro имеется возможность устанавливать связи с несколькими базами одновременно. Если со старшим файлом, который уже связан с другим, необходимо связать некоторый третий (четвертый и т.д.), следует во все последующие команды SET RELATION включать слово ADDITIVE, которое обеспечит сохранение связей, установленных ранее.
Связь между всеми файлами разрывается командой SET RELATION TO без параметров. Связь с отдельным файлом в заданной - командой SET RELATION OF INTO .
Связь вида одна_запись-ко-многим
Команда SET SKIP TO [ [,] … ]
устанавливает связь типа одна_запись-ко-многим между двумя или несколькими базами данных.
С каждой записью из старшей базы могут быть сцеплены несколько записей из младшей базы. Связь может быть установлена сразу с несколькими младшими базами, находящимися в указанных .
Прежде чем использовать команду SET SKIP TO, необходимо выполнить начальное сцепление вида одна_запись-к-одной командой SET RELATION. Удаление связи одна_запись-ко-многим осуществляется командой SET SKIP TO без параметров.
Пример
Установить связь между тремя базами данных. В программе используется
третья база Товаров (Goods.dbf), получаемая из БД Supply.dbf
SET TALK OFF
IF FILE ('Goods.dbf')
ERASE Goods.dbf
ENDIF
IF FILE ('Indnum.idx')
ERASE Indnum.idx
ENDIF
SELE A
USE Supply
IF FILE ('Indg.idx')
SET INDEX TO Indg.idx
ELSE
INDEX ON indgoods TO Indg UNIQUE
ENDIF
COPY TO Goods FIELDS indgoods, namgoods, measure
SELE C
USE Smdeliv
IF FILE ('Indexdel.idx')
SET INDEX TO Indexdel.idx
ELSE
INDEX ON indgoods TO Indexdel UNIQUE
ENDIF
SELECT SUPPLY
SET RELATION TO inddel INTO Delivery ADDITIVE
SELE B
USE Goods
INDEX ON namgoods TO Indnum
SET RELATION TO indgoods INTO Supply ADDITIVE
SET SKIP TO Supply
BROWSE TITLE "Товары" ;
FIELDS ;
Goods.Namgoods :H = "Имя Товара" ,;
Delivery.Namdel :H = "Имя Поставщика" ,;
Delivery.Adrdel :H = "Имя Поставщика" ,;
Delivery.Count :H = "Счет", ;
Goods.Measure :H = "Ед.Измерения" ,;
Supply.Pricegds :H = "Цена Единицы" ,;
Supply.Quant :H = "Кол-Во Единиц" ,;
Totalamount=Supply.Quant * Supply.Pricegds :H = "Общая Сумма"
CLOSE ALL
Использование окон - очень удобное и эффектное средство создания пользовательского интерфейса в прикладной программе.
Определение окна
DEFINE WINDOW FROM, TO ,
[FOOTER] [TITLE] [SYSTEM/DOUBLE/PANEL/NONE]
[CLOSE][FLOAT][GROW][SHADOW][ZOOM][FILL][MINIMIZE]
FOOTER, TITLE - нижний и верхний заголовки;
форма границ окна:
SYSTEM - стандартная,
DOUBLE - двойная линия,
PANEL - сплошная полоса,
NONE - не определяется,
CLOSE - допускает закрытие окна мышью,
FLOAT - перемещение с помощью ^F7 или мышью,
GROW - изменение размера (^F8 или мышью),
ZOOM /
MINIMIZE - распахивание и свертывание окна;
SHADOW - теневая рамка,
FILL - символ заполнения окна.
Активация уже определенного окна
ACTIVATE WINDOW [[][,< окно2>]] [,...]] ALL [BOTTOM / TOP]]
Здесь указаны имена открываемых или всех (ALL) окон. BOTTOM / TOP - размещение нового окна под/перед уже имеющимся.
Удаление с экрана
DEACTIVATE WINDOW [,][,...] /ALL
Удаление с экрана и из памяти
CLEAR WINDOW - Удаление с экрана и из памяти ВСЕХ окон
RELEASE WINDOW - Перечисленных окон.
Восстановление окна
RESTORE WINDOW
Сохранение в файле
SAVE WINDOW /ALL TO
Арифметические функции
ABS() - абсолютное значение числа
BETWEEN(,,) - истинно (.Т.), если
, иначе ложно (.F.) (для чисел,
строк, дат)
CEILING() - округление числас избытком
FLOOR() - округление числа с недостатком
INТ() - целая часть числа
МАХ(,[,...]) - максимальное значение из списка
аргументов (числа, строки, даты)
MIN,[,...]) - минимальное значение из списка
аргументов
MOD(,) - целочисленный остаток от деления
на
ROUND(,) - округление числа до
знаков после запятой
RAND(]) - псевдослучайное число в диапазоне 0...1
SIGN() - знак числа
Степенные, тригонометрические и другие функции
ЕХР() - экспонента
LOG() - натуральный логарифм
LOG10() - десятичный логарифм
SQRT() - квадратный корень числа
SIN() - синус от угла в радианах
COS() - косинус
TAN() - тангенс
ASIN() - арксинус (результат в радианах)
ATAN() - арктангенс
PI ( ) - число
DTOR() - преобразование градусной меры угла в
радианы
RTOD() - преобразование радианной меры угла в
градусы
Строковые функции
$ - вхождение в
(результат .Т. или .F.)
AT / ATC(,[,) - поиск слева направо в строке
позиции вхождения
подстроки , начиная с
позиции строки
RАТ(,[,) - то же справа налево
INLIST(,[,…]) - вхождение в последующий
список (результат .Т. или .F.)
LEN() - длина строки
LIKE(,) - вхождение в
(результат .Т. или .F.) с
использованием символов маски * и ?
OCCURS(,) - число вхождений в
LEFT(
... = πR2, L = 2πR). 28) Критерии выбора конфигурации персонального компьютера. Зав. кафедрой -------------------------------------------------- Экзаменационный билет по предмету ИНФОРМАТИКА. РАСШИРЕННЫЙ КУРС Билет № 9 29) Что называется связью «один к одному»? Определите тип связи между объектами предметной области Институт: ...
... полезно учителю при подготовке рассказа на уроке. В данной публикации сделана попытка выделить тот самый минимум, который ученику необходимо включить в свой ответ на экзамене. Примечания для учеников При ответе надо быть готовым к дополнительным вопросам об обосновании тех или иных утверждений. Например, каковы максимальное и минимальное значения 8-битного целого числа со знаком и почему их ...
... такое машинная графика и система машинной графики? Что такое мультимедиа? Что такое гипертекст? Что такое гипермедиа? Что такое электронная таблица? Ответы на задачи из “Дидактических материалов” Казиева В.М. Тема 1. “Информация. Кодирование. Инфологические задачи” Вариант 1 x=41. xn=32n—2. A=7, B=3. Система кодировки - одношаговый код Цезаря. “АВТОМОБИЛЬ” - “БГУПНУВКМЪ”. Вариант 2. x= ...
... в широкую практику разработки программ объектно-ориентированного программирования, впитавшего в себя идеи структурного и модульного программирования, структурное программирование стало фактом истории информатики. Билет № 9 Текстовый редактор, назначение и основные функции. Для работы с текстами на компьютере используются программные средства, называемые текстовыми редакторами или текстовыми ...
0 комментариев