Fox pro программа для чего

Fox pro программа для чего

Зачем мне применять FoxPro, когда все в мире
сейчас пишут или на Delphi или на C++?
Иван Никитин

По данным, приведенным в Microsoft White Pages, средства разработки СУБД распределены среди профессиональных разработчиков США следующим образом:

Как видно, не все разработчики используют Delphi или C++. К тому же вспомним правило про Сенькину шапку. VFP это очень мощное средство разработки СУБД. К тому же, VFP имеет очень перегруженный язык программирования, это результат обеспечения совместимости со старыми версиями. Современный VFP в большинстве случаев может без дополнительных переделок выполнить программы написанные для самого первого FoxBASE или dBase. Редкое средство программирования может похвастаться такой совместимостью.

Однако обратная сторона медали: современный язык xBase, точнее его диалект, используемый в VFP, содержит свыше полутысячи команд, функций и языковых конструкций. Одно и тоже в VFP можно сделать тремя четырьмя способами. Иногда «старое» программирование времен FoxBASE мирно уживается с современным ООП, а иногда ведет себя как кошка с собакой. Очень часто в описаниях языка VFP можно встретить фразу: «Включено для обеспечения совместимости со старыми версиями. Рекомендуется использовать то-то и то-то».

Кроме того, данное заблуждение (см. заголовок) связано с довольно большой популярностью продуктов Borland (ныне Inprise) в нашей стране, и стойкой антипатией к Мастдай. Поверьте мне, в отношении VFP ситуация меняется кардинальным образом, VFP есть та самая жемчужина, сделанная Microsoft, о которой эта прославленная корпорация трубит на каждом углу ;).

Источник

FoxPro работает с таблицами формата *.dbf
Visual FoxPro 7.0 снабжено мощным набором мастеров, которые позволяют новичку достаточно быстро создать мощное работоспособное приложение, однако не могу рекомендовать использовать эту возможность людям, желающим, создать рациональное приложение, т.к. мастера используют навороченные библиотеки и не рационально используют память. Программы созданные с помощью мастеров очень грамозки.
FoxPro сильно интегрирован с SQL, позволяет вставлять блоки SQL-комманд непосредственно в тело основного кода и использовать в SQL-запросах собственные (фоксовские) функции. Что позволяет быстро и эффективно обробатывать большие базы, даже если таблицы не индексированы. Кроме того, FoxPro облодает собственными, очень мощными, и главное, удобными средствами работы с БД.
Наиболее крупные БД созданные на FoxPro (из известных автору):
База данных ГУВД г. Москвы.
База данных МГТС.
База данных Пенсионного фонда России.
Это основной язык написания программ Главного Научно-Вычеслительного Центра (ГНИВЦ) Министерства РФ по налогам и сборам

К достоинствам VFoxPro можно так же отнести: возможность создания составного индекса, работа с курсорами (виртуальными таблицами, не отличающимися от обычных, но исчезающих после завершения сеанса работа, т.е. не остаются ни в памяти ни на диске), возможность экспортировать\импортировать данные в\из XML, VFoxPro работает с другими базами по средствам драйвера ODBC, VFoxPro обладает высокой надежностью при работе с БД (в т.ч. и с индексами) и полность соответствует объявленным возможностям.
На VFoxPro можно создавать и клиент-серверные БД, однако в этой области VFoxPro значительно уступает большинству из известных серверов БД.
Резюме VFoxPro мощнейшее средство для работы с локальными базами данных, значительно превосходящее, по эффективности, все остальные системы БД.

Рекомендации для выбора Могу порекомендовать выбрать VFoxPro, тем кому требуется ввести и обрабатывать большие базы данных на локальных компьютерах или в небольших сетях. Т.к. VFoxPro позволяет создавать запросы, практически любой сложности. Разумеется не рекомендую использовать этот язык для составления больших серверных баз и для написания программ не связанных с ведением баз данных.

Ограничения VFoxPro 7.0
Для людей имеющих представление, что такое БД привожу некоторые ограничения для 7-го Фокса (это лучше любых хар-тик), выводы сами напросятся. Для остальных распишу все позже.

Ограничения работы с базами
Максимум записей в файл таблицы. 1 миллиард
Максимальный размер файла таблицы. 2 гигабайта
Максимум символов в записи (MEMO). 65,500
Максимум символов в поле таблицы. 254
Максимальный размер числовых (и с плавающей точкой) полей. 20
Максимум полей записей. 255
Максимум таблиц открывается в одно время. 255
(ограниченно памятью и доступными дескрипторами файла.)
Максимум байтов в индексном ключе в некомпактном индексе. 100
Максимум байтов в индексную ключе в компактном индексе. 240
Максимум открытых индексных файлов в таблице. неограниченно
Максимум открытых индексов во всех базах. неограниченно
Максимум отношений. неограниченно
Максимальные поля, которые могут быть выбраны SQL SELECT. 255

Источник

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

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

Microsoft Visual FoxPro

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

Содержание

История

Развитие

В конце 2002 года было показано, что Visual FoxPro может работать на Linux под Wine, однако это, по существу, нарушает пользовательское лицензионное соглашение (EULA).

В декабре 2005 года, VFP (Visual FoxPro) находился в Top 20 индекса языков программирования TIOBE. По состоянию на август 2010 года, VFP (в сочетании с XBase) находился на 25-й позиции индекса.

В марте 2007 года Microsoft объявила, что не будет выпускать VFP 10; соответственно, VFP 9 (выпущен в производство 17 декабря 2004 г.) — последний коммерческий релиз VFP от Microsoft. Поддержка версии 9 продолжается с пакетами обновления, которые были выпущены 8 декабря 2005 и 11 октября 2007 года.

Разработка продукта MS прекращена с выходом SP2 для версии 9.0.[3].

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

3 апреля 2007 Microsoft ответила на просьбы заявителя таким заявлением от Алана Гривера (Alan Griver): «Мы хорошо знаем FoxPro-сообщество, и это сыграло большую роль в нашем объявлении от 13 марта. Всегда нелегко объявлять, что мы не собираемся выпускать следующую версию продукта, и к подобному мы подходим очень осторожно.

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

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

История версий

Все версии указаны для Windows.

Дата выходаВерсия
June 1995Visual FoxPro 3.0
October 1996Visual FoxPro 5.0
October 1997Visual FoxPro 5.0a
18 May 1998Visual FoxPro 6.0
27 June 2001Visual FoxPro 7.0
1 February 2003Visual FoxPro 8.0
7 October 2003Visual FoxPro 8.0 Service Pack 1
20 December 2004Visual FoxPro 9
20 December 2004Visual FoxPro 9
8 December 2005Visual FoxPro 9 Service Pack 1
16 October 2007Visual FoxPro 9 Service Pack 2

Достоинства

– интеграция с Microsoft Office 2007;

– возможность совместной работы над проектом;

– поддержка более 40 форматов файлов баз данных;

– интеграция с системой контроля версий Visual Source Safe;

– поддержка технологии OLE Automation;

– возможность разработки серверных приложений;

– большая библиотека с различными примерами кода;

– высокая производительность при работе с таблицами базы данных;

– встроенный словарь данных;

– высокая скорость обработки серверных запросов;

– поддержка графиков и диаграмм.

Недостатки

– для написания серверных приложений используется узкоспециализированный язык программирования FoxPro (диалект языка xBase);

– Microsoft больше не поддерживает данный продукт;

– несовместимость с 64-битными ОС;

– эта IDE поддерживает современные ОС Windows 8 / 10. [Источник 2]

Совместимость с операционными системами

ВерсияVFP 3.0VFP 5.0VFP 6.0VFP 7.0VFP 8.1VFP 9.0
Windows 3.xДАНЕТНЕТНЕТНЕТНЕТ
Windows NT 4.0ДАДАДАДАНЕТНЕТ
Windows 95ДАДАТолько среда запуска (Runtime)НЕТНЕТНЕТ
Windows 98ДАДАДАДАТолько среда запуска (Runtime)Только среда запуска (Runtime)
Windows MEДАДАДАДАТолько среда запуска (Runtime)Только среда запуска (Runtime)
Windows 2000ДАДАДАДАДАДА
Windows XPДАДАДАДАДАДА
Windows Server 2003?ДАДАДАДАДА
Windows VistaВ режиме совместимостиДАДАДАДАДА
Windows 7ДАДАДАДАДАДА

Образцы кода

Объекты

Обработка данных

Язык также имеет обширные команды управления базами данных и индексирования. Индекс «help» команд в VFP 9 содержит несколько сотен команд и функций. В приведенных ниже примерах показано, как закодировать создание и индексирование таблиц, однако в VFP есть экраны таблиц и баз данных, которые создают таблицы и индексы без необходимости писать код.

Доступ ODBC с использованием пересылки SQL

