Основы языка visual foxpro


Содержание

Иллюстрированный самоучитель по Visual FoxPro 8

Объекты Visual FoxPro

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

В Visual FoxPro вся информация хранится в базе данных, которая состоит из таблиц, отношений между таблицами, индексов, триггеров и хранимых процедур. Каждая таблица имеет уникальное имя и хранится в отдельном файле, наименование которого совпадает с именем таблицы. Созданный файл имеет расширение DBF.

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

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

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

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

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

Для отображения и редактирования данных используются формы, отчеты, запросы и программы. При создании форм, отчетов и запросов применяются конструкторы. Поэтому эти компоненты часто называют конструкторскими объектами. Формы и отчеты являются составными объектами, так как они состоят из более мелких объектов (таких как поля, кнопки, диаграммы, рамки, OLE-компоненты и т. п.), которые называются объектами интерфейса.

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

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

Запросы являются средством выборки данных из одной или нескольких таблиц. В Visual FoxPro для создания запроса вы можете использовать как конструктор запросов, так и специализированный язык Structured Query Language (SQL). Результаты выполнения запроса могут отображаться в форме, выводиться в виде отчетов и диаграмм или сохраняться в указанной вами таблице.

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

Основы языка visual foxpro

Язык программирования FoxPro

FoxPro (Фокс-про?) — один из диалектов языка программирования xBase

Думаю, любой профессиональный программист поморщиться при упоминании «языка программирования FoxPro».

Но ведь данный инструмент и не расчитан на профессионального программиста.

Это очень простой, практически серьмяжный язык программирования, не оттягощенный объектно-ориентированными заморочками.

Встроенный в программу Интерпретатор FoxPro синтаксически мало чем отличается от класического. Но есть и отличия

  1. Важное принципиальное отличие заключается в том, что класический FoxPro интерпретатор рассматривает любую ранее не объявленную переменную как поле базы данных в текущей рабочей области, причем это станет известно только на этапе выполнения. Встроенный в программу Интерпретатор FoxPro требует, чтобы обращение к полю базы данных было записано по правилу ИмяАлиаса.ИмяПоля.
  2. Кроме того встроенный интерпретатор не поддерживает операторы и функции, связанные со средой FoxPro
  3. Названия переменных можно писать по-русски
  4. Есть функции, которые отсутствуют в FoxPro, например, DayMonthCount, IsLeapYear и т.д.
  5. Есть функции специфичные для данной задачи, так называемые Бухгалтерские функции.


Операторы и функции приведены в алфавитном порядке.

  1. ABS( ) возвращает абсолютное значение числового .
  2. ACOS( ) или ARCCOS( )Возвращает арккосинус заданного числового выражения.
  3. ALLTRIM( ) возвращает заданное символьное выражение, у которого отсечены как ведущие, так и завершающие пробелы.
  4. ANSITOOEM( ) возвращает заданное символьное выражение преобразованное из WINDOWS в MS-DOS.
  5. ARCCOT( ) возвращает арккотангенс .
  6. ARCCOTH( ) возвращает гиперболический арккотангенс .
  7. ARCCSC( ) возвращает арккосекант .
  8. ARCCSCH( ) возвращает гиперболический арккосекант .
  9. ARCSEC( ) возвращает арксекант .
  10. ARCSECH( )возвращает гиперболический арксекант .
  11. ASC( ) возвращает код ASCII первого слева символа строки.
  12. ASIN( ) или ARCSIN( ) Возвращает арксинус заданного числового выражения.
  13. ATN2( , ) Возвращает арктангенс числового выражения в радианах для всех четырех квадрантов.
  14. AT( , ) выполняет поиск позиции, с которой начинается в и возвращает номер позиции.
  15. ATC( , [, ]) выполняет поиск позиции, с которой начинается в и возвращает номер позиции.
  16. ATAN( ) или ARCTAN( ) возвращает арктангенс числового выражения в радианах от -«пи»/2 до +»пи»/2 (от -1.57079 до 1.57079).
  17. BEEP( ) проигрывает звукой файл формата *.wav, заданный параметром .
  18. BITAND( , ) Возвращает результат побитовой операции И (AND), выполняемой над двумя числовыми значениями.
  19. BITCLEAR( , ) Сбрасывает (устанавливает равным 0) заданный бит числового значения и возвращает результирующее значение.
  20. BITNOT( ) Возвращает результат побитовой операции НЕ (NOT), примененной к числовому значению.
  21. BITOR( , ) Возвращает результат побитовой операции включающего ИЛИ (OR), выполненной над двумя числовыми значениями.
  22. BITSET( , ) Устанавливает бит числового значения равным 1 и возвращает результат.
  23. BITXOR( , ) Возвращает результат побитовой операции исключающего ИЛИ (XOR), выполненной над двумя числовыми значениями.
  24. CAPSLOCK([ ]) переключает одноименную клавишу фиксации верхнего регистра на клавиатуре либо просто возвращает значение ее текущего состояния.
  25. CDOW( ) возвращает символьное название дня недели в заданном выражении типа даты.
  26. CEILING( ) возвращает ближайшее целое, которое больше, чем или равно .
  27. CHR( ) оценивает заданное и возвращает символ, у которого код ASCII соответствует этому числу (результату выражения)
  28. CHRTRAN( , , ) выполняет перекодировку выражения, заданного в , используя и в качестве таблиц перекодировки.
  29. CMONTH( )
  30. COS( ) возвращает косинус . Значение этого числового выражения есть угол, измеренный в радианах.
  31. COSH( ) Возвращает гиперболический косинус заданного числа, которое является углом в радианах.
  32. COTH( ) Возвращает гиперболический котангенс заданного числа, которое является углом в радианах.
  33. CSC( ) Возвращает косекант заданного числа, которое является углом в радианах.
  34. CSCH( ) Возвращает гиперболический косекант заданного числа, которое является углом в радианах.
  35. CTOD( ) преобразовывает дату из символьного формата в формат даты.
  36. DATE() возвращает текущее значение системной даты.
  37. DAY( ) возвращает порядковый номер дня месяца в заданном выражении типа даты.
  38. DAYMONTHCOUNT( ) или DAYMONTHCOUNT( , ) возвращает количество дней в месяце, который задан либо датой, либо парой месяц, год
  39. DISKSPACE() возвращает объем свободного пространства (в байтах) на дисковом устройстве, активном по умолчанию.
  40. DMY( ) возвращает выражение даты в европейском формате (День, Месяц, Год) для заданной даты. Месяц всегда возвращается в полном написании.
  41. DO CASE Это команда структурного программирования, обеспечивающая выбор одной последовательности команд из набора возможных альтернатив.

