Библиотеки визуальных классов Visual FoxPro (.vcx), расположенные в Visual FoxPro ...\FFC директории, содержат многообразие фундаментальных классов, которые позволят усовершенствовать ваши Visual FoxPro приложения с минимальными усилиями или даже без них. Вы имеете право свободно распространять их вместе со своими программными приложениями.

Просмотреть эти классы вы можете в Галерее Компонентов (Component Gallery). Галерея предоставляет быстрый и легкий способ узнать больше о свойствах, событиях и методах каждого класса. Для дальнейшей информации о Галерее Компонентов, смотри Использование Галереи Компонентов (Component Gallery).

Также, вы можете открыть класс в Дизайнере Классов (Class Designer) или Программой Просмотра Классов (Class Browser), чтобы увидеть его структуру и код. Это - отличный способ узнать, как работают фундаментальные классы, а также исключительна возможность проникнуть в суть программирования на Visual FoxPro.

Нижеприведённое руководство расскажет, как добавлять фундаментальные классы к приложениям.

Типы Классов

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

Подсказка:
Чтобы посмотреть какой базовый класс, в Галерее Компонентов щелкните правой клавишей мышки на фундаментальном классе, появится меню быстрого вызова и в нем щелкните на Properties, а потом на закладке Class Item. В поле Base Class появится название базового класса.

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

Ниже представлен список базовых классов и как их добавлять к приложению.

Категория A – базовые классы, которые размещаются на форме Категория B – базовые классы, которые размещаются на форме или запускаются программно Категория C – базовые классы, которые запускаются только программно

Checkbox

Custom

Form

Combobox

Container

Formset

Commandbutton

Timer

Toolbar

Commandgroup

ProjectHook

 

Editbox

 

 

Grid

 

 

Hyperlink

 

 

Image

 

 

Label

 

 

Line

 

 

Listbox

 

 

OLE Control

 

 

Optionbutton

 

 

Optiongroup

 

 

Shape

 

 

Spinner

 

 

Textbox

 

 

Размещение фундаментального Класса на Форме

Это - наиболее частый случай. Вы можете просто мышкой перетянуть класс на форму из  Галереи Компонентов, Браузера классов, Менеджера Проекта и Панели Инструментов Формы.

Примечание:
Чтобы увидеть более полную информацию о фундаментальном классе, выделите его на форме, затем запустите программу просмотра классов (Class Browser) из меню Tools.

 

Галерея Компонентов (Component Gallery)   Галерея компонентов предоставляет наилегчайший способ размещения фундаментальных классов на форме. Классы, у которых базовые классы категорий A и B, вы можете мышкой перетянуть из Component Gallery на форму. Или вы можете щелкнуть правой клавишей мышки на нужном фундаментальном классе в Component Gallery, откроется меню быстрого вызова, выбрать пункт меню Add to Form.

У некоторых фундаментальных классов есть собственные построители (Builders), которые запускаются автоматически, запрашивая у вас более детальную информацию, необходимую для конкретного класса.

Программа Просмотра Классов (Class Browser)   Фундаментальные классы, у которых базовые классы категорий A и B, можно поместить на форму непосредственно из окна программы просмотра классов (Class Browser), мышкой перетянув иконку класса, расположенную в верхнем левом углу окна. Для этого, выделите нужный класс в Class Browser, щелкните на иконке класса в верхнем левом углу окна Class Browser, не отпуская клавиши перетяните мышку на форму и отпустите клавишу в желаемом месте формы.

Фундаментальные классы, перетянутые на форму из Class Browser, не запускают соответствующий данному классу построитель. Однако, вы можете сами запустить его после того, как класс помещен на форму. Выделите фундаментальный класс на форме, затем правой клавишей мышки вызовите меню быстрого запуска. В этом меню щелкните на Builder и построитель запустится.

Менеджер Проекта (Project Manager) Фундаментальные классы, у которых базовые классы категорий А и В, можно поместить на форму из Менеджера Проекта (Project Manager).

Фундаментальные классы, перетянутые на форму из Project Manager, также не запускают соответствующий данному классу построитель. Однако, вы можете сами запустить его после того, как класс помещен на форму. Выделите фундаментальный класс на форму, затем правой клавишей мышки вызовите меню быстрого запуска. В этом меню щелкните на Builder и построитель запустится.

Панель Объектов Управления Формы (Form Controls toolbar) Фундаментальные классы, у которых базовые классы категорий А и В, можно поместить на форму из  Панели Объектов Управления Формы (Form Controls Toolbar).

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

Добавление Фундаментальных Классов к Проекту

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

Фундаментальный класс может быть добавлен в проект, путем перетаскивания мышкой  .vcx библиотеки, в которой находится данный класс, из Windows Explorer, или путем нажатия кнопки Add в Менеджере Проекта (Project Manager).

Добавление Фундаментальных Классов из Галереи Компонентов (Component Gallery)

Вы можете мышкой перетянуть фундаментальный класс из Галереи Компонентов (Component Gallery) в проект, либо щелкнув правой клавишей мышки на нужном класс в Галерее Компонентов (Component Gallery) открыть меню быстрого запуска, и затем выбрать Add to Project. Когда вы добавляете класс в проект, появится окно диалога Add_Class_to_Project, предлагая вам следующие опции:

Add class to project  - Добавить класс в проект

Выбором данной опции,  класс и его .vcx библиотека добавляются в проект. Напоминаем, что это будет осуществлено автоматически для классов помещенных на форму (категория A и B). И для некоторых классов категорий В и С, которые вы планируете вызывать программно в своем приложении, вы захотите воспользоваться этой опцией.
Create a new class from selected class - Создать подкласс  данного класса

Выбором этой опции, создается новый подкласс фундаментального класса в проекте. Данная опция дает вам возможность улучшить функциональность исходного фундаментального класса, обычно путем добавления программного кода.
Create a new form from selected class - Создать новую форму из данного класса

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

Добавление Фундаментального Класса из Windows Explorer

Фундаментальный класс может быть добавлен в проект, путем перетаскивания мышкой  .vcx библиотеки визуальных классов, в которой находится данный класс, из Windows Explorer. Данная библиотека будет добавлена в раздел Class Libraries Менеджера Проекта.

Добавление Фундаментальных Классов в Менеджере Проекта (Project Manager)

В Менеджере Проекта щелкните на закладке Classes, затем на кнопке Add. Выберите библиотеку классов из папки \Ffc\, которая содержит желаемый вами класс.

Включение Классов в Ваше Приложение

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

Невидимые Фундаментальные Классы

Например, такие фундаментальные классы, которые базируются на Пользовательском (Custom) классе из категории B, и такие классы требуют дополнительного программирования. Эти классы обычно выполняют задачи общего характера, как проверка информации в Регистрах Windows, обращение к настройкам среды окружения, обработка ошибок приложения, использование средств автоматизации других приложений таких, как автоматизированное составление стандартных писем (Mail Merge) с помощью Microsoft Word.

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

Ниже приведенный пример демонстрирует программный код, как использовать невидимые фундаментальные классы  в ваших приложениях:

  1. Поместите File Version класс из  Галереи Компонентов (Component Gallery), из папки Foundation Classes\Utilities на форму.

  2. Добавьте кнопку на форму и напишите следующий код на событие Click:

      Скопировать Код
    WITH THISFORM._FILEVERSION1
       .cFileName = HOME( )+ 'VFP9.EXE'
       .GetVersion( )
       .DisplayVersion( )
    ENDWITH
  3. Запустите форму и нажмите кнопку.

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

  Скопировать Код
LOCAL oFileVersion
      oFileVersion = NewObject('_fileversion', '_utility.vcx')
      WITH oFileVersion
            .cFileName = HOME( )+ 'VFP9.EXE'
            .GetVersion( )
            .DisplayVersion( )
ENDWITH
Примечание:
Данный пример предполагает, что код может определить местонахождение  библиотеки _utility.vcx или файла .app, который содержит в себе  _utility.vcx.

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

Добавление Визуального Фундаментального Класса к Приложению.

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

  Скопировать Код
LOCAL oAbout
      oAbout = NewObject('_aboutbox','_dialogs.vcx')
      oAbout.Show( )

Для того, чтобы сделать индивидуальные настройки диалогового окна About для конкретного приложения, создайте в приложении подкласс данного класса:

  1. Откройте проект приложения.

  2. В меню Tools выберите Component Gallery.

  3. В окне Component Gallery, откройте каталог Visual FoxPro Catalog, затем - Foundation Classes, and выберите Dialogs.

  4. Перетяните мышкой класс Aboutbox в окно Менеджера Проекта (Project Manager).

  5. Появится диалоговое окно Add Class to Project, в котором выберите опцию Create new form from selected class.

  6. В диалоговом окне Save As, введите имя новой формы.

    После чего, откроется построитель форм с только что созданной формой.

  7. В окне Properties, введите в свойство Caption заголовок новой формы вашего приложения. Сохраните и закройте форму.

  8. Напишите программный код  DO FORM FormName в программе запуска этой формы, например, в процедуре пункта меню About.

    -или-

    Из папки Foundation Classes\Buttons в Component Gallery, перетяните класс Run Form button на какую-нибудь форму. Запустится построитель, и вы, таким образом, сможете задать имя  исполняемой формы.

Если вы пользуетесь Фундаментальными Структурами Visual FoxPro приложения (Application Framework), то построитель приложения (Application Builder) автоматически  добавит формы (обе: .scx и класс формы  .vcx). Мастер Нового Приложения или раздел Галереи Компонентов New Application инсталлирует  Фундаментальные Структуры (Framework) в проект, который они создали. Построитель приложения взаимодействует непосредственно с Фундаментальными Структурами Visual FoxPro и дает вам возможность определить, как и где запускать эту форму.

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

Соглашения о Наименовании Класса

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

Классы и Библиотеки Классов

Большинство фундаментальных классов являются подклассами базовых визуальных классов из библиотеки _base.vcx, которую вы сможете найти в папке \Ffc\. Соглашения о наименовании для этих классов отражают базовый класс. Например, подкласс класса Custom назван  _Custom в _base.vcx. Все классы используют символ подчёркивания ( _ ), предшествующий имени класса в _base.vcx.

Несколько библиотек не содержат в себе подклассы базовых классов из _base.vcx,  т.к. эти классы совместно используются и другими компонентами Visual FoxPro, как например, Мастера (wizards) и Построители (builders). Такие классы находятся в библиотеках с именами без предшествующего символа подчёркивания, например, Registry.vcx.

Методы и Свойства

Наименование методов чаще основывается на выполняемых ими действиях, такое как RunForm (ЗапускФормы). Если имя содержит несколько слов, как в данном примере, RunForm, тогда это показывается заглавными буквами. Именам свойств, обычно, предшествует буква, определяющая тип данных данного свойства. Например, cFileName указывает, что это свойство - символьного типа. А также, значения свойств по умолчанию (default values) для свойств устанавливают соответствующий тип данных. Например, начальное значение логического свойства может быть ЛОЖЬ (.F.), в то время как, начальное значение числового свойства может быль определено, как 0.

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

Улучшение или Изменения Фундаментальных Классов Visual FoxPro

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

Создание Подклассов Фундаментальных Классов

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

Изменение _base.vcx

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

Вместо того, чтобы изменять _base.vcx, вам следует переопределить классы в _base.vcx, чтобы они унаследовали поведение от ваших собственных базовых классов, что предпочтительней, чем от базовых классов Visual FoxPro. Если у вас уже есть библиотека собственных базовых классов, которые являются подклассами базовых классов Visual FoxPro, вы можете переопределить _base.vcx для наследования от ваших пользовательских классов. Таким образом, когда компоненты приложения используют _base классы, то они будут наследовать от ваших классов. Вы можете воспользоваться программой просмотра классов Class Browser, чтобы переопределить родительский класс (свойство parent class) для отдельно взятого класса.

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

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

Смотри также