Таблица 1
Команда | Описание |
Append blank | Добавляет в таблицу новую чистую запись |
Blank | Стирает информацию во всех полях текущей записи |
GOTO n | Идти в таблице к записи n |
Go Top | Идти на 1-ю запись в таблице |
Go Bottom | Идти на последнюю запись в таблице |
Repl <поле> With <выр.> | Заполняет <поле> таблицы <выражением> |
RecCount() | Определяет число записей в открытой таблице |
Recno() | Номер текущей записи в открытой области |
Set filter to <выр.> | Устанавливает фильтр на записи, согласно <выражению> |
Select <имя таблицы> | Открывает таблицу в текущей области |
Skip | Передвигает указатель в таблице на запись вперед (назад skip –1) |
Примечание: Снимается фильтр просто командой SET FILTER TO
Примеры использования данных команд и функций:
ПРИМЕР:
1) Пусть имеется поле Цена (Numeric) и Количество (Numeric). Требуется вычислить произведение Цена*Количество и занести результат в поле Стоимость(Numeric) для одной записи:
REPL Стоимость WITH Цена*Количество
2) Тоже самое для ВСЕХ записей в которых Количество >10:
REPL ALL Стоимость WITH Цена*Количество FOR Количество>10
Управляющие конструкции языка FoxPro
1. Конструкция IF …ENDIF
IF условие
Команды (операторы)
ELSE
Команды (операторы)
ENDIF
2. Конструкция IIF (непосредственно выполняемый оператор IF, имеющий вид функции)
IIF(условие,значение для.T., значение для.F.)
Пример: y=IIF(x>0,1,-1) –если x>0 то y=1 иначе y=-1
3. Конструкция DO CASE … ENDCASE
Конструкция последовательно проверяет условия, расположенные за словом CASE. Если условие выполняется, выполняются команды, расположенные ниже (до следующего слова CASE). Затем управление передается на конец конструкции (endcase)
Конструкция | Пример |
DO CASE CASE условие1 Команды (операторы) CASE условие1 Команды (операторы) ENDCASE | DO CASE CASE x>=pi() Y=cos(x) (выполняется при x>=p) CASE x>0 Y=Sin(x) (выполняется при p>x>0) ENDCASE |
4. Цикл FOR … NEXT
Шаг цикла может быть отрицательным или опущен (по умолчанию шаг равен 1). Пример:
FOR i=10 to 1 step -0.5
? i
NEXT
6.Цикл DO WHILE … ENDDO
Условие, стоящее за словом While (пока) проверяется на истинность при входе в цикл и с каждым проходом цикла. Возможен досрочный выход из цикла (Exit). Пример:
DO WHILE условие Команды (операторы) [EXIT] ENDDO | X=1 DO WHILE X<10 (пока X<10) S=S+X IF S>8 (если S>8 то досрочный выход) EXIT ENDIF X=X+1 (изменение параметра цикла) ENDDO |
7.Цикл SCAN … ENDSCAN
Цикл предназначен для непосредственной работы с записями таблицы. В примере на все телевизоры (из таблицы “Tovar” назначена скидка 0.1 (10%)
SCAN [FOR условие] операторы [EXIT] ENDSCAN | Select Tovar (выбираем таблицу) Scan FOR cnametovar=”телевизор” REPL skidka WITH 0.1 EndScan |
Процедуры.
Вы можете хранить каждую процедуру в отдельном программном файле (типа *.prg) или выполнить несколько процедур в одном файле. В последнем случае вам перед обращение к процедурам нужно задать имя процедурного файла: SET PROCEDURE TO имя_файла.
Синтаксис процедуры | Вызов процедуры |
PROCEDURE имя_процедуры PARAMETERS список_параметров <Тело процедуры> RETURN | DO имя_процедуры WITH список_параметров |
Пример: Преобразовать в строке каждую букву в словах в прописную и удалить «пробелы» в начале и в конце строки. Назовем нашу процедуру FIO:
S=" петров иван петрович "
DO fio WITH s (вызов процедуры и передача в нее значения переменной S)
? S (получим на экране результат: Петров Иван Петрович)
PROCEDURE FIO
PARAMETERS st
st=alltrim(proper(st))
RETURN
Объектно-ориентированное программирование
VFP является объектно-ориентированным, визуально программируемым языком, управляемым по событиям.
Последовательность выполнения действий в VFP:
1) Событие (нажатие клавиши, клик)
2) Определяется связанный с этим событием объект (кнопка, поле, форма и т.д.)
3) Вызывается метод, содержащий действия по обработке данного события.
Базовые понятия в VFP – объект и класс.
Класс содержит информацию о том, как должен выглядеть объект и определяет выполняемые им действия.
Объект является экземпляром класса, который наследует характеристики класса и имеет определенные свойства и методы.
Свойства объекта находятся в окне PROPERTIES. Данное окно имеет 5 закладок:
ALL – все свойства и методы
DATA - данные Пример:ControlSource
Metods - методы (Click, DblClick, KeyPress)
Layout - планировка (размер шрифта и т.д)
Over - другие (класс и т.д.)
Идентификация объекта:
по имени: Form1.command1.caption=”Выход”
по ссылке: ThisForm.BackColor=RGB(128,128,255)
Характеристики ООП:
1)ИНКАПСУЛЯЦИЯ (Свойства и методы существуют только вместе с объектом).
2)НАСЛЕДОВАНИЕ (Объект наследует свойства класса).
3)ПОЛИМОРФИЗМ (Использование имен одних и тех же методов для выполнения различных действий)
Таблица 2. Базовые классы VFP.
Класс | Назначение | Класс | Назначение | ||
Check Box | Флажок | Timer | Таймер | ||
Combo Box | Раскрыв. Список | ListBox | Список | ||
Command Button | Кнопка управления | OptionGroup | Набор переключат. | ||
Command Group | Группа кнопок | OleBoundControl | OLE –объект данных | ||
Container | Контейнер | OleContainerControl | OLE –объект управления. | ||
Edit Box | Поле редактирования | PageFrame | Рамка со страницами | ||
Grid | Таблица | Shape | Обрамление | ||
Image | Рисунок | TextBox | Поле ввода | ||
Label | Надпись | Spinner | Счетчик |
СВОЙСТВА ОБЪЕКТОВ
Таблица 3.Свойства объектов.
Свойство | Описание | Значение по умолчанию |
Надписи | ||
Caption | Надпись | |
FontBold | Жирный шрифт | .f. |
FontItalic | Наклонный шрифт | .f. |
FontStrikethru | Зачеркнутый шрифт | .f. |
FontOutLine | Подчеркнутый шрифт | .f. |
FontName | Имя шрифта | Arial |
FontSize | Размер шрифта | 9 |
Цвет (палитра вызывается двойным кликом по значению свойства) | ||
ForeColor | Цвет надписи | 0,0,0 |
BackColor | Цвет фона | 255,255,255 |
DisabledForeColor | Цвет надписи при неактивном объекте | 0,0,0 |
Disabled BackColor | Цвет фона при неактивном объекте | 255,255,255 |
Размещение | ||
Top | Расстояние данного объекта от верхнего края объекта-контейнера (pixel) | |
Left | Расстояние данного объекта от левого края объекта-контейнера (pixel) | |
Height | Высота объекта (pixel) | |
Width | Ширина объекта (pixel) | |
SpecialEffect | Объемность (плоскость) объекта | 0 -3D |
Данные | ||
ControlSource | Источник данных (поле, переменная) | |
Value | Начальное значение переменной | |
SpinnerHightValue | MAX значение счетчика | +2147483647 |
SpinnerLowValue | MIN значение счетчика | -2147483647 |
Increment | Шаг счетчика | 1 |
RowSourceType | Тип источника строк (поле,массив,запрос) | |
RowSource | Источник данных для строк списка | |
Доступ к объекту | ||
ReadOnly | Только для чтения | .f. |
Enabled | Объект активный (неактивный) | .t. |
Visible | Объект видимый (невидимый) | .t. |
Класс Timer | ||
Interval | Значение интервала в мс, после истечения которого управление передается методу Timer данного объекта | 0 |
Класс Grid | ||
ColumCount | Количество колонок (столбцов) | -1 |
GridLine | Тип раздел. линии (вертик., гориз., сетка) | 3 |
GridLineColor | Цвет разделительной линии | 0,0,0 |
GridLineWidth | Ширина разделительной линии | 1 |
RecordSourceType | Тип источника данных (таблица, запрос) | |
RecordSource | Источник данных (имя таблицы, запроса) | |
Класс PageFrame | ||
ActivePage | Активная страница (при запуске) | 1 |
PageCount | Количество страниц | 2 |
Picture | Фоновая картинка на странице |
Таблица 2 (продолжение)
Свойство | Описание | Значение по умолчанию |
Класс Line | ||
BorderColor | Цвет линии | 0,0,0 |
BorderStyle | Стиль: 0 Линия имеет цвет фона 1 Тонкая 2 Штриховая 3 Пунктирная 4 Штрих-пунктир 5 Штрих -двойной пунктир 6 Непрерывная | 1 |
BorderWidth | Толщина линии | 1 |
LineClant | Ориентация линии “/” или “\” | / |
Класс Shape | ||
BackStyle | Фон 1 – непрозрачный 0 – прозрачный | 1 |
FillStyle | Узор заполнения (по умолчанию-сплошной) | 1 |
Curvature | Изгиб от 0 до 99 | 0 |
Таблица 3
Допустимые типы полей
Тип данных | Описание | Размер | Диапазон |
Character | Произвольный текст | 1-256 символов | Любые символы |
Currency | Денежная сумма | 8 байтов | от -922337203685477.5807 до 922337203685477.5807 |
Date | Хронологическая дата | 8 байтов | от 01.01.0001 до31.12.9999г |
Logical | Логическое значение | 1 байт | Истина (.Т.) или Ложь (.F.) |
Numeric | Целое или с дробной частью число | от 1 до 20 бт в таблице | от -.9999999999Е+19 до.9999999999Е+20 |
Double | Число с плавающей запятой двойной точности | 8 байтов | -4.940656458412Е-324 до 8.98846567431Е+307 |
General | Ссылка на OLE-объект | 4 байта в таблице | Ограничен только доступной памятью |
Integer | Целочисленные значения | 4 байта | от –2147483647 до 2147483647 |
Memo | Ссылка на блок данных | 4 байта в таблице | Ограничен только доступной памятью |