DO WHILE Это команда структурного программирования, обеспечивающая повторение последовательности команд, заключенной в конструкции DO WHILE. ENDDO до тех пор, пока заданное условие «истинно».

  • DOW( ) возвращает порядковый номер дня недели в заданном выражении типа даты.
  • DTOC( [, ]) преобразует заданное выражение в символьную строку. Формат даты определяется командами В функции DTOC() можно задать необязательный аргумент, обеспечивающий возврат значения в формате ГГГГММДД.
  • DTOR( ) Преобразует заданное значение угла в градусах в радианную меру.
  • DTOS( )Функция DTOS преобразует заданное выражение типа даты в символьную строку, состоящую из восьми цифр в формате ГГГГММДД.
  • EMPTY( ) возвращает логическое значение истина .T., если заданное выражение является «пустым».
  • EXP( ) Возвращает значение константы «e» в степени х. это экспонента x, а значение e приблизительно равно 2.71828.
  • FILE( ) Возвращает логическое значение «истина» (.T.), если символьное выражение является именем существующего файла.
  • FACTOR( ) Возвращает факториал числа .
  • FLOOR( ) Возвращает ближайшее целое число, которое меньше чем или равно заданному .
  • FOR. ENDFOR Выполняет команды в цикле указанное число раз.
  • GOMONTH( , ) Возвращает дату, отстоящую на месяцев от заданной в . Возвращаемое значение — дата
  • HYPOT( X, Y) возвращает длину гипотенузы правильного треугольника. Используется формула Sqrt(X**2 + Y**2)
  • IF. ELSE. ENDIF Команда структурного программирования, обеспечивающая выполнение команд по условию.
  • IIF( , , ) Функция IIF() возвращает значение или в зависимости от значения .
  • INSMODE([ ]) Устанавка режима вставки/замещения. Возвращаемое значение — логическое
  • INT( ) Возвращает целую часть значения . Возвращаемое значение — числовое
  • ISALPHA( ) Возвращает логическое значение «истина» (.T.), если заданное начинается с прописной или строчной буквы. Возвращаемое значение — логическое
  • ISDIGIT( ) Возвращает .T., если начинается с цифры. Возвращаемое значение — логическое
  • ISLEAPYEAR( ) Возвращает .T., если год в високосный. Возвращаемое значение — логическое
  • ISLOWER( ) Возвращает .T., если начинается со строчной (нижнего регистра) буквы. Возвращаемое значение — логическое
  • ISUPPER( ) Возвращает .T., если начинается с Прописной (верхнего) буквы. Возвращаемое значение — логическое
  • LEFT( , ) Возвращает указанное число символов, начиная с самого левого символа в . Возвращаемое значение — символьное
  • LEN( )Функция LEN возвращает длину символьного выражения Возвращаемое значение — числовое
  • LENGTHOFTIME( [, ]) возвращает название периода времени, заданного выражениями и Возвращаемое значение — символьное.
  • LOG( ) или LN( ) Возвращает натуральный логарифм указанного числа. Базой натуральных логарифмов является число e.Возвращаемое значение — числовое
  • LOG10( ) Возвращает десятичный логарифм указанного числа. Базой десятичных логарифмов является число 10. Возвращаемое значение — числовое
  • LOG2( ) Возвращает двоичный логарифм указанного числа. Базой двоичных логарифмов является число 2. Возвращаемое значение — числовое
  • LOGN( , ) Возвращает логарифм числа по основанию . Возвращаемое значение — числовое
  • LOWER( ) преобразует все прописные буквы в строчные. Возвращаемое значение — символьное
  • LTRIM( ) Удаляет ведущие пробелы в заданном символьном выражении. Возвращаемое значение — символьное
  • MAX( , [, . ]) Возвращает наибольшее значение из заданного списка.
  • MDY( ) Конвертирует в строку формата МЕСЯЦ ДД ГГГГ. Возхвращаемое значение — символьное
  • MEMORY() Возвращает объем свободной памяти в килобайтах. Возвращаемое значение — числовое
  • MIN( , [, . ]) Возвращает наименьшее из списка выражений. Возвращаемое значение — символьное, числовое или дата
  • MOD( , ) Функция MOD возвращает остаток от деления на . Возвращаемое значение — числовое
  • MONTH( ) Функция MONTH возвращает номер месяца (от 1 до 12) из выражения типа даты.Возвращаемое значение — числовое
  • NUMLOCK([ ]) Возвращает состояние клавиши NumLock или переключает NumLock. Возвращаемое значение — логическое
  • OCCURS( , ) Возвращает число, означающее, сколько раз одно символьное выражение встретилость в другом. Возвращаемое значение — числовое
  • OEMTOANSI( ) Задает символы, которые следует преобразовать в соответствующие символы набора ANSI.
  • OLDYEAR( , ) Возвращает количество лет между датами и . Возвращаемое значение — цифровое
  • OS() Возвращает имя и версию опрационной системы, под которой Вы работаете. Возвращаемое значение — символьное
  • PADC( , [, ]) Возвращают в виде символьной строки заданное первым аргументом выражение, дополненное третьим аргументом до длины, заданной вторым аргументом и вставляет символы-заполнители с обеих сторон
  • PADL( , [, ])Возвращают в виде символьной строки заданное первым аргументом выражение, дополненное третьим аргументом до длины, заданной вторым аргументом и вставляет символы-заполнители слева
  • PADR( , [, ])Возвращают в виде символьной строки заданное первым аргументом выражение, дополненное третьим аргументом до длины, заданной вторым аргументом и вставляет символы-заполнители справа.
  • PI() Возвращает числовую константу «пи» (приблизительно равна 3.141592), определяемую как результат деления длины окружности на ее диаметр.
  • PROPER( ) Возвращает заданное , преобразуя в нем первую букву каждого слова в прописную, а остальные в строчные. Возвращаемое значение — символьное
  • RAND([ ]) Возвращает случайное число от 0 до 1. Возвращаемое значение — числовое
  • RAT( , ) Функция RAT (реверсивное AT) просматривает , начиная справа и двигаясь налево, пытаясь при этом обнаружить подстроку, заданной в .
  • REPLICATE( , ) Повторяет заданное столько раз, сколько указано в .
  • RIGHT( , ) Возвращает указанное в число символов, начиная с самого правого символа в или символьной временной переменной.
  • ROUND( , ) Округляет значение числа, заданного , до указанного в количества десятичных знаков.
  • RTOD( ) Возвращает значение угла в градусах, тогда как аргумент функции — значение в радианах.
  • RTRIM( ) или TRIM( ) обрезает хвостовые пробелы из заданной строки символов. Возвращаемое значение — символьное
  • SEC( ) Функция Sec возвращает секант .
  • SECH( ) Функция SecH возвращает гиперболический секант .
  • SECONDS() Возвращает системное время в секундах в формате СЕКУHДЫ.ТЫСЯЧHЫЕ с точностью до миллисекунды.
  • SHOWMESSAGE( ) Вызов ShowMessage отображает простое окно сообщения с кнопкой OK. Текст сообщения задается параметром . Заголовок окна совпадает с именем выполняемого файла приложения.
  • SIGN( ) Возвращает 1, -1 или 0 в зависимости от знака числового выражения .
  • SIN( ) Возвращает синус заданного числа, которое является углом в радианах. Угол, заданный в градусах, преобразуется к радианной мере функцией DTOR().
  • SINH( ) Возвращает гиперболический синус заданного числа, которое является углом в радианах.
  • SPACE( ) Функция SPACE возвращает строку символов, состоящую из заданного числа пробелов.
  • SQRT( ) Возвращает значение квадратного корня заданного .
  • STOD( String ) Функция STOD, обратная DTOS(). STOD() переводит строку (CCYYMMDD) в выражение даты.
  • STR( [, [, ]]) преобразует числовое выражение в символьную строку. Может иметь 1, 2 или 3 аргумента.
  • STRTRAN( , [, ][, ][, ])
  • STRZERO( [, [, ]]) Функция STRZERO преобразует числовое выражение в символьную строку с заменой левых пробелов «0».
  • STUFF( , , , ) Модифицирует любую часть строки символов, не требуя изменения всей строки.
  • SUBSTR( ), [, ]) Функция SUBSTR возвращает указанное число символов из , которое может быть символьной строкой, текстовым полем или символьным полем базы данных.
  • TAN( ) Возвращает значение тангенса для угла, заданного в в радианах. Возвращаемое значение — числовое
  • TANH( ) Возвращает гиперболический тангенс заданного числа, которое является углом в радианах.
  • TIME() Функция TIME возвращает системное время в виде символьной строки формата ЧЧ:ММ:СС.
  • TRANSFORM( , ) позволяет задавать шаблон формата вывода символов и чисел. Функция возвращает отформатированные данные.
  • UPPER( ) Функция UPPER конвертирует строчные буквы в прописные в заданном символьном выражении.
  • VAL( ) Функция VAL преобразует в числовое выражение.
  • WORD( , [, ]) позволяет выделить из строки, заданой слово номер .
  • YEAR( ) Функция YEAR возвращает числовое значение года, взятое из .
  • Ностальгия по Visual FoxPro

    Успех и закат славы

    Если вы никогда ничего не слышали о Visual FoxPro, значит, вы стали интересоваться информационными технологиями в ту эпоху, когда этот программный продукт уже пережил пик своей популярности. А если нет — почему бы не вспомнить об этом действительно интересном и полезном средстве разработки?


    Введение, или совсем чуть-чуть истории

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

    Вот тогда-то и появился инструмент, которому впоследствии суждено было войти в историю индустрии разработки программного обеспечения под именем FoxPro. Началась же история этого, без преувеличений, легендарного средства разработки более четверти века назад, в уже далеком 1984 году, когда компания Fox Software начала проект под названием FoxBase. Долго ли, коротко ли, но в 1992 году компанию приобрела разросшаяся не на шутку корпорация Microsoft, и именно тогда у продукта, который уже назывался FoxPro, в названии появилась приставка Visual. Под руководством Microsoft продукт развивался и совершенствовался на протяжении последующих пятнадцати лет, до тех пор, пока в 2007 году не вышло последнее официальное обновление для Visual FoxPro — до версии 9.0 Service Pack 2. Конечно, на протяжении пятнадцати лет существования Visual FoxPro в историю продукта было вписано немало интересных страниц, но рассматривать их здесь сейчас не стоит, потому что вряд ли кому-то, кроме тех, кто плотно работал с Visual FoxPro, это будет действительно интересно, да и место, которое доступно одной отдельно взятой газетной статье, также ограничено.

    Можно, конечно, привести тысячи причин, по которым Microsoft решила прекратить поддержку Visual FoxPro, но главная из них, на мой взгляд, все-таки состоит в том, что Visual FoxPro плохо согласовалась с продвигаемой корпорацией платформой .NET. Тем не менее, Visual FoxPro до сих пор используется многими разработчиками, и не только для внесения по мере эксплуатации исправлений и улучшений в уже существующие проекты. Так что говорить об этом программном продукте исключительно и только в ретроспективном аспекте было бы не совсем правильно. Поэтому, несмотря на название этой статьи, рассказ будет не столько об упадке былой популярности Visual FoxPro, сколько о самом этом программном продукте, даже сейчас, спустя столько лет после выхода своей последней версии, заслуживающем внимания со стороны достаточно широкой аудитории.

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

    Любое средство разработки, в первую очередь, характеризуется тем языком программирования (или несколькими из них), который оно предлагает использовать в процессе разработки программного обеспечения. В случае Visual FoxPro таким языком, соответственно, будет FoxPro. Язык этот, который может показаться уже несколько морально устаревшим с позиций сегодняшних реалий индустрии программирования, до сих пор, тем не менее, обеспечивает вполне качественное решение задач, возникающих у большинства разработчиков прикладных приложений. Язык, который закладывался в эту среду её первыми разработчиками, берет свои истоки от xBase — языка программирования, который изначально был «заточен» под работу с dBase и, конечно, сильно отличался от того языка, который был «на вооружении» людей, имевших дело с FoxPro в те годы, когда эта среда ещё даже не перешла под «покровительство» Microsoft. В Visual FoxPro в распоряжении программиста имеется мощный объектно-ориентированный язык, позволяющий легко оперировать данными благодаря непосредственно встроенным в язык операторам.

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

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

    Как ни крути, но современное средство разработки приложений — это не только сам язык программирования, который, конечно, имеет первостепенную важность, но ещё и такая «мелочь», как среда разработки, с которой непосредственно взаимодействует программист. Поэтому поговорить о Visual FoxPro именно с этой позиции будет, я так полагаю, далеко не лишним.

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

    На самом же деле, среда Visual FoxPro, как и другие продукты, названия которых начинаются с «Visual», весьма дружелюбна к разработчику. Подсветка синтаксиса кода, разнообразные подсказки по ходу написания кода, отладчик (какая же интегрированная среда разработки без него?), визуальный редактор форм, существенно упрощающий жизнь разработчика при проектировании интерфейса. В общем, как ни крути, среда разработки, созданная крупнейшим в мире разработчиком софта, так или иначе должна была соответствовать этому высокому званию.

    Возвращаясь к вопросу о том, почему дальнейшая разработка Visual FoxPro была прекращена, стоит обратиться к первоисточнику — то есть, к объяснениям, которые дала по этому поводу сама корпорация Microsoft.

    Во-первых, по словам представителей корпорации, дальнейшее развитие этого программного продукта не мыслилось без создания его 64-битной версии. Для этого пришлось бы практически полностью переписывать «ядро» Visual FoxPro, что не входило в планы Microsoft. Во-вторых, дальнейшее развитие Visual FoxPro — продукта, использовавшего собственный «движок» для работы с базами данных, — выглядело не слишком логично в свете достаточно солидных инвестиций в создание полноценной промышленной СУБД SQL Server, имеющей бесплатную версию SQL Server Express Edition, практически полностью покрывающую потребности большинства пользователей Visual FoxPro. Ну а в-третьих, популярность Visual FoxPro стабильно снижалась, и слухи о том, что это средство разработки планируется перестать совершенствовать, ходили ещё с начала 2000-х годов.

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

    Основы языка visual foxpro

    Visual FoxPro — это полнофункциональный язык объектно-ориентированного программирования. Он предлагает мощные средства для интерактивной работы и создания приложений, предназначенных для управления реляционными базами данных. И, что не менее важно, этот язык прост в изучении. Кроме того, программы, написанные на языке Visual FoxPro 7.0, будут совместимы с программами, написанными на Visual FoxPro предыдущих версий.

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

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

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

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

    Visual FoxPro содержит большое число базовых классов (табл. 19.1), которые можно использовать при создании форм любой сложности. Единственным недостатком базовых классов является невозможность их модификации, но вы можете использовать базовые классы для создания пользовательских классов, полностью вами управляемых. Далее при создании форм можно применять пользовательские классы вместо базовых.

    Таблица 19.1. Базовые классы Visual FoxPro

    Наименование Назначение Видимый Контейнер
    ActiveDoc Активный документ Нет Нет
    Checkbox Флажок Да Нет
    Column Столбец Да Да
    ComboBox Раскрывающийся список Да Нет
    CoiranandButton Кнопка управления Да Нет
    CommandGroup Набор кнопок управления Да Да
    Container Контейнер Да Да
    Control Базовый визуальный класс Да Нет
    Custom Базовый невизуальный класс Нет Нет
    EditBox Поле редактирования Да Нет
    Form Форма Да Да
    Forms et Набор форм Нет Да
    Grid Таблица Да Да
    Header Заголовок столбцов таблицы Да Нет
    HyperLink Object Гиперссылка Нет Нет
    Image Изображение Да Нет
    Label Надпись Да Нет
    Line Линия Да Нет
    ListBox Список Да Нет
    OleContainerControl OLE-объект управления
    OleBoundControl OLE-объект данных
    OptionButton Переключатель Да Нет
    OptionGroup Набор переключателей Да Да
    Page Вкладка формы Да Да
    Page Frame Макет страницы Нет Да
    ProjectHook Проект Нет Да
    Separator Разделитель Да Нет
    Shape Обрамление Да Нет
    Spinner Счетчик Да Нет
    TextBox Поле ввода Да Нет
    Timer Таймер Нет Нет
    ToolBar Панель управления Да Да

    Почти все базовые классы являются визуальными. Объекты, созданные на их основе, отображаются на экране. Некоторые из базовых классов невидимы. Они используются для объединения объектов (например, FormSet), обработки специальных событий (например, Timer) или создания невизуальных объектов (например, ProjectHook).

    В Visual FoxPro широко применяется вложенность классов. Вложенным является класс, являющийся частью другого класса, называемого контейнером (container class). Наиболее яркий пример контейнера представляет собой таблица, компоненты которой — это столбцы и надписи к ним. При создании формы и после запуска ее на выполнение вы можете получить доступ ко всем компонентам контейнера.

    Каждый базовый класс предназначен для выполнения определенных функций и обладает соответствующим набором свойств, методов и событий. Кроме свойств и событий, специфических для данного класса, каждый базовый класс содержит основной набор свойств (табл. 19.2) и событий (табл. 19.3).

    Таблица 19.2. Минимальный набор свойств класса

    Наименование Описание
    Class Тип класса
    BaseClass Базовый класс, на основе которого создан данный класс
    ClassLibrary Библиотека классов, в которой хранится данный класс
    ParentClass Определенный пользователем класс, на основе которого создан данный класс

    Таблица 19.3. Минимальный набор событий

    Наименование Описание
    Init Наступает при создании объекта
    Destroy Наступает при освобождении объекта из памяти
    Error Наступает при возникновении ошибки, связанной с объектом

    При создании форм мы широко использовали базовые классы, список которых содержится на панели инструментов конструктора формы. Для создания объектов на основе базового класса достаточно выбрать его на панели инструментов, поместить в требуемом месте, а затем определить свойства и методы созданных объектов. Созданный объект будет обладать всеми характеристиками базового класса. Пример создания объекта на основе базового класса Grid (Таблица) показан на рис. 19J.

    Для создания новых объектов можно использовать не только конструктор форм, но и функцию CREATEOBJECT, которая имеет следующий синтаксис:

    CREATEOBJECT(имяКласса [, параметр1, параиетр2, . ])

    Функция CREATEOBJECT возвращает идентификатор созданного объекта, который вы можете применять для ссылки на него. Например, для создания формы, определения ее заголовка и отображения формы на экране необходимо выполнить следующую последовательность команд:

    f rmNew. Caption=»Заголовок формы»

    Рис. 19.1. Создание объекта в конструкторе форм

    Свойства объектов, созданных на основе базовых классов

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

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

    • изменить свойства формы (заголовок, размер, цвет, расположение и т. п.);
    • изменить цвета полей ввода, тип их отображения, цвет и формат выводимой в них информации;
    • запретить ввод информации в поля, переход на них или же сделать их невидимыми и многое другое.

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

    • в меню View (Вид) выбрать команду Properties (Свойства);
    • нажать правую кнопку мыши и из контекстного меню объекта выбрать команду Properties (Свойства).

    В результате на экране появляется окно свойств текущего объекта (рис. 19.2). Свойства объектов могут принимать символьные, логические и числовые значения. Некоторые из них могут принимать произвольные значения (например, заголовок поля, его координаты). Другие свойства могут принимать значения из определенного списка.

    Рис. 19.2. Окно свойств объекта

    При программировании вы можете определить свойство объекта, указав имя объекта и имя свойства, которые разделяются точками. Для изменения свойства достаточно присвоить ему допустимое значение. Например:

    * присваиваем заголовку формы значение переменной cName

    frmNew. Caption = cName

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

    Для этого используется конструкция WITH .. . ENDWITH, которая имеет следующий синтаксис:

    Например, вы можете установить одинаковый цвет для группы объектов:

    Используя язык Visual FoxPro, можно изменять свойства объектов не только на этапе их создания, но и в процессе выполнения программы. Например, вы можете при переходе из режима просмотра в режим редактирования изменить заголовок формы «Просмотр списка клиентов», который является одним из свойств формы, на «Редактирование списка клиентов».

    Свойства, определенные для объектов с помощью окна свойств или программным путем, сохраняются в описании формы. Поэтому, если во время одного сеанса работы вы изменили свойства объектов, они сохранятся до следующего изменения. Изменение свойств объекта не приводит к генерации события, за исключением изменения свойства Value (Значение).

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

    Чтобы создать новое свойство объекта, используйте диалоговое окно New Property (Новое свойство) (рис. 19.3), которое открывается при выполнении команды New Property (Новое свойство) из меню Form (Форма). В этом диалоговом окне необходимо задать имя создаваемого свойства и описание.

    В диалоговом окне New Property (Новое свойство) находятся флажки, определяющие возможности, приведенные в табл. 19.4.

    Таблица 19.4. Флажки диалогового окна New Property

    Флажок Назначение
    Access Method (Метод доступа) Если установлен этот флажок, то для данного свойства будет автоматически создан метод Access (Доступ)
    Assign Method (Метод назначения> Если установлен флажок, то для этого свойства будет автоматически создан метод Assign (Назначение)

    Созданное вами свойство отображается на вкладке Other (Другие) окна свойств объекта. Далее вы можете присвоить созданному свойству требуемое значение в окне свойств объекта или программным путем и использовать его при выполнении приложения.

    Рис. 19.3. Диалоговое окно New Property

    Наследование событий и методов

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

    Аналогично свойствам, наследуются события и методы базового класса, на основе которого создается объект. Список методов, определенных для объекта, можно просмотреть на вкладке Methods (Методы) окна свойств объекта (рис. 19.4).

    Для каждого события определен соответствующий ему метод, который выполняется при возникновении данного события. Например, метод click (Нажатие) выполняется при нажатии кнопки мыши.

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

    Для каждого события объекта выполняется определенное в базовом классе действие. В некоторых случаях вам может понадобиться запретить выполнение этих действий. Для этого используйте ключевое слово NODEFAULT в начале метода, связанного с этим событием.

    Рис. 19.4. Вкладка Methods окна свойств объекта

    Рис. 19.5. Окно редактирования методов

    Методы, выполняющиеся при наступлении событий, в окне свойств объекта в списке методов в дополнение к имени содержат слово Event (Событие).

    Команда MOUSE позволяет вам программным путем имитировать события click (Нажатие), Doubleclick (Двойное нажатие), MouseMove (Перемещение мыши) и DragDrop (Перенести и оставить). Остальные события не могут имитироваться программно, но вы можете вызвать методы, связанные с этими событиями.

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

    Для создания нового метода в меню Form (Форма) выберите команду New Method (Новый метод) и в открывшемся диалоговом окне New Method (Новый метод) (рис. 19.6) определите имя и краткое описание метода. Созданный вами метод добавляется в список методов объекта, и вы можете открыть окно редактирования метода для ввода программного кода.

    Для выполнения метода необходимо не только указать имя метода, но и объект, к которому данный метод будет применяться. Имя объекта и имя метода разделяются точкой. Например, для выполнения метода CaicSum формы Sales необходимо выполнить команду Sales.CalcSumO .

    Рис. 19.6. Диалоговое окно New Method

    В табл. 19.5 и табл. 19.6 приведены события и методы, которые распознаются и используются Visual FoxPro, и их краткое описание.

    Таблица. 19.5. События, распознаваемые Visual FoxPro

    Событие Возникает
    Activate При активизации объектов FormSet (Набор форм), Form (Форма), Page (Вкладка формы) или при отображении объекта Toolbar (Панель управления)
    AfterBuilld При перестроении проекта или приложения, а также при создании динамической библиотеки (dll) или выполняемого файла (ехе) на основе проекта
    AfterCloseTables После закрытия таблиц или представлений данных
    AfterDock После того, как фиксируется панель инструментов
    AfterRowColChange При переходе в другую строку или другой столбец объекта Grid (Таблица)
    Bef oreDock Имеет место перед фиксацией объекта ToolBar (Панель управления)
    BeforeOpenTables Перед открытием таблиц и представлений, связанных со средой данных формы, набора срорм или отчета
    BeforeRowCoIChange Перед тем, как пользователь изменяет активную строку или столбец объекта Grid (Таблица)
    Click При нажатии и отпускании левой кнопки мыши
    CoramandTargetExec При активизации программой-контейнером приложения

    типа Active Document (Активный документ)

    CoinmandTarget Query При изменении программой-контейнером пользовательского интерфейса
    ContainerRelease При закрытии программой-контейнером приложения типа

    Active Document (Активный документ)

    DblClick При двойном нажатии и отпускании левой кнопки мыши
    Deactivate Когда деакти визируется объект типа «форма»
    Deleted Когда пользователь удаляет пометку записи на удаление или когда выдается команда DELETE
    Destroy Когда освобождается объект
    DownClick При нажатии кнопки со стрелкой, направленной вниз на объектах типа ComboBox (Раскрывающийся список), ListBox (Список) и Spinner (Счетчик)
    DragDrop После завершения операции «перенести-и-оставить»
    DragOver Когда элемент управления, переносимый с помощью мыши, накрывает объект назначения
    DropDown В момент, когда после нажатия кнопки со стрелкой в элементе управления ComboBox (Раскрывающийся список) должен появиться список
    Error При возникновении ошибки
    ErrorMessage Используется для определения сообщения об ошибке, когда событие Valid (Корректный) возвращает значение False (Ложь)
    GotFocus Когда объект получает фокус в результате действий пользователя или выполнения программного кода
    HideDoc При переходе из активного документа
    Init При создании объекта, когда объект еще не выведен на экран
    Interactive Change При изменении значения элемента управления с помощью клавиатуры или мыши
    KeyPress При нажатии и отпускании клавиши
    Load Имеет место непосредственно перед созданием объекта
    LostFocus Когда объект теряет фокус
    Message Отображает сообщение в строке состояния, когда объект получает управление
    MiddleClick При нажатии средней кнопки мыши (для трехкнопочной мыши)
    MouseDown При нажатии кнопки мыши
    MouseMove При перемещении указателя мыши по объекту
    MouseUp При отпускании кнопки мыши
    MouseWheel При вращении колесика мыши, если в мыши оно есть
    Moved При перемещении объекта на новое место или когда значения свойства Тор (Верхняя позиция) или Left (Левая позиция) объекта-контейнера изменяются программным способом
    OLECompleteDrag Когда данные помещены на новое место или отменена операция «перенести-и-оставить»
    OLEDragOver Возникает в том случае, если свойство OLEDropMode имеет значение 1 и данные перенесены от источника к приемнику
    OLEGiveFeedBack После каждого события OLEDragOver
    OLESetData Возникает у источника данных при выполнении метода GetData, если нет данных в нужном формате
    OLEStartDrag В начале переноса данных с помощью механизма «перенести-и-оставить»
    Paint При перерисовывании формы или панели инструментов
    ProgrammaticChange При изменении в коде значения элемента управления
    QueryAddvirtual Перед добавлением файла в проект
    QueryModifyvirtual Перед изменением файла в проекте
    QueryRemovevirtual Перед удалением файла из проекта
    QueryRunvirtual Перед выполнением файла или предварительным просмотром отчета или почтовой этикетки
    QueryUnload Перед выгрузкой объекта Form (Форма)
    RangeHigh Возвращает наибольшее значение счетчика или число элементов списка и имеет место, когда элемент управления Spinner (Счетчик) или TextBox (Поле ввода) теряет фокус и когда элемент управления comboBox <Раскрывающийся список) или ListBox (Список) получает фокус
    RangeLow Возвращает наименьшее значение счетчика или значение первого элемента списка и имеет место, когда элемент управления Spinner (Счетчик) или TextBox (Поле ввода) теряет фокус или когда элемент управления СошЬоВох (Раскрывающийся список) или ListBox (Список) получает фокус
    ReadActivate При активизации новой формы в наборе форм
    ReadDeactivate При деактивизации формы в наборе форм
    ReadShow Когда выдана команда SHOW GETS в активном объекте FormSet (Набор форм) активизируется объект FormSet (Набор форм)
    ReadValid Имеет место после деактивизации объекта FormSet (Группа форм)
    ReadWhen Имеет место после загрузки объекта FormSet (Группа форм)
    Resize При изменении размеров объекта
    RightClick При нажатии и отпускании правой кнопки мыши
    Run Имеет место, когда Active Document (Активный документ) готов к выполнению кода пользователя
    Scrolled При прокрутке данных в объекте управления Grid (Таблица)
    ShowDoc При переходе в активный документ
    Timer Когда истекает интервал времени, заданный свойством Interval (Интервал)
    UIEnable Имеет место для всех объектов, содержащихся внутри объекта Page (Вкладка формы), каждый раз, когда объект Page (Вкладка формы) активизируется или деактивизируется
    UnDock При перемещении объекта ToolBar (Панель управления) с помощью мыши
    Unload При освобождении объекта
    UpClick При нажатии кнопки с направленной вверх стрелкой на объектах управления типа СотЬоВох (Раскрывающийся список), ListBox (Список) и spinner (Счетчик)
    Valid Перед тем, как элемент управления теряет фокус
    When Перед тем, как элемент управления получает фокус

    Таблица 19.6. Методы, используемые Visual FoxPro

    Метод Описание
    ActivateCell Активизирует ячейку в элементе управления Grid (Таблица)
    AddColumn Добавляет объект Column (Столбец) в элемент управления Grid (Таблица)
    Add I tern Добавляет новый элемент списка в объект СотЬоВох (Раскрывающийся список) или ListBox (Список), предоставляв при этом возможность задать индекс элемента
    AddListltem Добавляет новый элемент списка в объект СотЬоВох (Раскрывающийся список) или ListBox (Список), давая возможность задать идентификатор элемента
    AddObject Добавляет объект в контейнер на этапе выполнения
    AddProperty Добавляет новое свойство в объект
    AddToSCC Добавляет файл в проект
    Box Рисует прямоугольник в форме
    Build Перестраивает проект или создает приложение (арр), динамическую библиотеку (dli) или выполняемый файл (ехе) из проекта
    Checkln Запоминает изменения, осуществленные в выбранном файле проекта
    Checkout Выбирает файл из проекта для изменения
    Circle Рисует окружность или эллипс в форме
    Cleanup Очищает таблицу проекта, удаляя записи с пометкой на удаление и сжимая Memo-поля
    Clear Очищает содержимое элемента управления СотЬоВох (Раскрывающийся список) или ListBox (Список)
    ClearData Очищает все данные и форматы данных в объекте Dataobject (Объект данных). Доступен только в режиме выполнения программы
    CloneObj ect Создает копию объекта со всеми его свойствами, событиями и методами
    Close Закрывает проект и очищает объекты ProjectHook (Проект) и Project (Проект)
    CloseTables Закрывает таблицы и представления данных, связанные со средой
    Cls Удаляет графику и текст из формы
    DataToClip Копирует группу записей в текстовом виде в буфер обмена Windows
    DeleteColumn Удаляет объект Column (Столбец) из элемента управления Grid (Таблица)
    Dock Располагает объект ToolBar (Панель управления) у границы основного окна Visual FoxPro
    DoCrad Выполняет команду Visual FoxPro для сервера приложения Visual FoxPro
    DoScroll Моделирует работу пользователя с полосами прокрутки в объекте Grid (Таблица)
    DoVerb Выполняет команду для заданного OLE-объекта
    Drag Начинает, заканчивает или отменяет операцию переноса объекта с помощью мыши
    Draw Перерисовывает объект формы
    Eval Вычисляет выражение и возвращает результат
    GetData Заполняет данные из объекта DataObject (Объект данных). Доступен только в режиме выполнения программы
    Get Format Возвращает True (Истина), если заданный формат доступен для объекта DataObject (Объект данных). Доступен только в режиме выполнения программы
    GetLatestVersion Определяет последнюю версию файла проекта и копирует файл с пометкой только для чтения на диск
    GoBack Возникает при возврате назад в списке хронологии программы-контейнера
    GoForward Возникает при переходе вперед в списке хронологии программы-контейнера
    Help Открывает окно справки
    Hide Скрывает объект Form (Форма), FormSet (Набор форм) или ToolBar (Панель управления), присваивая его свойству visible значение False (Ложь)
    IndexToItemID Возвращает индекс элемента с указанным идентификатором для объектов типа ComboBox (Раскрывающийся список) и ListBox (Список)
    Item Возвращает объектную ссылку на определенный файл, проект или сервер в файловом, проектном, серверном сборнике
    ItemlDToIndex Возвращает индекс позиции элемента в списке данного элемента управления для объектов типа ComboBox (Раскрывающийся список) и ListBox (Список)
    Line Рисует линию в форме
    Modify Открывает файл проекта для редактирования в соответствующем конструкторе или редакторе
    Move Перемещает объект
    NavigateTo Active Document (Активный документ) перемещается в контейнере в определенное место
    OLEDrag Начинает операцию «леренести-и-оставить»
    Point Возвращает цвет в модели RGB (красный-зеленый-синий) для заданной точки формы
    Print Выдает в объекте Form (Форма) символьную строку, которую нужно напечатать
    PSet Устанавливает для точки формы или основного окна Visual FoxPro основной цвет символов
    Quit Завершает работу Visual FoxPro
    ReadExpression Возвращает выражение, введенное в качестве значения свойства в окне свойств
    ReadMethod Возвращает текст заданного метода
    Refresh Перерисовывает объект Form (Форма) или элемент управления, обновляя все значения
    Release Освобождает объект FormSet (Набор форм) или Form (Форма) из памяти
    Remove Удаляет файл из сборника файла и проекта
    RemoveFromSCC Удаляет файл из проекта
    Remove I tern Удаляет элемент из списка элемента управления типа ComboBox (Раскрывающийся список) или ListBox (Список)
    RemoveListltem Удаляет элемент из списка элемента управления типа ComboBox (Раскрывающийся список) или ListBox (Список)
    RemoveObject Удаляет заданный объект из объекта-контейнера на этапе выполнения
    Requery Повторно опрашивает источник строк, к которому привязан элемент управления типа ListBox (Список) или ComboBox (Раскрывающийся список)
    RequestData Создает массив, содержащий данные из таблицы Visual FoxPro
    Reset Сбрасывает элемент управления Timer (Таймер) в нулевое состояние
    ResetToDefault Восстанавливает принятые по умолчанию в Visual FoxPro значения свойств, событий или методов
    Run Запускает файл проекта на выполнение или предварительный просмотр
    SaveAs Сохраняет объект в виде файла с расширением SCX
    SaveAsClass Сохраняет экземпляр объекта в качестве определения класса в библиотеке классов
    Set All Присваивает установку некоторого свойства всем элементам управления данного объекта Container (Контейнер) или определенному классу таких элементов управления
    SetData Помещает данные в DataObject (Объект данных). Доступен в режиме выполнения программы
    SetFocus Устанавливает фокус в элементе управления
    SetFormat Помещает формат данных в DataObject (Объект данных). Доступен в режиме выполнения программы
    SetMain Делает текущий файл главным в проекте
    SetVar Создает переменную и хранит ее значение
    SetViewPort Определяет значения ViewPortLeft и viewPortTop для формы
    Show Отображает объект Form (Форма) и определяет его тип — модальный или немодальный
    ShowWhatsThis Отображает тему справочной системы, заданную свойством

    WhatsThisHelpID

    TextHeight Возвращает высоту текстовой строки, используя единицу измерения, устанавливаемую свойством ScaleMode объекта Form (Форма)
    TextWidth Возвращает ширину текстовой строки, используя единицу измерения, устанавливаемую свойством ScaleMode объекта Form (Форма)
    UndoCheckOut Отменяет все изменения, осуществленные в выбранном файле, и оставляет его в проекте в неизмененном виде
    WhatsThisMode Отображает курсор мыши в виде вопросительного знака и устанавливает режим whats This Help (Справка типа «что это?»)
    WriteExpression Записывает символьную строку в таблицу свойств
    WriteMethod Записывает указанный текст в заданный метод
    ZOrder Помещает заданный объект Form (Форма) или элемент управления в заданную позицию данного объекта по отношению к другим объектам

    В Visual FoxPro имеются базовые классы, предназначенные для создания вложенных объектов, например, класс Grid (Таблица). При ссылке на вложенный объект необходимо перечислить все объекты, в которые он входит, разделяя элементы списка точками. Например, ссылка на столбец coicustomerid объекта customer типа Grid (Таблица) определяется следующим образом:

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

    Ссылка на активную форму осуществляется с помощью свойства ActiveForm (Активная форма) объекта (_SCREEN). Например, следующее выражение позволяет изменить заголовок активной формы:

    _SCREEN.ActiveForm.Caption= «Заголовок формы»

    Аналогично, свойство ActiveControi (Активный элемент управления) позволяет получить доступ к активному объекту формы, а свойство ActivePage (Активная вкладка) — к активной вкладке формы. Например, следующее выражение позволяет изменить надпись активной кнопки

    _SCREEN.ActiveControl.Caption= «Печать отчета»

    При ссылке на вложенный объект вы можете использовать свойство Parent (Родительский) и ключевые слова для идентификации объекта, к которому вы хотите получить доступ. Свойство Parent (Родительский) содержит ссылку на непосредственный контейнер объекта. Список ключевых слов и определяемые ими ссылки приведены в табл. 19.7.

    Таблица 19.7. Ключевые слова для идентификации объектов

    Наименование Ссылка
    THIS На сам объект
    THISFORM На форму, которая содержит объект
    THISFORMSET На группу форм, которая содержит объект

    Для примера определим цвет текущего объекта и объекта, являющегося его непосредственным контейнером, а также заголовки формы и группы форм, которые содержат данный объект:

    THISFORM.Caption=»Форма, содержащая объект»

    THISFORMSET.Caption=»Группа форм, содержащая объект»

    Каждый объект обрабатывает связанные с ним события независимо. Поэтому контейнер не может реагировать на события вложенного в него объекта даже в том случае, если данный объект не содержит метода для обработки события, а контейнер может реагировать на данное событие.


    Ранее мы рассмотрели команды создания формы и присвоения ей заголовка. Теперь дополним эти команды командами размещения в форме кнопки, являющейся по отношению к ней вложенным объектом:

    frmNew.Caption=»Форма, созданная с помощью команд»

    Команда frmNew.AddObject(«Button», «CommandButton») создает В frmNew на основе базового класса CommandButton (Кнопка управления) новый объект Button (Кнопка). Следующая команда делает видимой созданную кнопку. На рис. 19.7 показана форма, созданная этими командами.

    В прикладных программах объекты желательно сохранять невидимыми до полного определения всех их свойств.

    Рис. 19.7. Форма с вложенным объектом — кнопкой

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

    Для создания нового класса вы можете выполнить одно из следующих действий:

    • в окне проекта выбрать вкладку Classes (Классы) и нажать кнопку New (Новый);
    • в меню virtual (Файл) выбрать команду New (Новый), а затем в открывшемся диалоговом окне — опцию Class (Класс) и нажать кнопку New virtual (Новый файл);
    • в командном окне ввести команду CREATE CLASS,

    Независимо от выбранного вами способа, на экране откроется диалоговое окно New Class (Новый класс) (рис. 19.8).

    Рис. 19.8. Диалоговое окно New Class

    В поле ввода Class Name (Имя класса) этого диалогового окна укажите имя создаваемого класса, а в следующем поле ввода Based On (Базовый класс) — имя класса, на основе которого создается новый класс. Поле From (Откуда) доступно только для чтения и содержит имя библиотеки классов, из которой выбран базовый класс. При использовании базовых классов Visual FoxPro данное поле остается пустым.

    В поле ввода Store In (Сохранить в) необходимо ввести имя библиотеки, в которой будет храниться создаваемый класс. Библиотека классов представляет собой файл с расширением VCX. Вы можете выбрать созданные ранее библиотеки или указать новую библиотеку в диалоговом окне Save as (Сохранить как), которое вызывается при нажатии на кнопку, расположенную с правой стороны поля ввода.

    Для создания библиотеки классов вы можете воспользоваться командой CREATE CLASSLIB в командном окне.

    После ввода значений в поля нажмите кнопку ОК, в результате чего на экране появится окно конструктора классов. В основное меню Visual FoxPro добавляется пункт Class (Класс) (рис. 19.9), который содержит команды, описанные в табл. 19.8.

    Таблица 19.8. Назначение команд пункта меню C l ass

    Команда Назначение
    New Property (Новое свойство) Создает новое свойство
    New Method (Новый метод) Создает новый метод
    Edit Property/Method (Правка свойства/метода) Редактирует наименование созданного ранее метода или свойства
    Include virtual (Включить файл) Задает имя файла заголовка, содержащего описание предопределенных констант
    Class Info (Информация о классе) Отображает информацию о текущем классе

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

    Рис. 19.9. Окно конструктора классов

    Рассмотрим создание класса для просмотра данных из одиночной таблицы, который содержит кнопки для перемещения по записям и выхода из формы.

    1. Откройте проект sales, в окне проекта выберите вкладку Classes (Классы) и нажмите кнопку New (Новый).
    2. В открывшемся диалоговом окне New Class (Новый класс) в поле ввода Class Name (Имя класса) введите имя создаваемого класса bcSingleTable.
    3. Из списка Based On (Базовый класс) выберите базовый класс Form (Форма).
    4. В поле Store In (Сохранить в) введите имя библиотеки классов Forms (Формы), в которой будет храниться создаваемый класс.
    5. На экране появляется пустая форма. Прежде всего изменим свойство Caption (Надпись) формы, введя в поле ввода значения свойства текст Табличная форма просмотра.
    6. Далее разместим в верхней части формы текст заголовка и определим для него цвет и размер шрифта (рис. 19.10). Форма, созданная на основе данного класса, будет содержать размещенный в классе текст заголовка. Разработчику формы потребуется только изменить текст заголовка, причем будут соблюдены все стандарты на создаваемую форму.

    Рис. 19.10. Размещение заголовка формы

    1. Разместите в форме объект Grid (Таблица) и определите его свойства отображения данных, такие как шрифт, цвет, которые будут стандартными для просмотра данных в табличном виде.
    2. Установите для объекта Grid (Таблица) значение свойства Readonly (Только чтение) равным True (Истина), т. к. данную форму предполагается использовать только для просмотра данных.
    3. Для перемещения по записям, а также для выхода из формы используются кнопки, которые мы также разместим в форме и определим для них действия, выполняемые при нажатии на кнопки.
    4. Законченный вид класса приведен на рис. 19.11. Отметьте, что создание класса аналогично созданию формы.

    Рис. 19.11. Класс для просмотра данных в табличном виде

    Библиотеки классов используются для хранения созданных в Visual FoxPro пользовательских классов. Для создания библиотеки предназначено диалоговое окно New Class (Новый класс), рассмотренное нами в предыдущем разделе. При разработке приложения удобно иметь несколько библиотек классов, в которых размещаются отдельные группы классов. Например, в одной библиотеке можно располагать все классы кнопок, используемых в приложении, а в другой — классы форм.

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

    Для удаления класса из библиотеки выберите класс и нажмите кнопку Remove (Удалить) в окне проекта.

    При необходимости вы можете переименовать выбранный класс, используя команду Rename (Переименовать) контекстного меню окна проекта.

    Для удаления класса из библиотеки классов вы можете воспользоваться командой REMOVE CLASS, а для изменения имени класса — командой RENAME CLASS.

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

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

    Создание текстовой кнопки выхода из формы

    Рассмотрим создание класса кнопки выхода из формы. Будем использовать возможности, предоставляемые системой при создании подклассов.

    1. Откройте проект Sales.
    2. В окне проекта выберите вкладку Classes (Классы) и нажмите кнопку New (Новый).
    3. В открывшемся диалоговом окне New Class (Новый класс) в поле ввода Class Name (Имя класса) введите имя создаваемого класса bcCmdButton.

    Из списка Based On (Базовый класс) выберите базовый класс commandButton (Кнопка управления), а затем в поле ввода Store In (Сохранить в) введите имя библиотеки классов Buttons (Кнопки), в которой будет храниться создаваемый класс. Библиотека BASE.vex будет содержать пользовательские классы, созданные на основе базовых классов Visual FoxPro, которые содержат свойства, характерные для данного приложения. На начальной стадии разработки вы можете оставить свойства базового класса без изменения. Такой подход позволяет вам достаточно просто изменить свойства объекта, если в этом возникнет необходимость.

  • Завершив ввод в поля, нажмите кнопку ОК.
  • На экране появляется окно конструктора классов, содержащее кнопку. Так как кнопка не является контейнером, вы не можете добавить в нее другие объекты. Ваши возможности ограничены изменением свойств и методов объекта. Для создаваемого класса кнопки измените наименование шрифта, а затем установите свойство Caption (Надпись), введя в поле ввода значения свойства текст Кнопка (рис. 19.12).
  • Создание класса кнопки на этом завершено. Сохраните созданный класс и закройте окно конструктора классов.
  • Рис. 19.12. Создание класса кнопки

    1. Теперь приступим к созданию кнопки для выхода из формы. Находясь на вкладке Classes (Классы), нажмите кнопку New (Новый).
    2. В открывшемся диалоговом окне New Class (Новый класс) введите в поле ввода Class Name (Имя класса) имя создаваемого класса bcCmdTxtExit. В поле ввода Store In (Сохранить в) введите имя библиотеки классов

    Buttons (Классы), в которой будет храниться создаваемый класс. В данном случае для создания нового класса мы используем не базовый класс Visual FoxPro, а созданный на предыдущем шаге пользовательский класс. Поэтому нам необходимо указать не только имя класса, на основе которого будет создаваться новый класс, но и библиотеку, в которой он хранится. Для выбора библиотеки классов, а также класса из этой библиотеки, нажмите кнопку, расположенную правее списка Based On (Базовый класс). Откроется диалоговое окно Open (Открыть) (рис. 19.13).

    Рис. 19.13. Выбор класса из библиотеки классов

    1. Левая часть окна содержит стандартные средства выбора файла. В правой части диалогового окна находится список Class Name (Имя класса), который содержит список классов выбранной библиотеки. Выберите класс bcCmdButton, нажмите кнопку Open (Открыть), и вы вернетесь в диалоговое окно New Class (Новый класс), которое теперь будет содержать заполненные поля Based On (Базовый класс) и From (Откуда) (рис. 19.14). Нажмите кнопку ОК. В результате откроется окно конструктора классов, содержащее кнопку, которая наследует свойства класса (надпись на кнопке и шрифт), на основе которого мы будем создавать новый класс.

    Рис. 19.14. Диалоговое окно New Class после выбора пользовательского класса

    1. Для создаваемой кнопки измените надпись, введя в свойстве caption (Надпись) текст Выход.
    2. Используя свойство click (Нажатие), определите действия, выполняемые при нажатии на эту кнопку (рис. 19.15).
    3. Сохраните класс и закройте окно конструктора классов.

    Рис. 19.15. Определение свойств и методов для кнопки выхода из формы

    Создание кнопки, содержащей изображение, для выхода из формы

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

    1. На вкладке Classes (Классы) нажмите кнопку New (Новый).
    2. В открывшемся диалоговом окне New Class (Новый класс) введите в поле ввода Class Name (Имя класса) имя создаваемого класса bcCmdPicExit.

    В поле ввода Store In (Сохранить в) введите имя библиотеки классов Buttons, в которой будет храниться создаваемый класс. В качестве базового класса для создания нового класса выберите созданный на предыдущем шаге класс bcCmdTxtExit из библиотеки классов Buttons (Кнопки).

  • Для создаваемого класса наследуется метод, выполняемый при нажатии на кнопку мыши, поэтому нам необходимо только изменить внешний вид кнопки. Удалите надпись кнопки.
  • В поле ввода свойства Picture (Изображение) укажите имя файла с изображением, которое будет отображаться на кнопке (рис. 19.16).
  • Рис. 19.16. Определение кнопки с изображением

    Аналогичным образом вы можете создать классы для кнопок перемещения по записям и разместите их в библиотеке Buttons (Кнопки).

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

    1. Откройте Проект Sales.
    2. В окне проекта перейдите на вкладку Classes (Классы), выберите в библиотеке Forms (Формы) класс bcSingieTabie и нажмите кнопку Modify (Модифицировать).
    3. В окне конструктора классов появится созданный нами ранее пользовательский класс формы для просмотра данных из одиночной таблицы.
    4. Удалите из него созданные ранее кнопки.
    5. Нажмите кнопку View Classes (Показать классы) WI на панели инструментов Form Controls (Элементы управления формы).
    6. На экране появляется меню кнопки, содержащее список библиотек классов, а также команду Add (Добавить), которая позволяет добавить в этот список новую библиотеку. Выберите команду Add (Добавить).
    7. В открывшемся диалоговом окне Open (Открыть) выберите созданную пользовательскую библиотеку Buttons (Кнопки) и нажмите Open (Открыть). В результате выбора наименования библиотеки классов в меню кнопки View Classes (Показать классы) появляется команда Buttons (Кнопки).
    8. Выберите команду Buttons (Кнопки). На панели инструментов Form Controls (Элементы управления формы) размещаются значки классов выбранной библиотеки. Теперь можно размещать эти объекты в классе обычным образом.
    9. Выберите на панели инструментов кнопки перемещения по записям и кнопку выхода из формы и разместите их в форме. Создание кнопок управления на этом заканчивается, т. к. действия, выполняемые ими, наследуются из классов кнопок. Вкладка Other (Другие) окна свойств содержит наименования класса объекта и библиотеки классов (рис. 19.17).

    Рис. 19.17. Размещение объекта, основанного на пользовательском классе

    Для просмотра информации о классе и определения значка для него используется диалоговое окно Class Info (Информация о классе), открываемое при выборе из меню Class (Класс) команды Class Info (Информация о классе).

    Вкладка Class (Класс) содержит поля ввода изображений значков классов и поле редактирования Description (Описание), в которое можно ввести краткое описание класса.

    На вкладке Members (Члены) (рис. 19.18) отображается список объектов класса, а также перечень методов и свойств. Столбец Class (Класс) содержит наименование объектов, а столбец Name (Наименование) — свойства и методы класса. С помощью параметра Visibility (Видимость), который может принимать одно из трех значений — Public (Открытый), Protected (Защищенный) и Hidden (Скрытый), вы можете установить степень защищенности объекта, а в столбце No Init (He инициализировать) указать, будет ли выполняться метод init (Инициализация) при создании объекта.

    Рис. 19.18. Вкладка Members диалогового окна Class Info

    Для каждого класса вы можете указать два значка, вид которых задается на вкладке Class (Класс) (рис. 19.19).

    Рис. 19.19. Вкладка Class диалогового окна Class Info

    Имя первого из них вводится в поле ввода Toolbar icon (Значок на панели инструментов) и в дальнейшем отображается на панели инструментов Form Controls (Элементы управления формы) в окнах конструктора форм и конструктора классов при выборе библиотеки классов, содержащей данный класс. Имя второго значка вводится в поле ввода Container icon (Значок контейнера) и отображается в диалоговом окне Class Browser (Обзор класса). Для задания значка вы можете ввести имя графического файла непосредственно в поля ввода или использовать кнопки выбора файла, расположенные справа от полей.

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

    Рис. 19.20. Диалоговое окно Edit Property/Method

    С помощью кнопки Modify (Модифицировать), расположенной на вкладке Members (Члены) диалогового окна Class Info (Информация о классе), вы можете изменить параметры объектов, свойств и методов объектов, входящих в класс. При нажатии на эту кнопку открывается диалоговое окно Edit Property/Method (Редактирование свойства/метода) (рис. 19.20), которое содержит таблицу с перечнем всех объектов, свойств и методов (табл. 19.9).

    Таблица 19.9. Назначение столбцов таблицы диалогового окна Edit Property/Method

    Столбец Назначение
    Name (Наименование) Наименование объекта, свойства или метода
    Туре (Тип) Тип объекта: 0 — объект, М — метод, Р — свойство
    Access (Доступ) Данный столбец указывает, создан ли метод Access для свойства
    Assign (Назначение) Данный столбец указывает, создан ли метод Assign для свойства
    Visibility (Видимость) Определяет тип свойства или метода

    Для добавления библиотек классов на панель инструментов Form Controls (Элементы управления формы) можно использовать не только опцию Add (Добавить) всплывающего меню кнопки View Classes (Показать классы), но и вкладку Controls (Элементы управления) (рис. 19,21) диалогового окна Options (Параметры). Для его открытия выполните команду Options (Параметры) из меню Tools (Сервис).

    Рис. 19.21. Вкладка Controls диалогового окна Options

    Чтобы определить библиотеки классов, установите переключатель Visual class libraries (Библиотеки визуальных классов). Затем заполните список Selected (Выбранные) названиями библиотек классов, которые вы собираетесь отображать на панели инструментов. Идя добавления нового класса в этот список используется кнопка Add (Добавить), при нажатии на которую открывается диалоговое окно Open (Открыть). В этом окне найдите и выберите требуемую библиотеку классов. Удаление из списка выбранной библиотеки осуществляется нажатием кнопки Remove (Удалить). При нажатии кнопки Set As Default (Использовать по умолчанию) введенные установки будут использоваться и в следующих сеансах работы с Visual FoxPro.

    С помощью вкладки Forms (Формы) (рис. 19.22) диалогового окна Options (Параметры) вы можете задать класс формы, который будет использоваться при создании новой формы.

    Рис. 19.22. Выбор класса, используемого при создании формы

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

    1. На вкладке Forms (Формы) диалогового окна Options (Параметры) в области Template classes (Шаблон классов) установите флажок Form (Форма).
    2. Откроется диалоговое окно Form Template (Шаблон формы) (рис. 19.23). Выберите библиотеку, а затем в области Class Name (Имя класса) — требуемый класс.
    3. Нажмите кнопку ОК.
    4. Вернувшись в диалоговое окно Options (Параметры), нажмите кнопку ОК для его закрытия.

    Аналогичным образом вы можете установить и пользовательский класс для создания наборов форм.

    Пользовательский класс, используемый при создании набора форм, определяется аналогичным образом. Только на вкладке Forms (Формы) диалогового окна Options (Параметры) необходимо установить флажок Form set (Набор форм).

    Рис. 19.23. Диалоговое окно Form Template

    Рассмотрим создание формы просмотра информации о клиентах, используя класс bcsingieTabie, созданный в предыдущем примере.

    1. Откройте диалоговое окно Options (Параметры).
    2. На вкладке Forms (Формы) установите флажок Form (Форма).
    3. В открывшемся диалоговом окне Form Template (Шаблон формы) (см. рис. 19.23) выберите пользовательскую библиотеку Forms (Формы).
    4. В области Class Name (Имя класса) выберите требуемый класс bcSingleTable.
    5. Нажмите кнопку ОК.
    6. Вернувшись в диалоговое окно Options (Параметры), нажмите кнопку ОК для его закрытия.
    7. Откройте проект sales.
    8. В окне проекта выберите вкладку Documents (Документы), затем перейдите в раздел Forms (Формы) и нажмите кнопку New (Новый). На экране открывается окно конструктора форм, которое содержит объекты Класса bcSingleTable (рис. 19.24).

    Рис. 19.24. Начальная стадия создания формы, основанной на пользовательском классе

    1. Выберите текстовый объект, расположенный в верхней части формы, и измените его свойство Caption (Надпись), введя Просмотр информации о клиентах.
    2. В окно окружения формы добавьте таблицу Customer.
    3. Установите свойства объекта Grid (Таблица). Для этого задайте количество столбцов в таблице, свяжите их с полями таблицы customer и определите заголовки полей. На этом создание формы заканчивается (рис. 19.25).
    4. Сохраните форму и запустите ее на выполнение.

    Рис. 19.25. Форма просмотра информации о клиентах

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

    Для создания такого класса воспользуемся формой, созданной в предыдущем примере.

    1. Откройте окно конструктора для формы, созданной в предыдущем примере.
    2. В объекте Gr > с полями icdcustomer и ccompany (р ис . 19.26).

    Рис. 19.26. Подготовка формы для создания класса

    1. В меню virtual (Файл) выберите команду Save As Class (Сохранить как класс).
    2. В открывшемся диалоговом окне Save As Class (Сохранить как класс) установите переключатель Save (Сохранить) в положение Current form (Текущая форма). В поле Name (Имя) укажите имя класса и имя библиотеки, в которой будет располагаться класс, а в поле Description (Описание) — его краткое описание. После ввода всех атрибутов нажмите кнопку ОК, в результате в указанной библиотеке будет создан новый класс.

    Для сохранения объектов формы в виде класса выделите их в форме, а затем в диалоговом окне Save As Class (Сохранить как класс) установите переключатель Save (Сохранить) в положение Selected controls (Выбранные элементы управления). Для сохранения набора форм в виде класса откройте окно конструктора для набора форм и в диалоговом окне Save As Class (Сохранить как класс) установите переключатель Save (Сохранить) в положение Entire form set (Набор форм).

    В Visual FoxPro имеется удобное средство, предназначенное для работы с классами, — это Class Browser (Обзор классов), с помощью которого вы можете просматривать библиотеки классов, создавать новые классы и редактировать существующие.

    Для открытия окна Class Browser (Обзор классов) выполните одно из следующих действий.

    • В меню Tools (Сервис) выберите команду Class Browser (Обзор классов).
    • В командном окне выполните команду DO (_BROWSER) .

    Независимо от выбранного вами способа, будет запущено приложение Browser.app, которое открывает окно Class Browser (Обзор классов) (рис. 19.27), содержащее панель инструментов для управления классами и список объектов выбранной библиотеки.

    После открытия библиотеки классов в левой части окна Class Browser (Обзор классов) будет отображен иерархический список классов выбранной библиотеки со значками, которые вы присвоили с помощью команды Class Info (Информация о классе) из меню Class (Класс). В правой части окна отображается список объектов, входящих в данный класс, его свойства и методы. В нижней части окна содержатся параметры выбранного класса или элемента класса.

    Рис. 19.27. Окно Class Browser

    Двойной щелчок на имени класса в левой области окна Class Browser (Обзор классов) автоматически открывает данный класс в конструкторе классов.

    В окне Class Browser (Обзор классов) могут отображаться несколько библиотек классов. Для добавления новой библиотеки нажмите кнопку View Additional virtual (Просмотр дополнительного файла) на панели инструментов окна Class Browser (Обзор классов) и диалоговом окне Open (Открыть) выберите библиотеку классов.

    Для просмотра любой другой библиотеки классов нажмите кнопку Open (Открыть) на панели инструментов и в диалоговом окне Open (Открыть) выберите требуемую библиотеку.

    В окне Class Browser (Обзор классов) могут отображаться не только библиотеки классов, но и формы.

    Чтобы просмотреть классы одного типа (например, класс кнопок), выберите из раскрывающегося списка Class Type (Тип класса) наименование требуемого типа.

    Для создания нового класса, изменения его имени, удаления его из библиотеки классов вы можете в окне Oass Browser (Обзор классов) использовать кнопки, описанные в табл. 19.10.

    Рис. 19.28. Исходный текст описания класса

    Таблица 19.10. Кнопки окна Class Browser

    Наименование Описание
    Find (Поиск) Открывает диалоговое окно Find (Найти) для поиска класса и элементов класса по имени, описанию
    New Class (Новый класс) Открывает диалоговое окно New Class (Новый класс) для создания нового класса
    Rename

    (Переименовать)

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

    <Переопределить родительский класс)

    Переопределяет родительский класс выбранного класса
    Clean Up Class Library

    (Упаковать библиотеку классов)

    Упаковывает библиотеку классов, удаляя из нее физически записи, помеченные для удаления
    View Class Code

    (Просмотр кода класса)

    Открывает диалоговое окно с исходным текстом описания класса (рис. 19.28). Вы можете использовать эту информацию при создании собственных классов программным путем

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

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

    1. Откройте проект sales.
    2. В окне проекта перейдите на вкладку Classes (Классы) и нажмите кнопку New (Новый).
    3. В диалоговом окне New Class (Новый класс) выберите базовый класс Toolbar (Панель управления), введите имя класса bcTabieTooiBar и укажите пользовательскую библиотеку классов ForForms, а затем нажмите кнопку ОК. В окне конструктора классов появляется панель инструментов, не содержащая ни одного объекта.
    4. Используя ранее созданные классы кнопок, разместите на создаваемой панели инструментов графические кнопки перемещения по записям и выхода из формы (рис. 19.29).

    Рис. 19.29. Создание класса панели управления для перемещения по записям таблицы

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

    1. Откройте проект sales.
    2. В окне проекта перейдите на вкладку Classes (Классы) и нажмите кнопку New (Новый).
    3. В открывшемся диалоговом окне New Class (Новый класс) в поле ввода Class Name (Имя класса) введите имя создаваемого класса bcSingleTableToolbar. Из списка Based On (Базовый класс) выберите базовый класс Form (Форма), а затем в поле ввода Store In (Сохранить в) введите имя библиотеки классов Forms (Формы), в которой будет храниться создаваемый класс.
    4. Разместите в форме текст заголовка и объект Grid (Таблица).
    5. Нам необходимо создать в форме объект типа «панель» инструментов на основе созданного в предыдущем примере класса. Для этого определите новое свойство oTooiBar формы, выполнив команду New Property (Новое свойство) из меню Class (Класс), а затем в методе Activate (Активизация) формы создайте объект типа «панель инструментов» и отобразите его на экране:

    * Отображаем панель инструментов на экране

    __screen.ActiveForm. oTooiBar. Show ()

    1. Сохраните созданный класс и закройте окно конструктора классов.
    2. Теперь приступим к созданию формы на основе созданного в этом примере класса. Для этого откройте диалоговое окно Options (Параметры), перейдите на вкладку Forms (Формы) и установите в поле ввода Form (Форма) имя пользовательского класса bcsingieTabieTooibar из библиотеки Forms (Формы).
    3. Откройте проект sales.
    4. В окне проекта выберите вкладку Documents (Документы), перейдите в раздел Forms (Формы) и нажмите кнопку New (Новый). На экране откроется окно конструктора форм, которое содержит объекты класса bcsingieTabieTooibar. Обратите внимание на то, что в форме панель инструментов отсутствует. Она создается при запуске формы на выполнение,
    5. Выберите текстовый объект, расположенный в верхней части формы, и измените его свойство caption (Надпись), введя Просмотр информации о клиентах,
    6. Добавьте в окружение формы таблицу customer.
    7. Установите свойства объекта Grid (Таблица). Для этого свяжите столбцы таблицы с полями таблицы customer и определите заголовки столбцов.
    8. На этом создание формы заканчивается. Сохраните ее и запустите на выполнение.

    Если при запуске данной формы на выполнение появляется сообщение о том, что класс не найден, вам необходимо в методе Activate (Активизация) формы перед созданием объекта типа «панель инструментов» вставить команду SET CLASSLIB то с указанием папки расположения класса.

    Основы языка visual foxpro

    Visual FoxPro (VFP) — визуальная среда разработки систем управления реляционными базами данных, выпускаемая в настоящее время корпорацией Майкрософт. Последней версией является 9.0. Использует язык программирования FoxPro. Среда разработки версии 7.0 может работать в операционных системах Windows 9x и ядра NT, версии 8.0 и 9.0 — только в Windows XP, 2000, 2003. Среда исполнения (runtime) версий 8.0 и 9.0 работает под любой версией Windows, начиная с 98г.

    Первоначально FoxPro (первоначальное название — FoxBASE) разрабатывалась Fox Software, начиная с 1984 года. В 1992 году Fox Technologies объединилась с Microsoft, новые версии продукта обрели ряд новых функций и приставку «Visual». Последняя версия оригинального FoxPro — версия 2.6 — работала под Mac OS, DOS, Windows и Unix; уже в версии Visual FoxPro 3.0 список поддерживаемых платформ сократился до Mac OS и Windows, а в более поздних версиях — уже только до Windows. Текущая версия Visual FoxPro основана на COM, и Microsoft утверждает, что.net-версии продукта не будет. Существует проект Sedna, который должен обеспечить возможность взаимодействия Visual FoxPro с.net.

    Благодаря встроенному механизму обработки курсора БД, тесной связи между языком и данными и другим мощным функциям, пакет Visual FoxPro 9.0 служит великолепным инструментом для создания решений любого масштаба на основе баз данных. Сосредоточенный на работе с данными, объектно-ориентированный язык, используемый в этом пакете, предлагает разработчикам гибкий инструментарий для создания приложений на основе БД для индивидуального использования, для работы в клиент-серверных средах, а также в Интернете. Разработчики получают в свое распоряжение все необходимое для управления информацией — от средств упорядочения таблиц, обработки запросов и создания интегрированных систем управления реляционными базами данных (СУБД) до полноценной разработки «с нуля» приложения для конечного пользователя.

    Создаваемые с помощью пакета Visual FoxPro 9.0 web-службы XML, могут использоваться в качестве источников данных любыми клиентскими платформами, поддерживаемыми средой разработки Visual Studio.net 2003 и предназначенными для работы с web-службами XML, включая платформу ASP.net, а созданные с использованием среды разработки Visual Studio.net 2003 web-службы XML или любые стандартные web-службы XML могут использоваться приложениями пакета Visual FoxPro 9.0.

    Теоретические аспекты программы Visual FoxPro

    Имена таблиц

    Таблицы, как и любые другие объекты в Visual FoxPro, имеют имена. таблицы бывают свободные и входящие в базу данных. Для таблиц, входящих в базу данных, вы можете задать два имени. Одно вводится в диалоговом окне Create (Создать), а второе — на вкладке Table (Таблица) окна конструктора таблицы. Имя, вводимое в диалоговом окне Create (Создать) при создании таблицы, является именем файла, в котором таблица сохраняется на диске. При задании этого имени необходимо придерживаться ограничений, накладываемых операционной системой на количество символов в имени файла. Второе имя таблицы является внутренним и хранится в базе данных. Внутреннее имя таблицы может содержать до 128 символов. Оно вводится в поле Name (Имя) вкладки Table (Таблица) окна конструктора таблицы.

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

    При работе в окне конструктора базы данных внутреннее имя таблицы отображается в заголовке окна таблицы. В том случае, если таблица не имеет внутреннего имени, вместо него отображается имя файла, в котором данная таблица сохранена.

    В наименовании таблицы недопустимо использование пробелов и специальных символов.

    Определение полей таблицы

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

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

    Ввод наименований полей

    Наименования полей таблицы вводятся на вкладке Fields (Поля) в строке ввода столбца Name (Имя). При задании наименований полей вы можете использовать буквы, цифры и знак подчеркивания. Ваши попытки ввести специальные символы Visual FoxPro проигнорирует.

    Длина наименования поля ограничивается 128-ю символами. Вряд ли вы воспользуетесь возможностью задавать такие длинные имена. Обычно для имен полей используют краткие названия, которые более наглядны и легко читаемы.

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

    Типы полей

    Поля таблицы предназначены для хранения в них данных. Это могут быть числа, текстовая информация, даты, графические файлы и т.д. Для определения типа данных, размещаемых в поле, используются тип поля, его ширина и количество знаков после запятой. Для их ввода предназначены столбцы Туре (Тип), Width (Ширина) и Decimal (Десятичные) вкладки Fields (Поля) конструктора таблицы.

    В Visual FoxPro допустимыми являются типы полей, перечисленные в табл.1.1

    Таблица 1.1, Типы полей Visual FoxPro

    Character, Character (binary)

    Текстовые поля могут содержать буквы, цифры и специальные символы. Максимальная ширина поля составляет 254 символа. тип Character (binary) используется в том случае, если не требуется учитывать кодовую страницу отображаемых данных

    Integer, Numeric, Float, Double

    Integer отображает целые числа от-2 147 483 647 до +2 147 483 646. Числовые поля типа Numeric и Float отображают данные с фиксированной точкой в диапазоне от-0.9999999999×1 (Г19 до +0.9999999999х10+2°. Тип данных Double используется для хранения данных с высокой точностью в диапазоне от±4.9406564854 1247×1 (Г324 до±1.797693 13486232×1 (Г308

    В поле денежного типа могут содержаться числа от — 922 337 203 685 477.5807 до922 337 203 685 477.5807

    В поле типа Date может содержаться любая дата от 01.01.0001 до 31.12.9999

    В поле типа DateTime может содержаться любая дата от 01.01.0001 до 31.12.9999 и время от 00: 00: 00 а. m. до 11: 59: 59 р. m.

    Содержит логическое значение True (Т.) (Истина) или False (. F.) (Ложь)

    Текстовое поле произвольной длины

    Memo, Memo (binary)

    Memo-поле содержит символьные данные большого объема

    Двоичное поле произвольной длины

    Поле данного типа предназначено для хранения в таблицах изображений и других двоичных данных

    Задание свойств полей

    В нижней части вкладки Fields (Поля) конструктора расположены поля, позволяющие задать для каждого поля таблицы свойства, которые будут использоваться при вводе в них данных.

    Область Display (Отображение) содержит поля, позволяющие задать форматы ввода и отображения данных (табл.1.2).

    Таблица 1.2 Назначение полей области Display вкладки Fields

    Задает формат отображения данных в формах, отчетах и окне Browse

    Input mask (Маска ввода)

    Задает формат ввода данных

    Определяет заголовок поля

    Область Map field type to classes (Используемые типы полей для классов) предназначена для указания библиотеки и имени класса, который будет использоваться для создания объектов при размещении данного поля таблицы в форме (табл.1.3).

    Таблица 1.3 Назначение полей области Map field type to classes вкладки Fields

    Display library (Показывать библиотеку)

    Задает местоположение и имя файла библиотеки классов

    Display class (Показывать класс)

    Задает имя класса из выбранной библиотеки

    Область Field validation (Проверка правильности ввода) позволяет задать параметры, описанные в табл.1.4.

    база visual foxpro табличный

    Таблица1.4 Назначение полей области Field validation вкладки Fields

    Условие правильности ввода данных

    Сообщение, выводимое при неправильном вводе данных в поле

    Default Value (Значение по умолчанию)

    Значение, вводимое в поле по умолчанию

    В текстовом поле Field comment (Комментарий) можно ввести краткое описание поля, которое может потребоваться при последующих модификациях структуры таблицы и сопровождении проекта.


    Свойство NULL

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

    Назначение кнопок окна конструктора таблицы

    Ввод полей в окне конструктора таблицы осуществляется последовательно. После определения всех необходимых параметров первого поля вы переходите на новую строку и вводите информацию для следующего поля таблицы. На вкладке Fields (Поля) справа расположены четыре кнопки. Кнопка ОК предназначена для закрытия окна конструктора таблицы и сохранения всех изменений, внесенных в структуру таблицы.

    Если вы изменили структуру таблицы, но хотите от этого отказаться, вам необходимо воспользоваться кнопкой Cancel (Отмена).

    Для добавления в таблицу нового поля установите курсор на поле, выше которого вы предполагаете разместить новое, и нажмите кнопку Insert (Вставить). Будет добавлена пустая строка, в которую вы можете ввести информацию о новом поле.

    Для удаления поля таблицы перейдите на строку с описанием данного поля и нажмите кнопку Delete (Удалить).

    Кнопки Insert (Вставить) и Delete (Удалить) на вкладке Indexes (Индексы) позволяют добавлять в таблицу новые индексы и удалять существующие.

    Модификация таблицы

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

    Чтобы модифицировать таблицу, откройте ее в конструкторе таблицы. Для этого выполните одно из следующих действий.

    · В окне проекта установите курсор на модифицируемую таблицу и нажмите кнопку Modify (Модифицировать).

    · В окне проекта установите курсор на модифицируемую таблицу, нажмите правую кнопку мыши и в появившемся на экране контекстном меню выберите команду Modify (Модифицировать).

    · При открытии конструктора таблицы из окна конструктора базы данных выделите модифицируемую таблицу и нажмите кнопку Modify Table (Модифицировать таблицу) на панели инструментов Database Designer (Конструктор базы данных) или выберите команду Modify (Модифицировать) в меню Database (База данных).

    В результате на экране открывается диалоговое окно Table Designer (Конструктор таблицы), содержащее структуру модифицируемой таблицы.

    Изменение наименований полей и их типов

    Ошибки, допущенные при задании имени поля или его типа, легко устраняются. Установите курсор на имя поля, которое хотите изменить, и, используя клавишу или , удалите ошибочные символы. После этого введите правильное имя поля.

    Для изменения типа поля установите курсор в столбец Туре (Тип) и выберите из списка требуемое значение.

    Добавление и удаление полей

    Для добавления нового поля в таблицу выполните следующие действия:

    1. С помощью клавиш-стрелок или мыши установите курсор на строку, перед которой вы хотите вставить пропущенное поле. При этом курсор может находиться в любом столбце Name (Имя), Туре (Тип) или Width (Размер).

    2. Нажмите кнопку Insert (Вставить).

    3. Visual FoxPro вставляет пустую строку с именем NewF l d. Введите требуемое имя поля.

    4. Используя значения списка Туре (Тип), задайте тип поля.

    5. В столбце Width (Размер) введите размер нового поля.

    Для удаления поля из структуры таблицы установите курсор на поле, которое требуется удалить, и нажмите кнопку Delete (Удалить) окна конструктора.

    Изменение порядка расположения полей

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

    1. Установите курсор на поле, расположение которого хотите изменить. На кнопке появляется значок перемещения поля в виде двунаправленной стрелки.

    2. Установите курсор на значок перемещения.

    3. Нажмите кнопку мыши и, удерживая ее нажатой, переместите значок вверх или вниз на требуемое место в структуре.

    4. Отпустите кнопку мыши. Поле изменило свое местоположение.

    Отношения между таблицами

    Между таблицами существует четыре типа отношений. Это «один-к-одному», «один-ко-многим», «много-к-одному», «много-ко — многим». Все эти типы отношений поддерживаются в Visual FoxPro.

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

    Наиболее часто встречающимся является тип отношения «один-ко-многим». В качестве примеров могут быть рассмотрены отношения между покупателем и купленными им товарами, между предприятием и работающими на нем сотрудниками.

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

    Национальная библиотека им. Н. Э. Баумана
    Bauman National Library

    Персональные инструменты

    VFP (Visual FoxPro)

    Visual FoxPro
    Разработчики: 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 и конструктора форм вы можете просто «перетаскивать» поля, необходимые для настройки формы.

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

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

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

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

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

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

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

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

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

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

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

    Для того, чтобы облегчить себе работу, вы можете настроить 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.
    Дата
    ДатаВремя
    Контейнеры данных

    Контейнеры данных позволяют выполнять одни и те же операции на множестве данных. Например, вы добавляете часы, которые работник отработал, умножаете их на почасовой оплаты труда, а затем вычитаете налоги, чтобы определить сумму заработной платы работника. Вы должны будете выполнять эти операции для каждого сотрудника и каждый платежный период. Если вы храните эту информацию в контейнерах, а также выполняете операции над контейнерами, вы можете просто заменить старые данные на новые и запустить ту же самую программу еще раз. В этой таблице перечислены некоторые из основных контейнеров для данных в 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, поэтому мы можем сразу сказать, что они содержат числовые данные, но вы могли бы назвать их с любой комбинацией алфавитно-цифровых символов и символов подчеркивания.

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

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

    Используя команды

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

    Например, команда 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. Следующий пример программы выполняет эту задачу.

    Условное ветвление

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

    • IF . ELSE . ENDIF
    • DO CASE . ENDCASE

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

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

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

    Циклы

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

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

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

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

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

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

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

    Visual FoxPro — Visual FoxPro

    Visual FoxPro
    Операционная система Windows 2000 , Windows XP , Windows 7 , Windows , 10 и Windows Server 2003
    Платформа IA-32
    Доступно в IDE: английский, немецкий, испанский
    Продолжительность: Над плюс французский, китайский, русский, чешский, корейский
    Тип Интегрированная среда разработки , язык программирования
    Лицензия Коммерческое проприетарное программное обеспечение
    Веб-сайт MSDN .microsoft .com / vfoxpro

    Он был получен из FoxPro (первоначально известный как FoxBASE) , который был разработан Fox Software , начиная с 1984 г. Fox Technologies объединилась с Microsoft в 1992 году, после чего программа приобрела дополнительные функции и префикс «Visual». FoxPro 2.6 работает на Mac OS , DOS , Windows , и Unix .

    Visual FoxPro 3.0, первая «Visual» версия, уменьшенная поддержка платформы только Mac и Windows, и более поздние версии 5, 6, 7, 8 и 9 были для Windows-только. Текущая версия Visual FoxPro является COM -На и Microsoft заявила , что они не намерены создать Microsoft .NET версии.

    Версия 9.0, выпущенная в декабре 2004 года и обновлен в октябре 2007 года с пакетом обновления 2 пластыря, была последняя версия продукта.

    содержание

    история

    Visual FoxPro возникла как член класса языков , обычно называют « XBase языков», которые имеют синтаксис , основанные на Dbase языке программирования. Другие члены семьи языка XBase включают Clipper и декларативную часть (базы данных).

    Visual FoxPro, сокращенно VFP, тесно интегрирована с собственной реляционной базой данных, которая расширяет возможности XBase FoxPro для поддержки SQL запросов и манипулирования данных. В отличии от большинства систем управления базами данных , Visual FoxPro является полнофункциональным, динамическим языком программирования , который не требует использования дополнительной среды программирования общего назначения. Он может быть использован для записи не только традиционные « толстый клиент » приложения, но и промежуточного программного обеспечения и веб — приложений .

    В конце 2002 года , было показано , что Visual FoxPro может работать на Linux под Wine пакета совместимости Windows. В 2003 году это привело к жалобам Microsoft: было заявлено , что развертывание среды выполнения FoxPro кода на не-Windows — машин нарушает лицензионное соглашение .

    Visual FoxPro был быстрый рост и падение популярности , как измерено с помощью программирования сообщества TIOBE Index . В декабре 2005 года , V ворвались в топе — 20 в первый раз. В июне 2006 года она достигла своего пика в положении 12, что делает его (в то время) «В» языке. По состоянию на июль 2020 года, Visual FoxPro занимает должность 41 по индексу TIOBE.

    В марте 2007 года Microsoft объявила о том, что не будет VFP 10, таким образом делая VFP9 (выпущен в производство 17 декабря 2004 года) последний коммерческий релиз VFP от Microsoft. Service Pack 2 для Microsoft Visual FoxPro 9.0 был выпущен 16 октября 2007 года при поддержке Версии 9 закончилась 13 января 2015 года.

    На момент окончания жизни объявления, работа над следующей версией под кодовым названием Седна (названный в честь недавно обнаруженной карликовой планеты ) , который был построен на вершине кодовую VFP9 уже началась. «Седна» представляет собой набор дополнений к VFP 9.0 компонентов XBase для поддержки ряда сценариев совместимости с различными технологиями Microsoft , включая SQL Server 2005, .NET Framework , Windows Vista, Office 2007, Windows Search и Team Foundation Server (TFS ). Microsoft выпустила седня под общей исходной лицензии на CodePlex сайте. Microsoft пояснил , что основной VFP будет по- прежнему остается закрытым исходным кодом. Седна был выпущен 25 января 2008 г. По состоянию на марта 2008 года, все компоненты XBase по VFP 9 SP2 (включая Седна) были доступны для общинных развитий на CodePlex.

    В конце марта 2007 года низовая кампания была начата испаноязычным FoxPro сообществом в MásFoxPro ( «MoreFoxPro» на английском языке ) , чтобы подписать петицию в Microsoft , чтобы продолжить работу по обновлению Visual FoxPro или выпустить его к сообществу с открытым исходным кодом . 3 апреля 2007 года движение было отмечено технической пресса.

    3 апреля 2007 года Microsoft ответила на петицию с этим утверждением Алана Griver:

    «Мы очень хорошо понимаем сообщества FoxPro и что сыграло большую роль в том, что мы объявили 13 марта. Это никогда не простое решение, чтобы сообщить, что мы не собираемся выпустить еще одну версию продукта, и это тот, который мы считаем очень осторожно.

    «Мы не объявляя о конце FoxPro:. Очевидно, FoxPro приложение будет продолжать работать некоторые из наших внутренних оценок, есть больше приложений, работающие в FoxPro 2.6, чем есть в VFP и FoxPro 2.6 не поддерживается во многом лет. Visual FoxPro 9 будет поддерживаться Microsoft до 2015 года.

    «Для Microsoft , чтобы продолжать развиваться базу FoxPro, мы должны были бы смотреть на создание среды разработки на 64-битную и будет включать в себя почти полное переписывание основного продукта. Кроме того, мы инвестировали в создание масштабируемой базы данных с SQL Server , включая свободно доступный SQL Server Express Edition. что касается формирования партнерских отношений с третьей стороной, то мы слышали от ряда крупных клиентов FoxPro , что это сделало бы невозможным для них , чтобы продолжать использовать FoxPro поскольку оно больше не будет поступать от утвержденного поставщика. Мы чувствовали , что помещение в окружающей среде с открытым исходным кодом на CodePlex , которая уравновешивает потребность как сообществ , так и крупных клиентов, было лучшим путем вперед «.

    Версия Timeline

    Все версии перечисленные для Windows.

    Версия Дата выхода
    Visual FoxPro 3.0 Июнь 1995
    Visual FoxPro 5.0 октябрь 1996
    Визуальный 5.0a FoxPro октябрь 1997
    Visual FoxPro 6.0 18 мая 1998
    Visual FoxPro 7.0 27 июня 2001
    Visual FoxPro 8.0 1 февраля 2003
    Visual FoxPro 8.0 с пакетом обновления 1 7 октября 2003
    Visual FoxPro 9 20 декабря 2004
    Visual FoxPro 9 с пакетом обновления 1 8 декабря 2005
    Visual FoxPro 9 с пакетом обновления 2 16 октября 2007

    образцы кода

    Язык FoxPro содержит команды, весьма похожими на других языках программирования, таких как Basic.

    Общая характеристика системы Visual Foxpro

    Visual FoxPro (VFP) — современная СУБД для персональных компьютеров, использующая реляционные базы данных, имеющая объектно-ориентированный алгоритмический язык для работы с информацией, методы визуального программирования и достаточно большие возможности (табл. 4.1). Типы данных, которые могут иметь поля таблиц базы данных, приведены в табл. 4.2 и табл. 4.3

    Версия системы 7.0 может работать в операционных системах Windows 9x и ядра NT, версии 8.0 и 9.0 — только в Windows XP, 2000, 2003.

    Таблица 4.1. Основные максимальные возможности системы Visual FoxPro
    Наименование предельной величины Предельная величина
    Количество записей в файле таблицы 1 миллиард
    Размер файла таблицы 2 гигабайта
    Количество символов в одной записи
    Количество полей в одной записи
    Количество одновременно открытых таблиц
    Количество символов в поле таблицы
    Количество байтов в индексном ключе в некомпаундном индексе
    Количество байтов в индексном ключе в компаундном индексе
    Количество открытых индексных файлов для одной таблицы не ограничено
    Количество открытых индексов во всех рабочих областях не ограничено
    Количество связей не ограничено
    Длина выражений связи не ограничена
    Размер символьных полей
    Количество символов в имени поля в свободной таблице
    Количество символов в имени поля в таблице, содержащейся в базе данных
    Диапазон целых чисел + 2 147 483 647
    Точность в числовых вычислениях 16 цифр до 9007199254740992 (2 53 )
    Действительные числа до 10 308 или 2 1023
    Количество переменных по умолчанию
    Количество переменных
    Количество массивов
    Количество элементов в массиве
    Количество строк в исходных программных файлах не ограничено
    Размер модуля компилируемой программы 64 килобайта
    Размер процедур в файле не ограничен
    Количество вложенных DO
    Количество вложенных READ
    Количество передаваемых параметров
    Количество транзакций
    Количество объектов в отчете не ограничено
    Длина описания отчета 20 дюймов
    Количество уровней группировки
    Длина символьных переменных в отчете
    Количество открытых окон (всех типов) не ограничено
    Количество открытых окон BROWSE
    Количество символов в символьной строке или переменной памяти 16 777 184
    Количество символов в командной строке
    Количество открытых файлов возможности ОС
    Количество нажатий клавиш в макро
    Количество полей в одном запросе SQL
    Таблица 4.2. Типы данных в системе Visual FoxPro
    Тип Описание Размер Диапазон
    Blob Двоичные данные неограниченной длины. Значения сохраняются в memo (.fpt) файле. Кодовая страница не учитывается 4 байта в * .dbf Ограничен доступной памятью, на диске до 2 Гб
    Character Текст, состоящий из символов 1 байт на символ, до 254 символов Любые символы
    Currency Денежный формат 8 байт — $922337203685477.5807 до $922337203685477.5807
    Date Дата, состоящая из месяца, дня и года 8 байт От <^0001-01-01>— 1 января 1 года до <^9999-12-31>— 31 декабря 9999 года
    DateTime Дата и время, состоит из месяца, дня, года, часа, минуты и секунды 8 байт От <^0001-01-01>до <^9999-12-31>, время от 00:00:00 до 23:59:59
    Logical Логическое значение, True или False 1 байт True (.T.) или False (.F.)
    Numeric Целые или действительные числа 8 байт в памяти; от 1 до 20 байт в * .dbf — .9999999999E+19 до .9999999999E+20
    Varbinary Двоичные значения. Под пустые концевые значения место на диске не резервируется. Кодовая страница не учитывается 1 байт на шестнадцатеричное значение, всего до 255 байт Любое шестнадцатеричное значение
    Variant Любой тип Visual FoxPro и null-значение. Когда данные сохраняются в переменной, ее тип становится типом данных См. все другие типы См. все другие типы

    Таблица 4.3. Типы данных в полях таблиц системы Visual FoxPro
    Тип поля Описание Размер Диапазон
    Character Binary Текст, состоящий из символов. Кодовая страница не учитывается 1 байт на символ, до 254 символов Любые символы
    Double Действительные числа удвоенной значимости 8 байт +4.94065645841247E-324 до +8.9884656743115E307
    Float То же самое, что и Numeric 8 байт в памяти; от 1 до 20 байт в * .dbf — .9999999999E+19 до .9999999999E+20
    General Ссылка на OLE-объект. Значения сохраняются в memo (.fpt) файле 4 байт в * .dbf Ограничен доступной памятью
    Integer Целое числовое значение 4 байта -2147483647 до 2147483647
    Integer Autoinc Целое значение, автоматически изменяющееся. Только для чтения (read-only) 4 байта Определяется значениями Next и Step
    Memo Символьный текст. Значения сохраняются в memo (.fpt) файле 4 байтa в * .dbf Ограничен доступной памятью
    Memo Binary То же, что Memo. Кодовая страница не учитывается 4 байтa в * .dbf Ограничен доступной памятью
    Varchar Символьный текст. Varchar подобен Character, но не резервируется место для концевых пробелов 1 байт на символ, всего до 254 символов Любые символы
    Varchar Binary Тип Varchar, кодовая страница не учитывается 1 байт на символ, всего до 254 символов Любые символы

    Некоторые достоинства системы:

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

    2. Современная организация реляционных баз данных, позволяющая хранить информацию о таблицах базы, их свойствах, индексах и связях, задавать условия соблюдения ссылочной целостности, создавать локальные и удаленные представления ( Views ), связи с серверами, хранимые процедуры, исполняемые при наступлении более 50 различных видов событий (VFP 7.0-9.0).

    3. Высокая скорость работы с большими базами данных.

    4. Высокая наглядность работы с базами данных: многофункциональное окно Data session позволяет видеть список открытых таблиц баз данных, их связи, фильтры, порядок по индексам, режимы буферизации, переходить к режимам модификации структуры, к работе с информацией таблиц и пр.

    5. Высокая скорость разработки приложений с использованием Мастеров (Wizard), Конструкторов (Designer), Построителей (Builder), режим подсказок IntelliSense при написании текста программ, системы отладки и тестирования программ.

    6. Собственный объектно-ориентированный язык работы с базами данных, основу которого составляет широко известное ядро xBase. Наличие в составе системы значительного количества библиотек стандартных классов с доступным для модификации исходным текстом. Возможность использования библиотек других приложений Windows (ActiveX).

    7. Возможность разработки приложений, работающих по технологии «клиент-сервер» с данными, размещенными на серверах баз данных Oracle и Microsoft SQL Server и с другими приложениями Microsoft Windows с использованием ODBC и OLE

    8. Возможность разработки Интернет-приложений для работы с базами данных и работы с Web-сервисами. Создание и работа с COM и COM+ компонентами (Component Object Model).

    9. Возможность разработки проекта для работы с базами данных с компиляцией его в программу, исполняемую в VFP ( * .app), в операционной системе Microsoft Windows ( * .exe или * .dll) или в Интернет-браузере ( * .app).

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

    Система VFP предназначена для использования профессиональными программистами, поэтому нет смысла в русификации ее меню и языка — для любого программиста английский синтаксис алгоритмического языка более привычен, чем русский.

    Основы языка visual foxpro

    Объектно-ориентированный и процедурный язык программирования систем управления реляционными базами данных, разработанный корпорацией Microsoft.

    Новости

    Visual FoxPro 9 позволяет создавать ещё более производительные приложения баз данных. Двадцатиление FoxPro! Microsoft принимает поздравления. Visual FoxPro Toolkit for .NET — более 225 функций VFP 7.0, для языков .NET (подробнее)

    Visual FoxPro и другие языки программирования

    Большинство языков программирования имеют схожие между собой базовые свойства. Если вы знакомы с одним языком программирования, то вам не составит особого т уда расширить свои знания за счет еще одного языка. Если вы хотите посмотреть, в чем состоит различие между Visual FoxPro, с одной стороны, и BASIC, C/C++ и Pascal с другой, выберите соответствующий раздел:

    Visual FoxPro — Visual FoxPro

    Visual FoxPro
    Операционная система Windows 2000 , Windows XP , Windows 7 , Windows , 10 и Windows Server 2003
    Платформа IA-32
    Доступно в IDE: английский, немецкий, испанский
    Продолжительность: Над плюс французский, китайский, русский, чешский, корейский
    Тип Интегрированная среда разработки , язык программирования
    Лицензия Коммерческое проприетарное программное обеспечение
    Веб-сайт MSDN .microsoft .com / vfoxpro

    Он был получен из FoxPro (первоначально известный как FoxBASE) , который был разработан Fox Software , начиная с 1984 г. Fox Technologies объединилась с Microsoft в 1992 году, после чего программа приобрела дополнительные функции и префикс «Visual». FoxPro 2.6 работает на Mac OS , DOS , Windows , и Unix .

    Visual FoxPro 3.0, первая «Visual» версия, уменьшенная поддержка платформы только Mac и Windows, и более поздние версии 5, 6, 7, 8 и 9 были для Windows-только. Текущая версия Visual FoxPro является COM -На и Microsoft заявила , что они не намерены создать Microsoft .NET версии.

    Версия 9.0, выпущенная в декабре 2004 года и обновлен в октябре 2007 года с пакетом обновления 2 пластыря, была последняя версия продукта.

    содержание

    история

    Visual FoxPro возникла как член класса языков , обычно называют « XBase языков», которые имеют синтаксис , основанные на Dbase языке программирования. Другие члены семьи языка XBase включают Clipper и декларативную часть (базы данных).

    Visual FoxPro, сокращенно VFP, тесно интегрирована с собственной реляционной базой данных, которая расширяет возможности XBase FoxPro для поддержки SQL запросов и манипулирования данных. В отличии от большинства систем управления базами данных , Visual FoxPro является полнофункциональным, динамическим языком программирования , который не требует использования дополнительной среды программирования общего назначения. Он может быть использован для записи не только традиционные « толстый клиент » приложения, но и промежуточного программного обеспечения и веб — приложений .

    В конце 2002 года , было показано , что Visual FoxPro может работать на Linux под Wine пакета совместимости Windows. В 2003 году это привело к жалобам Microsoft: было заявлено , что развертывание среды выполнения FoxPro кода на не-Windows — машин нарушает лицензионное соглашение .

    Visual FoxPro был быстрый рост и падение популярности , как измерено с помощью программирования сообщества TIOBE Index . В декабре 2005 года , V ворвались в топе — 20 в первый раз. В июне 2006 года она достигла своего пика в положении 12, что делает его (в то время) «В» языке. По состоянию на июль 2020 года, Visual FoxPro занимает должность 41 по индексу TIOBE.

    В марте 2007 года Microsoft объявила о том, что не будет VFP 10, таким образом делая VFP9 (выпущен в производство 17 декабря 2004 года) последний коммерческий релиз VFP от Microsoft. Service Pack 2 для Microsoft Visual FoxPro 9.0 был выпущен 16 октября 2007 года при поддержке Версии 9 закончилась 13 января 2015 года.

    На момент окончания жизни объявления, работа над следующей версией под кодовым названием Седна (названный в честь недавно обнаруженной карликовой планеты ) , который был построен на вершине кодовую VFP9 уже началась. «Седна» представляет собой набор дополнений к VFP 9.0 компонентов XBase для поддержки ряда сценариев совместимости с различными технологиями Microsoft , включая SQL Server 2005, .NET Framework , Windows Vista, Office 2007, Windows Search и Team Foundation Server (TFS ). Microsoft выпустила седня под общей исходной лицензии на CodePlex сайте. Microsoft пояснил , что основной VFP будет по- прежнему остается закрытым исходным кодом. Седна был выпущен 25 января 2008 г. По состоянию на марта 2008 года, все компоненты XBase по VFP 9 SP2 (включая Седна) были доступны для общинных развитий на CodePlex.

    В конце марта 2007 года низовая кампания была начата испаноязычным FoxPro сообществом в MásFoxPro ( «MoreFoxPro» на английском языке ) , чтобы подписать петицию в Microsoft , чтобы продолжить работу по обновлению Visual FoxPro или выпустить его к сообществу с открытым исходным кодом . 3 апреля 2007 года движение было отмечено технической пресса.

    3 апреля 2007 года Microsoft ответила на петицию с этим утверждением Алана Griver:

    «Мы очень хорошо понимаем сообщества FoxPro и что сыграло большую роль в том, что мы объявили 13 марта. Это никогда не простое решение, чтобы сообщить, что мы не собираемся выпустить еще одну версию продукта, и это тот, который мы считаем очень осторожно.

    «Мы не объявляя о конце FoxPro:. Очевидно, FoxPro приложение будет продолжать работать некоторые из наших внутренних оценок, есть больше приложений, работающие в FoxPro 2.6, чем есть в VFP и FoxPro 2.6 не поддерживается во многом лет. Visual FoxPro 9 будет поддерживаться Microsoft до 2015 года.

    «Для Microsoft , чтобы продолжать развиваться базу FoxPro, мы должны были бы смотреть на создание среды разработки на 64-битную и будет включать в себя почти полное переписывание основного продукта. Кроме того, мы инвестировали в создание масштабируемой базы данных с SQL Server , включая свободно доступный SQL Server Express Edition. что касается формирования партнерских отношений с третьей стороной, то мы слышали от ряда крупных клиентов FoxPro , что это сделало бы невозможным для них , чтобы продолжать использовать FoxPro поскольку оно больше не будет поступать от утвержденного поставщика. Мы чувствовали , что помещение в окружающей среде с открытым исходным кодом на CodePlex , которая уравновешивает потребность как сообществ , так и крупных клиентов, было лучшим путем вперед «.

    Версия Timeline

    Все версии перечисленные для Windows.

    Версия Дата выхода
    Visual FoxPro 3.0 Июнь 1995
    Visual FoxPro 5.0 октябрь 1996
    Визуальный 5.0a FoxPro октябрь 1997
    Visual FoxPro 6.0 18 мая 1998
    Visual FoxPro 7.0 27 июня 2001
    Visual FoxPro 8.0 1 февраля 2003
    Visual FoxPro 8.0 с пакетом обновления 1 7 октября 2003
    Visual FoxPro 9 20 декабря 2004
    Visual FoxPro 9 с пакетом обновления 1 8 декабря 2005
    Visual FoxPro 9 с пакетом обновления 2 16 октября 2007

    образцы кода

    Язык FoxPro содержит команды, весьма похожими на других языках программирования, таких как Basic.

    Илон Маск рекомендует:  Что такое код mod
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL