Управляющие конструкции языка 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 байта в таблице | Ограничен только доступной памятью |
Дата добавления: 2021-06-02; просмотров: 82; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!
