Введение
Разработка приложений в Microsoft FoxPro 2.5 (2.0)
Лес Пинтер
Это руководство сначала было написано для FoxPro 2.0. В январе 1993 года Microsoft выпустила версию 2.5. При всем моем уважении к версии для DOS следует сказать, что новая версия не имела особых новшеств. Действительно большим шагом был выпуск FoxPro for Windows.
Книга является продолжением издания "FoxPro Programming 2nd Edition". Я предлагаю вам книгу о том, как разрабатывать приложения в среде FoxPro 2.0.
При обсуждении проблемы разработки приложений для версии 2.0 высказываются самые различные мнения, и я начну прямо с этой темы. Если вы проанализируете примеры, поставляемые вместе с пакетом, то обнаружите, что они все написаны с использованием того, что Fox называет Foundation Reads. Версия 2.0 поддерживает предложение VALID команды READ, что позволяет выполнить команду READ без наличия активных GET. Предложение VALID команды READ служит для получения ответа на вопрос: "Мы завершаем работу с READ?" До тех пор пока структура VALID не вернет значение ИСТИННО, READ просто сидит и ждет. Однако, так как структура может быть активизирована событием, предполагающим завершение READ, - нажатие клавиши ESC, выбор элемента управления, имеющего атрибут "завершить выполнение READ" (например, переменная GET с атрибутом типа *RT), закрытие окна - вам необходимо проверить, действительно ли событие, активизировавшее структуру VALID, имело целью завершить READ или нет. В последнем случае ожидание продолжается.
Внутри структуры VALID вы можете выполнить проверку выбранной опции меню для определения того, какую процедуру необходимо запустить, выяснить какое окно активизировано последним или провести иной анализ ситуации. Все перечисленные выше события ведут к активизации структуры READ VALID. Программа такого типа работает очень похоже на то, с чем вы имеете дело при работе на компьютерах Macintosh. Пользователи могут раскрыть меню, перейти в другое место, вернуться туда, откуда они начали, без необходимости каждый раз выполнять выбор опций нескольких меню.
Звучит привлекательно, не так ли? Почему же тогда существуют программы с иным типом функциональности? Я почти не сомневаюсь, что большая часть или все программы, написанные нами в течение нескольких ближайших лет, будут включать эти немодальные (modeless) READ. Мне нравится идея, и я использую такой подход в собственных разработках. Но если вы посмотрите на содержание этой книги, то увидите, что в ней рассматривается множество тем, но только одна глава посвящена Foundation Reads. Может быть нам всем следует использовать новую технику и забросить все эти старые, замшелые методы?
Не думаю. У меня есть достаточно богатый опыт консультационной практики, мои клиенты имеют вполне конкретные соображения относительно того, какого типа программы они хотят получить от меня. Я публикую ежемесячный журнал и редактирую статьи с учетом уровня подготовки и интересов моих читателей. Кроме того, я пишу статьи для PointDBF - французского журнала, посвященного базам данных. Так что у меня есть несколько источников из которых я получаю достаточно конкретную информацию относительно вкусов пользователей и степени их готовности принять то или иное нововведение. Очень немногие уже сейчас готовы перейти на работу с немодальными READ.
Тому есть несколько причин. Возможно, первой из них оказывается сложность написания приложений с использованием Foundation Read по сравнению с традиционными подходами, заказчики не могут позволить себе роскошь тратить время на борьбу с новыми и более сложными технологиями программирования при наличии жестких сроков разработки. В моем мире дольше значит дороже (я беру почасовую оплату). Еще никто не сказал мне, что будет доволен если моя разработка обойдется ему дороже. Мы живем в период экономического спада. Даже если бы я мог одинаково быстро разрабатывать приложения с использованием новой технологии, я уверен, что потерял бы заказчиков пока осваивал новые методы. Это не пустые слова. Обучение - процесс непростой.
Кроме того, должен с сожалением сказать, что Foundation Read работает очень быстро, если приложение работает под расширенной однопользовательской версией FoxPro на компьютере с процессором 386 или 486, оснащенном от 4 до 8 мегабайт памяти, другая конфигурация не годится. Однажды я запустил пример из книги одного из моих уважаемых коллег, посвященной разработкам с использованием немодальных READ, на моем компьютере 486/33 с жестким диском 200 Мб с контроллером IDE и 4 Мб памяти. Я решил, что компьютер сломался. Оказалось, что я работал под Foxprol, а не Foxprolx. Когда я запустил расширенную версию все пошло замечательно. К тому моменту когда я подобрал конфигурацию, обеспечивающую, по моему мнению, приемлимую скорость, выяснилось, что это такая аппаратура, которой нет у моих клиентов. Многие из них работают с сетями Novell и рабочими станциями на базе 286 процессора. Вряд ли мне удастся убедить заказчика заменить 60 рабочих станций, чтобы мои программы не казались мертвыми.
В этом руководстве описываются приемы создания программ, работающих быстро на 286 - 386 машинах, на более мощном оборудовании скорость будет еще выше. Если ваши заказчики работают на быстрых машинах, вы, возможно, не оцените время, которое я потратил на оптимизацию кода. В том случае, если ваши клиенты довольны, вы попали в точку.
Я надеюсь, что книга написана в таком ключе, что вы сможете извлечь важные сведения просто читая ее. Но, как известно, одна картинка заменяет тысячу слов. Вы можете заказать дискету со всеми исходными текстами программ в книге. Кроме того, издаваемый мною журнал (или его Российский вариант, - прим. пер.) позволит вам получить информацию даже быстрее, чем это позволяет книга.
Я потратил 12 лет на получение в колледже довольно унылой специальности, которую я никогда не использовал. Если вы изучаете программирование в колледже, я поздравляю вас, вы предусмотрительны и мудры. Если вы попали в мир программирования подобно моим друзьям и неведомому количеству других, которые периодически навещают мир FoxPro, мы рады вам. Я сам прошел такой путь.
Я собирался написать книгу для тех, кто программирует в FoxPro for Windows или переписать эту книгу с использованием программ, работающих под Windows, но потом передумал. Книга, которую вы сейчас держите в руках, в значительной степени повторяет ранее вышедшую FoxPro 2.0 Applications Programming за исключением исправленных ошибок и новой главы.
FoxPro for Windows - замечательный продукт и вполне может стать продуктом будущего. Однако, не могу сказать является ли он продуктом сегодняшнего дня. Мой консалтинговый бизнес идет весьма успешно, и до сих пор ни один из моих клиентов не попросил приложения, работающего под Windows. Ни один.
Будет ли число разработок, созданных под Windows увеличиваться? Непременно. Windows предоставляет колоссальные возможности. Чтобы не ходить далеко упомяну хотя бы поддержку принтеров.
Так почему же не переписать эту книгу для FoxPro for Windows? Тому есть несколько причин. Во-первых, соотношение 10:1 в числе разработок для DOS и Windows. Во-вторых, срок разработки приложений под Windows больше по сравнению с разработками под DOS. Переход от редактора текстов к Конструктору Экранов, затем к Менеджеру Проектов и снова к редактору выполняется медленнее. Программисты обычно переходят к новому инструменту в том случае, когда он предлагает повышение производительности. Нам нужно приучить заказчиков к мысли о том, что им придется больше платить за проекты, которые создаются медленнее. В-третьих, пользователь ожидает, что приложение, созданное для работы под Windows, будет вести себя также как сама среда, что означает требование к созданию событийно-управляемых приложений. То есть вы размещаете на экране несколько окон, щелкаете мышью на любом из них, и при этом окно активизируется, и его код вступает в работу. Методика создания событийно-управляемых приложений хотя и хорошо документирована (только в моем журнале вы сможете найти четыре статьи, предлагающие четыре самостоятельных подхода), но более сложна и стоит дороже. И наконец, графический интерфейс требует особо тщательной проработки, и в результате время на создание привлекательного экрана может съесть весь бюджет.
Внутренний голос говорит мне, что хорошее приложение для Windows должно стоить по меньшей мере вдвое дороже его DOS собрата. Это много. После всего вышесказанного мне хочется тем не менее сказать, что программирование в FoxPro for Windows практически ничем не отличается от программирования в DOS. По сути дела значительных различий нет, кроме некоторого числа функций, обрабатывающих специфические черты среды.
Так что хотя эта книга и не названа FoxPro for Windows Programming она могла бы быть таковой, сделай я образы экранов с помощью Hijack for Windows и поменяй их внешний вид. Я просто подумал, что такой упрощенный подход может направить вас по неверному пути, чего я делать не хочу.
Кстати, если вы соберетесь писать приложение под Windows, не пытайтесь сначала написать его для DOS, начинайте сразу в FoxPro for Windows. В свое время я написал программу, позволяющую работать в FoxPro DOS как с электронной таблицей, затем запустил ее под Windows. В DOS она работала прекрасно, но под Windows проще было бы запустить Excel. Тем не менее по большому счету вы можете использовать программы в этой книге на обеих платформах.
Я буду писать приложения, работающие под Windows, для моих заказчиков когда мне их закажут, а это непременно произойдет. Я буду писать статьи на тему программирования в среде FoxPro for Windows как только я найду интересную тему. Пока для меня не совсем ясно какие приложения достойны переноса под Windows, и при этом потребуется ли специальная техника программирования. Некоторое время назад потенциальный подписчик спросил: не хочу ли я написать о том как можно ввести в базу данных письма, которые переведены в электронную форму с помощью сканера? О чем тут писать? Включите сканер и затем APPEND MEMO. Это не статья, это одно предложение. Как вызвать Excel из программы на FoxPro for Windows? Тут можно обойтись четырьмя строками кода. Это тоже не статья, может быть потянет на абзац, но уж никак не на статью.
Я надеюсь, что вы найдете эту книгу интересной как с точки зрения программирования для FoxPro/DOS, так и для FoxPro for Windows. Надеюсь также, что она даст вам представление о принципах разработки приложений: как взаимодействуют экраны и меню, как работают выпадающие меню и каким образом ваше приложение реагирует на действия пользователя, как использовать цвет и о многих других деталях, возникающих при попытке заставить компьютер работать на вас. Последняя глава, посвященная событийно-управляемым приложениям, позволяет вам заглянуть на "кухню", в которой создаются приложения, работающие так, как положено современным программам, не загоняющим пользователя в жесткие рамки.