VFP (Visual FoxPro)

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 17:10, 8 июня 2016.
Visual FoxPro
fraimed
Разработчики: Microsoft
Операционная система: Windows
Платформа: x32, x64 (виртуально) [1]
Локализация: Английский, Немецкий, Испанский
Тип ПО: Среда разработки ПО, язык программирования
Лицензия: Проприетарное ПО
Веб-сайт официальный сайт

Visual FoxPro — реляционная база данных с объектно-ориентированной средой программирования от Microsoft, которая поставляется с предварительно определенными классами. Visual FoxPro является частью набора продуктов Microsoft Visual Studio.

Visual FoxPro относительно проста в освоении и позволяет довольно быстро разрабатывать за счет повторно используемого кода. Программист может написать код для доступа как к базе данных FoxPro, так и для подключения к таким базам данных, как SQL Server и Oracle. Microsoft утверждает, что по крайней мере, 500000 разработчиков используют FoxPro.[2]

Обзор

Microsoft Visual FoxPro дает вам больше всего, что вы привыкли ожидать в системе управления базами данных (СУБД) - скорость, мощность и гибкость. Кроме того, Visual FoxPro ведет вас к следующему поколению путем предоставления объектных моделей и событий, которые помогают создавать и изменять приложения быстрее, чем когда-либо прежде.[3]

Быстрое создание приложений

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

Получение быстрых результатов с помощью мастеров и конструкторов

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

Для максимально быстрой разработки мастера являются незаменимыми помощниками. С их помощью можно шаг за шагом, следуя подсказкам, выполнять общие задачи в Visual FoxPro. Например, мастер таблиц поможет вам легко создать таблицу, мастер формы создает форму, а мастер Web Publishing поможет вам создать веб-страницу, которая выполняет поиск по вашим таблицам.

Взгляните на то, что вы можете сделать:

  • Мгновенная разработка приложений. Используя Application Wizard, вы можете быстро создать приложение либо с помощью таблиц и форм, либо с помощью набора готовых компонентов приложения.
  • Создание веб-страниц. Вы можете создать веб-страницу, которая предоставляет собой интерфейс для поиска и доступа к таблицам.
  • Заполнение сводных таблиц через ODBC или OLEDB. PivotTable Wizard использует драйвер Visual FoxPro ODBC или OLE DB.
  • Перемещение данных на Back-End сервер. Вы можете перемещать базы данных на Visual FoxPro, таблицы и представления из вашей системы к Back-End серверу с SQL Server Upsizing Wizard.

Меню и панели инструментов

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

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

Building Controls Quickly

Так же, как помощники могут помочь в создании отчетов и форм, конструкторы — визуальные инструменты, которые помогут вам создать элементы управления с заданными параметрами. Конструкторы могут сэкономить время, когда вы настраиваете много форм или прототипов приложений. Все, что необходимо сделать, — это запустить конструктор и ответить на ряд вопросов. В зависимости от ваших ответов, конструктор задает свойства для элемента управления, который вы добавляете.[4]

Добавление комбинированного списка в форму. Предположим, что вы хотите улучшить простую форму, созданную путем добавления возможности выбора значений полей из списка вместо перемещения через все записи с VCR-кнопками и просмотром значения в текстовом поле. Просто замените текущее текстовое поле на поле со списком и используйте конструктор для установки свойств.[5]

Изменение существующих элементов управления с помощью конструктора. Если вы хотите изменить существующий элемент управления, вы можете выбрать элемент управления и использовать конструктор, которые поможет вам установить свойства элементов управления.

Например, Combo Box Builder — диалоговое окно с закладками, которое поможет вам создать поле со списком в форме. Комбинированный список дает тот же вид значения, что и обычное текстовое поле, но позволяет выбрать из списка. С помощью этого конструктора вы можете установить свойства комбинированного списка. С каждым изменением свойств, управляющий элемент формы будет изменяться для соответствия настройкам. [6]