Итог о продукте

В настоящее время Visual FoxPro не рассматривается профессиональными разработчиками в качестве надежной и удобной IDE для работы с реляционными базами данными. Хотя нельзя сказать, что она полностью утратила свою популярность в связи с утратой поддержки от Microsoft в 2015 году, так как во многих учебных заведениях Испании, Индии, Чили и Аргентины студенты и преподаватели все еще пользуются этим приложением. В свою очередь, отечественные программисты уже полностью перешли на альтернативный продукт от Microsoft SQL Server. [Источник 3]

Источник

Основы языка Visual FoxPro

Как уже отмечалось выше, язык VFP это сильно дополненный и расширенный язык xBase. В Visual FoxPro язык программирования объектно-ориентированный, то есть базовой конструкцией языка является понятие класса. Исходный же вариант xBase это чистейший структурный язык, с базовым понятием процедур и функций. Таким образом, современный язык программирования Visual FoxPro допускает совмещать как и программирование «по старинке» описанием массы процедур, так и в стиле ООП, создавая сложную иерархию классов.

Разумный же выбор стиля программирования сделает Ваши программы читабельными, легкими для понимания, с другой стороны, позволит Вам быстро создавать мощные приложения. Как уже говорилось, язык Visual FoxPro сильно перегружен языковыми конструкциями, стандартными функциями и операторами. Это сделано из-за соображений совместимости со старыми версиями FoxPro. Дать полное описание всех конструкций языка представляется невозможным из-за огромного количества материала. Поэтому мы отсылаем читателя к Visual FoxPro Online Documentation справочной базе данных по программированию VFP. Размер этой базы данных около 80 Mb, и ее можно установить при установке самого VFP себе на жесткий диск или же оставить на оригинальном CD-диске. Здесь же мы будем стараться приводить описания только тех языковых конструкций, которые потребуются нам для более полного изложения материала. Если в приводимых программах Вы встретите незнакомую функцию или оператор, попробуйте найти его описание в Visual FoxPro Online Documentation, в крайнем случае, напишите мне, и я обязательно подробно про него расскажу.

Итак, здесь рассматриваются:

Понятие типов данных и массивов

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

Первое, что отличает VFP от других языков программирования, это то, что в VFP все переменные динамические с неявным объявлением типа. То есть, Вы всегда можете создать переменную, некоторое время ее использовать и потом удалить. При создании переменная всегда имеет тип logical со значением false и тип ее фиксируется (определяется) при первом присваивании переменной какого-либо значения. То есть, при первом присваивании переменная меняет свой тип на тип присваиваемых ей данных. Изменить свой тип переменная может только один раз, при первом присваивании. Переменные могут быть следующих типов:

Кроме того, в некоторых случаях, могут создаваться переменные с любым типом данных, разрешенном в таблицах, то есть, например, memo, general и др. (См. команды SCATTER и GATHER).

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

Объявление типа области действия переменной производится ниже указанными командами. Внимание! Объявление типа области действия переменной всегда должно предшествовать ее первому присваиванию! По умолчанию, переменные без объявления области действия становятся частными (приватными) о чем более подробно будет сказано чуть ниже.

Глобальные переменные объявляются командой PUBLIC и существуют в течение выполнения всей программы или всего приложения. При отладке (в среде VFP) глобальные переменные существуют в течение всего сеанса работы с VFP, пока они не будут явно удалены из памяти. Пример объявления глобальных переменных:

PUBLIC gcMyName, gdCurrentDate gcMyName = Иван Никитин gdCurrentDate = date()

Частные переменные (приватные) существуют в течение выполнения текущего программного модуля и доступны во всех вызываемых им модулях. Эти переменные автоматически удаляются из памяти при окончании выполнения модуля, в котором они были объявлены и созданы. Такой тип области действия получают все необъявленные явно переменные, кроме массивов. По умолчанию, массивы становятся глобальными. Явно объявить этот тип области действия можно командой PRIVATE.

Локальные переменные существуют и доступны только в том модуле, в котором они объявлены. Эти переменные объявляются командой LOCAL и удаляются из памяти автоматически при завершении выполнения программного модуля. Как мы уже говорили, в VFP все переменные динамические.

Венгерская нотация

В Вашем приложении могут быть сотни и тысячи переменных. Чтобы избежать путаницы и долгих размышлений при отладке программы типа: «A[i,j] что за массив и чего он здесь вообще делает?» была предложена и успешно используется стройная система именования переменных и других объектов программы.

По родине предложившего эту систему программиста она названа Венгерская нотация. Система именования очень проста. Прилагаемо к VFP, имя переменной начинается с 2-х буквенного префикса, 1-я буква которого область действия переменной, 2-я буква ее тип. То есть:

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

Всячески следует избегать имен переменных типа A[i,j], K1, L2 R0 и т.п. так часто приводимых в старых учебниках по программированию. Единственным исключением, пожалуй, являются переменные циклов I и J. Это «вечные» имена для создания циклов.

Понятие программной единицы (процедуры) и их типы

В отличие от старых версий FoxPro, VFP имеет понятие формы определенного описания окна (формы), которое может самостоятельно исполнятся. В старых версиях FoxPro существовало понятие Экрана (screen).Это не одно и то же, что и форма.

Экран в FoxPro просто способ визуального построения окна, который в дальнейшем в любом случае переводился в исполняемую программу, строящую это окно (файл SPR). Форма же по своей сути является описанием класса окна, который при исполнении порождает объект, готовый к работе (см. ООП).

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

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

Четкого различия на уровне операторов между всеми этими группами нет. Просто они по разному строятся (например, запросы и меню стоятся автоматически), и соответственно имеют разное назначение. Здесь мы пока не приводим подробное описание каждой группы, лишь обозначим общую идеологию этого построения и типы файлов, в которых сохраняются эти программные единицы. Любая программная единица хранится в файле. Стандартным расширением для такого файла является расширение PRG. При выполнении или при построении проекта этот файл компилируется в p-код и затем выполняется. Компиляция проходит очень быстро и обычно пользователь VFP даже не замечает время, потраченное VFP на компиляцию при выполнении. Соответственно, при выполнении построенного проекта компиляция уже не нужна, так как проект строится на основе уже скомпилированных модулей.

Наборы готовых «кирпичиков» процедур можно объединять в файлы (об этом см. ниже), что дает нам процедурные файлы. Кроме того, есть большой класс програмных элементов, именуемый User defined function (UDF), но об этом ниже.

Хранимые процедуры это такие же наборы процедур, хранимых в базе данных. Об этом см. раздел «Понятие базы данных». Программы запросов и программы меню строятся автоматически и соответственно имеют расширения QPR и MPR. Как правило, Вам не нужно их менять или править. Более подробно об этом мы рассмотрим в разделах применение RQBE и Построение меню.

Операторы

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

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

Итак, оператором в VFP считается одна строка программы. Пустые строки игнорируются. Если оператор не умещается на одной строке, или программисту кажется более наглядным разместить один оператор на нескольких строках, то это можно сделать, поставив в конце строки, которую требуется продолжить символ «точка с запятой», например, здесь приведен один оператор:

Организация процедур и функций

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

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

Самая верхняя процедура обычно называется главной (стартовой) программой и, собственно, и есть основной единицей Вашего приложения (хотя это и необязательно, как мы покажем ниже). При вызовах процедуры может случиться так, что какая-то процедура (или функция) вызывает саму себя. Это называется рекурсией. С рекурсией в VFP следует обращаться крайне осторожно. VFP поддерживает до 128 рекурсивных вызовов, не более, поэтому мы настоятельно рекомендуем не пользоваться рекурсивными вызовами.

Процедура может принимать при ее вызове параметры от вызывающей программы. Параметры могут объявляться как частные переменные (ключевое слово PARAMETERS) или как локальные переменные (ключевое слово LPARAMETERS). Как именно объявлять параметры дело Вашего вкуса. Число передаваемых параметров может быть меньше, чем число объявленных параметров. В этом случае «лишние» параметры процедуры инициализируются в значение false (.F.). Пример оформления процедуры:

Соответственно вызов этой процедуры выглядит так:

Программа, дойдя до оператора Do MyProc, произведет поиск файла myproc.prg (или откомпилированного myproc.fxp) и произведет вызов этой процедуры. При вызове переменной-параметру nScope будет передано значение 3.14, и начнет исполняться процедура, пока не будет достигнут конец файла myproc.prg или не будет встречен оператор RETURN. При этом управление будет передано на следующий оператор после Do MyProc.

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

где MyProcFile имя процедурного файла.

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

Пример функции, которая вычисляет что-то:

Вызов этой функции может быть таким:

В последнем примере видно как функция вызывается без фиксации возвращаемого результата (кстати говоря, тут и сам знак = не нужен, но так читабельнее). То есть в этом случае, возвращаемый результат нигде не сохраняется. В этом случае, функция ведет себя как типичная процедура, выполняя что-то, а не вычисляя. Кстати, большинство функциональных возможностей VFP реализовано именно как функции.

Далее мы увидим, что методы классов тоже реализуются именно как функции. Функции, определенные Вами, в VFP называются User Defined Function, то есть функции, определенные пользователем. UDF это очень мощный инструмент структурного программирования.

Циклы и условные операторы

Если Вы знакомы со структурным программированием, то Вам особенно не нужно объяснять, что такое циклы и условные операторы. Но все же вкратце на этом остановимся.

Условный оператор позволяет выполнять тот или иной блок программы в зависимости от какого-то условия:

lExpression любое логическое выражение. Если оно истинно, то выполняется «часть кода 1», иначе «часть кода 2». В VFP существует масса функций, результат которых является логическим и поэтому может использоваться в этой конструкции.

Циклы позволяют выполнить какую либо часть кода несколько раз. Соответственно, в VFP существуют несколько видов циклов:

Циклов с послесловием, таких как Паскалевский цикл repeat until, в VFP нет. Но, при желании, их можно легко реализовать. Циклы с предусловием это циклы, выполняющиеся до тех пор, пока условие выполнения истинно. Проверка условия происходит перед очередным циклом, отсюда и название.

Такой цикл строится такой конструкцией :

Цикл перечисления это цикл, в котором происходит последовательное наращивание (или уменьшение) какого либо значения, то есть его перечисление.

Типичный цикл перечисления:

В этом случае, происходит последовательное увеличение переменной цикла (в данном примере I) от минимального значения nMin, до максимального nMax, с шагом приращения nStep.

Циклы «для каждого» очень удобно использовать для последовательного просмотра массивов или коллекций (о них мы поговорим позже). В этом случае, произойдет выполнение операторов цикла для каждого элемента этого массива или коллекции:

Приведем два примера использования этого цикла. Первый пример создается массив и затем последовательно выводятся его элементы оператором (?) :

В следующем примере с помощью OLE Automation создается объект книги Excel и последовательно выводятся имена листов этой книги:

Во всех циклах можно прервать выполнение цикла оператором EXIT или прекратить выполнение текущей итерации (перейти на следующую итерацию) с помощью команды LOOP.

Реакция на события

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

Характерным отличием такой модели является наличие алгоритма обработки, то есть четкой схемы, показывающей работу программы. К сожалению (или к счастью?) мир устроен по-другому. Динамичное развитие ситуации невозможно представить в виде законченных схем, блоков готовых решений. Мы не знаем, что случится через секунду или через минуту, мы также не знаем когда вообще что-нибудь случится. И, соответственно, мы не можем получить законченный алгоритм обработки.

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

Соответственно, суть системы управляемой событиями это описание реакции системы на определенные события. Нетрудно видеть, что алгоритма здесь нет, потому что мы не можем предсказать события. Мы можем лишь заявить следующее: «В случае того-то и того-то система поведет себя так-то и так-то». Таким образом, программирование системы заключается в описании реакции на события. Это очень важный момент в понимании подобных систем. Основное отличие от обычных подходов в том, что мы описываем только те события, которые нас интересуют, оставляя для остальных стандартную (ранее описанную) реакцию. То есть, если при создании обычных программ, Вы были обязаны описать все функциональные блоки Вашей программы, то в данном случае, Вы описываете лишь то, что отличает Вашу программу от стандартного поведения системы, как бы говоря: «А в остальном веди себя, как и прежде».

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

И все. Где именно это размещать мы покажем позже. А пока просто примите это к сведению.

Кроме этого примера, можно привести команды VFP ON :

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

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

Функция LocFile() возвращает имя выбранного пользователем файла, но если пользователь отказывается от выбора, то происходит ошибка. Попробуем ее отследить:

Форма элемент Вашего приложения

Итак, форма это не программа, а класс. Класс формы хранится в файле с расширением SCX (SCT дополнительный файл). Экземпляр формы создается командой DO FORM, при этом, соответственно выполняются события (методы) формы, которые возникают при ее загрузке. При выполнении формы (если это не указана специально) создается объектная переменная. Этим процессом можно управлять, указывая имя переменной в команде DO FORM:

Как мы покажем ниже, на самом деле формами управлять очень и очень просто. Ну а пока на этом все о формах.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *