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

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

Расширение визуальных инструментов проектирования в Visual FoxPro

Базовые классы элементов управления Visual FoxPro были разработаны таким образом, чтобы решить подавляющее большинство потребностей интерфейса. Visual FoxPro обеспечивает все основные средства управления и элементы интерфейса, которые обязаны создавать стандартные приложения Windows. Однако зачастую Вы можете обнаружить, что Ваше приложение требует объектов или элементов управления, которых нет в базовых классах Visual FoxPro. В этом случае Вы можете расширить визуальные инструменты проектирования путем создания подклассов или используя элементы управления ActiveX.

Создание подклассов

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

Точно также создавая подклассы базовых элементов управления, Вы можете расширить возможности Visual FoxPro путем создания объектов, которые добавляют новые возможности существующим базовым классам или комбинируют возможности нескольких объектов. Например, Вы можете добавить визуальные возможности, такие как рамку или трехмерные эффекты в поле ввода. Или Вы можете комбинировать элемент управления Image, кнопку и поле ввода для того, чтобы создать элемент для просмотра изображений, в котором пользователь сможет просматривать ряд .bmp файлов. Таким образом, создание пользовательских классов может помочь Вам управлять развитием приложения масштаба компании, путем создания стандартизованных элементов управления для всех Ваших приложений. Для получения дополнительной информации смотрите "Объектно-ориентированное программирование".

Использование элементов управления ActiveX

Альтернативой создания нового элемента управления, используя подклассы Visual FoxPro, является использование элементов управления ActiveX (файлы с расширением .ocx). Эти элементы управления созданы независимо от Visual FoxPro и могут быть интегрированы не только в Visual FoxPro, но и во многие другие приложения Windows.

В действительности, элементы управления ActiveX - это готовый набор компонент, которые Вы можете интегрировать в Ваше приложение "без швов". Использование элементов управления ActiveX предоставляет следующие преимущества:

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

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

  • Один и тот же элемент управления может быть использован в нескольких программах. Например, если это имеет смысл, Вы можете использовать один и тот же элемент управления ActiveX как в Visual FoxPro, так и в Visual Basic. Для его управления в обоих случаях будут использоваться одни и те же свойства и методы, и элемент будет иметь один и тот же внешний вид во всех программах, что облегчает работу с ним для пользователя.

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

Короче говоря, использование элементов управления ActiveX позволяет Вам не только расширить Ваше приложение возможностями всего Windows, но и формирует один и тот же внешний вид, как для Вашего приложения, так и для другого приложения используемого на том же предприятии. Для получения дополнительной информации об использовании элементов управления ActiveX смотрите "Разделение Информации и Использование OLE". Для получения информации о создании Ваших собственных элементов управления ActiveX смотрите "Подключение Модулей Visual FoxPro API".

Добавление функциональных возможностей других программ

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

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

Вы можете добавить функциональность других программ в Visual FoxPro следующими способами:

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

  • Напишите программу на Visual FoxPro которая будут использовать автоматизацию для организации связи с элементом управления и данными в других программах Windows.

Следующие разделы более подробно описывают данные методы расширения возможностей Visual FoxPro.

Использование мастеров (Wizards)

Множество мастеров Visual FoxPro позволяют Вам объединить данные Visual FoxPro с функциональными возможностями других программ Windows. Например, Вы можете послать письма Вашим клиентам, используя "Мастер автоматического составления стандартных писем (Mail Merge Wizard)". Когда Вы запускаете мастер, Вы можете выбрать таблицу или представление, содержащие данные Visual FoxPro, которые необходимо использовать, а затем преобразовать их к любому подходящему формату файла (такой как разделенные запятыми) или указать, что Ваша программа обработки текстов использует Visual FoxPro OLE DB provider для доступа к данным. Если Вы используете Microsoft Word, то мастер даже запустит программу обработки текстов, создаст чистый документ слияния и отобразит панель инструментов Mail Merge для организации связи полей с Вашими данными Visual FoxPro.

Аналогичным образом, используя Microsoft Excel и Microsoft Query, Вы можете анализировать Ваши данные при помощи сводной таблицы (pivot table), которая суммирует данные в столбцах и позволяет Вам перестраивать отчет, рассматривая его в разных разрезах. Используя "Мастер сводной таблицы (PivotTable Wizard)" в Visual FoxPro, Вы можете использовать данные Вашего приложения как источник данных для Microsoft Excel и сформировать сводную таблицу в Microsoft Excel.

Использование автоматизации (Automation)

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

Автоматизация - это особенно привлекательный и мощный способ работы с программами Windows из Visual FoxPro по нескольким причинам:

  • Вы имеете прямой доступ к другой программе, включая все ее объекты и команды.

  • Вы можете использовать данные совместно с другой программой без необходимости экспортировать или преобразовывать их в другой формат.

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

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

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

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

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

Одно решение состояло бы в том, чтобы использовать автоматизацию для того, чтобы скопировать данные продаж из Visual FoxPro в ячейки листа Microsoft Excel. Тогда Вы сможете вызвать мастер построения диаграмм Microsoft Excel чтобы создать диаграмму данных и скопировать ее в Windows Clipboard. Все еще используя автоматизацию, Вы можете вызвать Microsoft Word и создать или открыть документ (если Вы создаете новый документ, Вы можете вставить стандартный текст, который Вы храните в Visual FoxPro), и затем вставить в него диаграмму, созданную в Microsoft Excel.

Это только один способ, которым Вы можете использовать автоматизацию, чтобы сделать Visual FoxPro частью решения предприятия. Знакомясь с объектами и методами, доступными в программах, которые Вы обычно используете, Вы можете придумать еще много способов заставить каждую программу расширить возможности других программ. Для получения более детальной информации об автоматизации смотрите "Управление объектами с автоматизацией" и "Разделение Информации и Использование OLE".

Расширение возможностей хранения данных в Visual FoxPro

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

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

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

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

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

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

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

Например, Вы можете решить, что безопасность и транзакционные возможности - это принципиально важная часть Вашего приложения, для обеспечения которой Вы будете хранить данные, используя Microsoft SQL Server. Для обеспечения доступа к данным Вы создадите соединение с SQL Server, используя SQL Server OLE DB provider. Затем Вы можете выполнить запрос и другие SQL команды, используя ADO и получить результат в ADO recordset или CursorAdapter для последующего использования в Visual FoxPro.

Другие приложения могут получить доступ к тем же самым данным и использовать в своих интересах те же самые особенности. Например, таблица Microsoft Excel может взять эти данные из той же базы данных SQL Server. Мало того, что электронная таблица будет обладать теми же самыми преимуществами, что и Ваше приложение, но она также будет использовать те же возможности по безопасности и транзакции, которые иначе были бы недоступны для таблиц Microsoft Excel.

В некоторых случаях, Вы можете захотеть пойти дальше и использовать те команды SQL, которые являются специфическими для того источника данных, к которому Вы получаете доступ, используя OLE DB provider. Например, Microsoft SQL Server позволяет Вам создавать и выполнять хранимые процедуры, которые манипулируют данными на сервере (а не в Вашем приложении). Чтобы использовать в своих интересах хранимые процедуры, Вы можете послать "родные" (native) конструкции SQL на сервер базы данных. Команды Pass-through SQL также позволяют Вам решать задачи системного администрирования сервера, и в некоторых случаях они выполняются быстрее, чем аналогичные конструкции SQL в Visual FoxPro.

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

Наращивание (upsizing) базы данных Visual FoxPro

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

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

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

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

Для получения дополнительной информации по наращиванию базы данных, смотрите "Масштабирование Баз Данных Visual FoxPro".

Смотрите также