Создание Grid Control. Для отображения небольшой таблицы данных вы можете использовать элемент Grid Control. Даже если вы не знакомы со всеми свойствами Grid Control, вы все равно можете воспользоваться их функциональными возможностями, используя конструктор. Конструктор поможет вам выбрать поля для вашей таблицы, стиль и расположение, а также установить связи между таблицами, связанными с Grid Control. По мере внесения изменений в свойства элемента, они отражаются в Form Designer.

Преимущества

Visual FoxPro является намного более мощным, чем его предшественники. Объектно-ориентированное программирование ускоряет разработку приложений с помощью таких особенностей, как наследование. Модель событий Visual FoxPro устраняет необходимость в использовании Foundation READ или написании обработчики событий. Оптимизация настроек системы и преимущества технологии Rushmore оптимизации запросов повышает производительность Visual FoxPro.

Объектно-ориентированное программирование в Visual FoxPro

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

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

Затем вы можете переписать свой код и формы с помощью наследования классов, которые вы определяете. Например, вы можете унаследоваться от базового класса Form, чтобы создать пользовательский класс, который автоматически придает всем формам в вашем приложении тот внешний вид, который вы хотите.

Модель классов Visual FoxPro предоставляет широкие возможности контроля над объектами в вашем приложении. У вас есть столько контроля над внешним видом и поведением объектов на формах во время выполнения, сколько во время разработки в Form Designer.

Обработка событий

С помощью Visual FoxPro вы можете создавать приложения, полностью управляемые событиями. Вы можете получить доступ ко всем стандартным событиям Windows, таким как движения мыши, которые позволяют перетаскивать объекты. Вы можете контролировать события либо визуально через окно свойств, либо программными средствами с помощью визуального языка FoxPro. Дополнительные сведения о модели событий, см. Understanding the Event Model.

Тестирование и отладка

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

Проверяйте то, что разрабатываете. Усовершенствованная среда разработки Visual FoxPro дает вам больше возможностей для тестирования ваших компонентов и кода. Например, если вы разрабатываете форму, вы можете нажать кнопку Run для запуска кода. Если вы хотите изменить что-то, просто нажмите на кнопку Design и внесите необходимые изменения.

Отлавливайте синтаксические ошибки раньше. Редактор теперь имеет цветовую маркировку редактирования: вы можете задать цвета для синтаксиса, обычный текст, переменные, комментарии, подробнее см. Edit Properties Dialog Box. Если вы ошиблись при вводе команды или ключевого слова, вы будете знать сразу, потому что оно примет неправильный цвет.

Мощный отладчик

Вы можете отлаживать и отслеживать компоненты приложений более легко в последней версии Visual FoxPro с помощью Debugger Window.

  • Просмотр свойств объекта. В отладчике вы можете просматривать элементы в пределах коллекции или массив с помощью Watch Window, чтобы показать иерархическое отображение свойств объекта.
  • Трассировка выполнения вашего кода. В Trace Window вы можете увидеть каждую строку кода, ход его выполнения и проверить значения всех переменных, свойств и параметров среды.
  • Управляние выполнением с помощью точек останова. Используя точки останова, вы можете определять, когда выполнение кода останавливается с помощью одного из четырех типов точек останова. Вы можете остановиться на определенной линии, когда происходят определенные изменения значений, если условие истинно, или если условие для определенной линии верно.
  • Установка assert'ов и отображение уведомлений. Вы можете использовать ASSERT Command чтобы определить условия, которые проверяют, что код работает правильно. При возникновении ошибки, Debug Output Window регистрирует сообщение.
  • Проверка текущего значения переменной. Чтобы быстро проверить значение, вы можете поместить курсор на переменную в Trace Window для отображения значения.
  • Просмотр и изменение значений. В Watch Window и Locals Window Вы можете изменить значения свойств или переменных во время исполнения кода.
  • Использование стека вызовов. В Call Stack Window вы можете просмотреть программу, призывающую путь. Чтение Call Stack является одним из наиболее эффективных методов для отладки.

Создание пользовательского интерфейса без программирования

Visual FoxPro предоставляет мощные данные и элементы управления пользовательского интерфейса, которые можно добавить в формы с помощью конструктора форм, что делает возможным создание пользовательского интерфейса, не программируя совсем или совсем немного. Например, вы можете разработать один-ко-многим формы, легко привязав grid control к таблице, что вы можете сделать, перетащив таблицу на форму для создания grid control.

Создание формы Один-ко-многим

Visual FoxPro позволяет легко настроить формы для отображения записей из связанных таблиц. C помощью Project Manager Window и конструктора форм вы можете просто "перетаскивать" поля, необходимые для настройки формы.

Формы Один-ко-многим отображают данные из связанных таблиц.

VFP.1.gif

Попробуйте настроить форму один-ко-многим, используя две связанные таблицы: Customers и Orders из Testdata.dbc.

После четырех этапов, форма один-ко-многим ...

VFP.2.gif
VFP.3.gif

...готова.

VFP.4.gif

Указывайте таблицы и представления для формы из среды окружения. Вы можете использовать данные из среды окружения для формы или отчета, чтобы указать, какие таблицы или представления используются в вашей форме. После того, как вы добавили таблицы и представления, которые имеют записи, которые вы хотите отобразить в форме, вы можете перетащить поля в Form Designer.

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

Придание формам профессионального вида

Вы можете быть творческим и настраивать расположение форм и добавить цвета, формы и графики.

  • Точное выравнивание элементов управления. С помощью панели инструментов Layout быстро выстраиваются в линию управления и заполняются их равномерно по форме.
  • Изменение цвета фона. Используйте панели инструментов цветовой палитры.
  • Добавление графики и изображений. Используйте линии, формы, кнопки и изображения на панели инструментов Элементы управления.
  • Удаление границ элемента комбинированный список. Вы можете использовать BorderStyle Property, чтобы удалить границы элемента управления.
  • Использование текущих цветов окна в качестве цветов формы. Можно установить дополнительный вариант на ColorSource Property что позволяет установить форму цвета на основе текущей цветовой схеме Windows.

Настройка свойств элементов управления

Вы можете улучшить свой пользовательский интерфейс с помощтю свойств элементов управления в Visual FoxPro. Используя Properties Window (Visual FoxPro) вы можете увидеть и установить свойства, связанные с каждым объектом в вашей форме, чтобы определить, как форма управления выглядит и ведет себя.

  • Использование привязки данных с элементами управления ActiveX. Для привязки данных к элементам управления ActiveX можно использовать ControlSource Property (если элемент управления поддерживает его), в окне свойств указать поле или переменную, с которой связан элемент управления.
  • Управляйте навигацией в многостраничных формах. Установив порядок вкладок на вашей странице кадра, вы можете контролировать порядок, в котором отображаются страницы. Это также добавляет возможность переходить к различным страницам с помощью клавиш со стрелками вправо и влево.
  • Выбирайте больше 60 элементов в списке. Вы можете выбрать неограниченное количество нескольких элементов в элементе управления ListBox.
  • Создавайте скрытые свойства и методы. Вы можете установить свойства доступности свойств и методов, которые вы создаете, как Public, Protected или Hidden.

Настройка конструктора форм

Для того, чтобы облегчить себе работу, вы можете настроить Form Designer, чтобы соответствовать вашему стилю работы и потребностям.

  • Сохранять изменения Автоматически. Можно установить параметры таким образом, чтобы Visual FoxPro сохранял ваши формы автоматически при выходе из конструктора форм. На вкладке Формы > Параметры Диалогового Окна вы можете выбрать опцию для сохранения изменений перед запуском формы. Если вы выбираете эту опцию и пропустите диалоговое окно подтверждения, то изменения, внесенные в текущей форме, сохраняются автоматически.
  • Изменение шрифта в окне свойств. Вы можете выбрать один из трех параметров шрифта из окна контекстного меню Свойства.
  • Использование клавиатуры в окне свойств. Окно Свойства поддерживает навигацию по клавиатуре для прокрутки иерархии объектов и элементов управления. Используйте CTRL + PgUp и CTRL + PgDn для перемещения вверх и вниз по списку.

Программирование в Visual FoxPro

Основные понятия о программировании

Когда вы пишете программу, вы можете хранить данные и манипулировать ею с серией инструкций. Данные и контейнеры для хранения данных являются основными строительными блоками в программах, и вы используете команды, функции и операторы для манипулирования данными и контейнеры для хранения данных.[7]

Хранение данных

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

Типы данных

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

Тип Примеры
Числовой 123 3.1415 – 7
Символьный "Пример Строки" "123" "01/01/98"
Логический .T. .F.
Дата {^1998-01-01}
ДатаВремя {^1998-01-01 12:30:00 p}
Контейнеры данных

Контейнеры данных позволяют выполнять одни и те же операции на множестве данных. Например, вы добавляете часы, которые работник отработал, умножаете их на почасовой оплаты труда, а затем вычитаете налоги, чтобы определить сумму заработной платы работника. Вы должны будете выполнять эти операции для каждого сотрудника и каждый платежный период. Если вы храните эту информацию в контейнерах, а также выполняете операции над контейнерами, вы можете просто заменить старые данные на новые и запустить ту же самую программу еще раз. В этой таблице перечислены некоторые из основных контейнеров для данных в Visual FoxPro.

Тип Описание
Переменные Одиночные элементы данных, хранящихся в оперативной памяти компьютера (Random Access Memory).
Записи таблицы Несколько строк заранее определенных полей, каждое из которых может содержать предварительно определенный фрагмент данных. Таблицы сохраняются на диске.
Массивы Несколько элементов данных, хранящихся в оперативной памяти.


Операции над данными

Используя операторы

Операторы связывают данные вместе. Ниже приведены наиболее распространенные операторы в Visual FoxPro. [8]

Оператор Допустимые типы данных Пример Результат
= Все  ? n = 7 Выводит .T. если значение, хранящееся в переменной n, равно 7, .F. — в противном случае
+ Числовой, Символьный, Дата, ДатаВремя  ? "Fox" + "Pro" Выводит "FoxPro"
 ! or NOT Логический  ? !.T. Выводит .F.
*, / Числовой  ? 5 * 5
 ? 25 / 5
Выводит 25
Выводит 5

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

nFirst = 123
nSecond = 45

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

cFirst = "123"
cSecond = "45"

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

? nFirst + nSecond
? cFirst + cSecond
Используя команды

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

Например, команда USE позволяет открывать и закрывать таблицы.

USE синтаксис Описание
USE Закрывает таблицу в текущей рабочей области.
USE customer Открывает таблицу CUSTOMER в текущей рабочей области, закрывает любую таблицу, которая была уже открыта в рабочей зоне.
USE customer IN 0 Открывает таблицу CUSTOMER в следующей доступной рабочей зоне. [9]
USE customer IN 0;
ALIAS mycust
Открывает таблицу CUSTOMER в следующей доступной рабочей области и присваивает рабочей области псевдоним mycust.

В следующей таблице приведены некоторые примеры команд.

Команда Описание
DELETE Помечают указанные записи для удаления.
REPLACE Заменяет значение поля новым значением.
Go Устанавливает указатель записи на определенное место в таблице.

Контроль хода выполнения программы

Visual FoxPro включает в себя особую категорию команд, осуществляющую "циклический переход" других команд и функций, определяя, когда и как часто другие команды и функции выполняются. Эти команды позволяют делать условные переходы и циклы — два очень мощных инструмента программирования. Следующая программа иллюстрирует условные ветвления и циклы. Эти концепции описаны более подробно на примере.

Предположим, у вас было 10000 сотрудников и вы хотите повысить зарплату всем, кто зарабатывает 30 000 $ или больше, на 3 процента, а всем, кто зарабатывает менее $ 30 000, — на 6. Следующий пример программы выполняет эту задачу.

SCAN                            && Код между SCAN и ENDSCAN выполняется столько раз, сколько записей в таблице.
    IF salary >= 30000.00       && Для каждой записи, если зарплата >30000, заменить это значение на новое, что на 3% выше.
        REPLACE salary WITH ;   && Точкой с запятой (;) после того, как WITH означает, что команда продолжается на следующей строке.
        salary * 1.03
    ELSE                        && Для каждой записи, если зарплаты <30000, заменить это значение на новое, что на 6% выше.
        REPLACE salary WITH ;
        salary * 1.06
     ENDIF
ENDSCAN
Условное ветвление

Условное ветвление позволяет проверить условия, а затем, в зависимости от результатов этого теста, выполнять различные операции. Есть две команды в Visual FoxPro, которые позволяют условное ветвление:

  • IF ... ELSE ... ENDIF
  • DO CASE ... ENDCASE

Код между первоначальным утверждением и ENDIF или ENDCASE выполняется только если логическое условие оценивается как истина (.T.). В примере программы команда IF используется для различения между двумя состояниями: либо зарплата составляет $ 30 000 или более, либо нет. В зависимости от этого выполняются разные участки кода.

В следующем примере, если значение переменной nWaterTemp меньше, чем 100, никаких действий не предпринимается:

* установить логическую переменную истина, если условие выполнено.
IF nWaterTemp >= 100
   lBoiling = .T.
ENDIF

Если существует несколько возможных условий для проверки, то блок DO CASE, ... ENDCASE может быть более эффективным, ввиду того, что его легче отслеживать, чем несколько IF.

Циклы

Циклы позволяют выполнять одну или несколько строк кода столько раз, сколько вам нужно. Есть три команды в Visual FoxPro, которые позволяют делать зацикливание:

  • DO WHILE ... ENDDO
  • FOR ... ENDFOR
  • FOR EACH ... ENDFOR
  • SCAN ... ENDSCAN

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

Используйте FOR, когда вы знаете, сколько раз часть кода должна быть выполнена. Например, вы знаете, что есть определенное количество полей в таблице. Поскольку функция DCOUNT() возвращает этот номер, вы можете использовать цикл, чтобы напечатать имена всех полей в таблице:

FOR nCnt = 1 TO FCOUNT( )
   ? FIELD(nCnt)
ENDFOR

Используйте DO WHILE, когда вы хотите выполнять фрагмент кода до тех пор, пока выполняется определенное условие. Вы можете не знать, сколько раз код будет выполняться, но вы знаете, когда он должен прекратить выполнение. Например, давайте предположим, что у вас есть таблица с именами и инициалами людей, и вы хотите использовать инициалы, чтобы искать людей вверх. У вас возникла бы проблема, если бы вы попытались добавить человека, который имел те же инициалы, как кто-то другой уже в вашей таблице.[10]

Чтобы решить эту проблему, можно добавить номер к инициалам. Например, идентификационный код Иванова Ивана мог бы быть II. Следующий человек с теми же инициалами, например, Ильясов Илья, будет иметь II1. Если вы затем добавили Ирину Иркину в таблицу, ее идентификационный код был бы II2. Цикл WHILE DO позволяет найти правильный номер для добавления к инициалами.

nHere = RECNO()                   && Сохранить местоположение записи.
cInitials = LEFT(firstname,1) + ; && Получить инициалов человека от первых букв FirstName и LastName полей.
LEFT(lastname,1)                  && Установить переменную для хранения числа, которые будут добавлены к концу инициалы человека.
nSuffix = 0
LOCATE FOR person_id = cInitials  && Смотрит, есть ли другой человек, в таблице с теми же инициалами.
DO WHILE FOUND( )                 && Если другая запись в таблице имеет значение person_id, которое так же, как cInitials, то FOUND() истинно
    nSuffix = nSuffix + 1         && Создать новый индекс и добавить его после инициалов.
    cInitials = ;
    LEFT(cInitials,2);
    + ALLTRIM(STR(nSuffix))
    CONTINUE                      && CONTINUE вызывает последний LOCATE
ENDDO                             && Конец DO WHILE цикла.
GOTO nHere                        && Вернуь запись и сохранить идентификационный код в поле person_id.
REPLACE person_id WITH cInitials

Потому что вы не знаете заранее, сколько раз вы найдете соответствующие коды идентификации, вы используете цикл DO WHILE.

Примечания