В предыдущих главах мы рассмотрели использование стандартных элементов управления, которые представляют лишь небольшую часть доступных элементов управления. Множество разнообразных элементов управления находится в библиотеках классов, объединенных общим названием Visual FoxPro Foundation Classes, которые входят в комплект поставки Visual FoxPro. Кроме библиотеки Foundation Classes, вы можете также использовать библиотеки классов, которые разрабатывают сторонние фирмы.
В последнее время широкое распространение получают ActiveX-компоненты, которые представляют собой полнофункциональные элементы управления. Вы можете размещать их так же, как и обычные элементы управления, задавать свойства и обрабатывать события.
В процессе разработки приложения вы можете создавать свои библиотеки классов и размещать в форме собственные элементы управления.
Использование библиотек классов
Применение внешних библиотек классов не только облегчает разработку приложения, но и ускоряет процесс. Для размещения в форме объектов библиотек вы можете использовать панель инструментов Form Controls (Элементы управления формы), Галерею компонентов и Class Browser (Обзор классов).
Панель инструментов Form Controls
Чтобы использовать панель инструментов Form Controls (Элементы управления формы), вы должны разместить на ней объекты внешней библиотеки. Для этого выполните следующие действия:
Замечание
Файлы библиотек классов имеют расширение VCX.
Рис. 16.1. Диалоговое окно Open для присоединения внешней библиотеки
Замечание
После выбора библиотеки классов нажмите кнопку View Classes (Просмотр классов) на панели инструментов Form Controls (Элементы управления формы). Обратите внимание на то, что в ее меню добавился пункт с выбранной вами библиотекой классов (в данном примере Buttons (Кнопки)).
Рис. 16.2. Меню кнопки View Classes и панель инструментов, содержащая элементы управления внешней библиотеки
Библиотека Buttons (Кнопки) содержит набор кнопок, назначение которых описано в табл. 16.1.
Таблица 16.1. Кнопки библиотеки Buttons
Кнопка | Наименование | Назначение |
mailbtn | Размещает в форме кнопку, позволяющую передать данные таблицы по электронной почте | |
vcr | Размещает набор кнопок перемещения по записям таблицы | |
cmdok | Размещает в форме кнопку ОК | |
cmdHelp | Размещает в форме кнопку Help | |
cmdCancel | Размещает в форме кнопку Cancel |
Рассмотрим размещение этих кнопок в форме:
Рис. 16.3. Размещение объекта vcr в форме
Рис. 16.4. Форма с размещенным объектом vcr для перемещения по записям
Галерея компонентов Visual FoxPro содержит библиотеки классов Foundation Classes (рис. 16.5), которые размещены в одноименном каталоге. Для размещения объекта выбранного класса в форме вы можете выполнить любое из следующих действий.
Рис. 16.5. Каталог Foundation Classes
Рис. 16.6. Использование контекстного меню для размещения объекта выбранного класса в форме
Замечание
Для некоторых классов определены построители, автоматически запускаемые при размещении их в форме.
Еще одним способом размещения в форме объектов внешней библиотеки классов является применение окна Class Browser (Обзор классов) (рис. 16.7). Для его открытия выполните команду Class Browser (Обзор классов) из меню Tools (Сервис).
Рис. 16.7. Окно Class Browser
Для размещения в окне Class Browser (Обзор классов) библиотеки предназначены кнопки Open (Открыть) и View Additional File (Показать дополнительный файл) панели инструментов окна. При их нажатии открывается диалоговое окно Open (Открыть) (см. рис. 16.1), позволяющее открыть и разместить в Class Browser (Обзор классов) существующую библиотеку классов.
Чтобы добавить в форму элемент управления из окна Class Browser (Обзор классов), выполните следующие действия:
Рис. 16.8. Размещение в форме объектов из окна Class Browser
Использование ActiveX-компонентов в форме
Компоненты ActiveX представляют собой 32-разрядные объекты, содержащие код и данные. В отличие от библиотек классов Visual FoxPro, ActiveX-компоненты могут создаваться с помощью различных средств разработки, например, Visual C++ или Visual Basic. Вы можете использовать ActiveX-компоненты аналогично базовым компонентам Visual FoxPro. Основным
Преимуществом данных компонентов является их огромное количество, т. к. их разработкой занимаются многие фирмы, а также отдельные программисты. Часть этих компонентов является коммерческой продукцией, часть распространяется бесплатно. Множество компонентов включено в поставку Visual Studio и в приложение Microsoft Office. Для поиска необходимых вам компонентов вы можете использовать Интернет.
Для формирования списка используемых при разработке ActiveX-компонентов необходимо воспользоваться диалоговым окном Options (Параметры), выполнив следующие действия:
Рис. 16.9. Вкладка Controls диалогового окна Options
Замечание
Кнопка Add (Добавить) вкладки Controls (Элементы управления) диалогового окна Options (Параметры) предназначена для добавления новых объектов в список Selected (Выбранные). При нажатии на данную кнопку открывается диалоговое окно Open (Открыть), используя которое можно выбрать файл с ActiveX-компонентами.
Отображение ActiveX-компонентов на панели инструментов Form Controls
Для отображения ActiveX-компонентов на панели инструментов Form Controls (Элементы управления формы) при создании форм выполните следующие действия:
Рис. 16.10. Панель инструментов, содержащая ActiveX-компоненты
Размещение ActiveX-компонентов в форме
Рассмотрим пример создания формы, содержащей две вкладки, на которых разместим такие ActiveX-компоненты, как электронная таблица и документ Microsoft Word. Для создания формы выполните следующие действия:
Рис. 16.11. Форма с размещенным в ней объектом Page Frame
Электронная таблица
На первую вкладку формы поместим электронную таблицу Excel (рис. 16.12), используя кнопку Лист Microsoft Excel на панели инструментов Form Controls (Элементы управления формы).
Рис. 16.12. Электронная таблица, размещенная на первой вкладке формы
Для редактирования электронной таблицы используется конструктор. Чтобы его запустить, необходимо выполнить следующие действия:
После выбора пункта меню Изменить интерфейс Visual FoxPro изменяется. Вы переходите в режим редактирования по месту электронной таблицы (рис. 16.13), при котором в окно Visual FoxPro добавляются панели инструментов Microsoft Excel. Можете приступить к редактированию таблицы с помощью средств электронной таблицы.
Рис. 16.13. Редактирование электронной таблицы в Visual FoxPro
В том случае, если вы выбираете пункт меню Открыть, запускается приложение Microsoft Excel и в нем открывается созданный вами лист электронной таблицы (рис. 16.14).
Рис. 16.14. Редактирование электронной таблицы в отдельном приложении
Документ Microsoft Word
На вторую вкладку формы поместим объект для работы с документом Microsoft Word (рис. 16.15), используя кнопку Документ Microsoft Word на панели инструментов Form Controls (Элементы управления формы).
Для редактирования объекта типа Документ Microsoft Word вы также можете использовать команды Изменить и Открыть контекстного меню. На рис. 16.16 приведен режим редактирования по месту.
Работа с ActiveX-компонентами после запуска формы на выполнение
При запуске формы, содержащей ActiveX-компоненты, они активизируются. Поведение ActiveX-компонентов определяется заданными для них алгоритмами управления. Например, для редактирования информации в электронной таблице достаточно дважды щелкнуть на объекте (рис. 16.17).
Рис. 16.15. Объект для работы с документом Microsoft Word
Рис. 16.16. Редактирование документа Microsoft Word
Рис. 16.17. Редактирование электронной таблицы
Связь ActiveX-компонентов с базой данных
В предыдущем разделе мы рассмотрели размещение в форме ActiveX-компонентов. Но форма предназначена, в основном, для работы с базой данных. Возникает вопрос, а как же использовать ActiveX-компоненты для работы с таблицами базы данных? Связь ActiveX-компонентов с базой данных рассмотрим на примере RTF-объекта, который используется для ввода в Memo-поля таблицы форматированного текста. Чтобы создать форму с размещенным в ней RTF-объектом, будем использовать таблицу customer, содержащую Memo-поле mnotes с дополнительной информацией о клиенте:
Замечание
Присоединение внешних библиотек мы рассмотрели в начале этой главы.
Результат размещения в форме RTF-объекта приведен на рис. 16.19.
Рис. 16.18. Форма с размещенным ActiveX-компонентом и объектом из библиотеки Samples
Рис. 16.19. Использование в форме ActiveX-компонента для ввода форматированной информации в Memo-поле таблицы
Использование календаря в форме
Календарь также является одним из ActiveX-компонентов. Вы можете использовать его для ввода информации в поля дат.
Сначала разместим календарь в форме, чтобы посмотреть свойства, которыми обладает данный объект, и возможности их настройки. Затем рассмотрим пример программного использования календаря для ввода даты.
Настройка свойств календаря
Чтобы разместить в форме календарь, который на панели инструментов Form Controls (Элементы управления формы), содержащей ActiveX-компоненты, отображается в виде кнопки Calendar Control (Элемент управления календарь), нажмите данную кнопку, установите указатель мыши в форму и нарисуйте курсором рамку требуемого размера. Календарь размещен в форме (рис. 16.20).
Рис. 16.20. Форма с размещенным в ней календарем
С целью настройки свойств календаря выделите размещенный объект и нажмите правую кнопку мыши. В контекстном меню выберите команду Календарь Свойства. На экране откроется диалоговое окно Свойства: Календарь созданного объекта, содержащее набор параметров, позволяющих настроить календарь (рис. 16.21).
Рис. 16.21. Диалоговое окно Свойства: Календарь
Диалоговое окно Свойства: Календарь содержит три вкладки: Общие (General), Шрифт (Font), Цвет (Color).
Вкладка Общие содержит поля, позволяющие настроить параметры, описанные в табл. 16.2.
Таблица 16.2. Назначение полей окна Свойства: Календарь
Поле | Назначение |
Значение (Value) | Текущая дата |
Первый день недели
(First Day) |
День, принимаемый за первый день недели |
Формат дня {Day Length) | Формат отображения наименования дня недели; может принимать одно из трех значений: короткий, средний, длинный |
Формат месяца (Month Length) | Формат отображения наименования месяца; может принимать одно из двух значений: короткий и длинный |
Оформление (Grid Cell Effect) | Стиль отображения ячеек таблицы |
Область Отображение (Show) вкладки Общие (General) содержит флажки, описанные в табл. 16.3.
Таблица 16.3. Назначение флажков области Отображение вкладки Общие
Флажок | Назначение |
Заголовок месяца и года
(Month/Year Title) |
Указывает на необходимость отображения заголовка месяца и года |
Выбор месяца и года
(Month/Year Selectors) |
Указывает на необходимость размещения в заголовке полей для выбора месяца и года |
Дни недели (Days of Week) | Указывает на необходимость отображения в заголовке таблицы дней недели |
Сетка по горизонтали
(Horizontal Grid) |
Указывает на необходимость отображения в таблице горизонтальных линий сетки |
Сетка по вертикали
(Vertical Grid) |
Указывает на необходимость отображения в таблице вертикальных линий сетки |
При изменении любого из параметров вкладки становится доступной кнопка Применить, при нажатии на которую сохраняются введенные изменения.
Вкладка Шрифт (Font) окна свойств календаря (рис. 16.22) позволяет настроить шрифты объекта. Список Свойства (Properties) вкладки содержит объекты оформления календаря, для которых можно настроить шрифты:
Списки Шрифт (Font) и Размер (Size) позволяют задать наименование и размер шрифта, выбранного из списка Свойства (Properties) объекта, а флажки области Атрибуты (Effects) — стиль оформления.
Вкладка Цвет (Color) окна свойств календаря (рис. 16.23) позволяет изменить цветовое оформление календаря. Список Свойства (Properties) содержит элементы календаря, для которых можно настроить цвета:
С помощью списка Набор цветов (Color Set) можно установить используемую цветовую схему, а списка Цветовая палитра (Color Palette) — цвет выбранного из списка Свойства (Properties) элемента.
Рис. 16.22. Вкладка Шрифт диалогового окна Свойства: Календарь
Рис. 16.23. Вкладка Цвет диалогового окна Свойства: Календарь
При нажатии на кнопку Справка (Help) открывается окно справочной системы, содержащее список всех методов, свойств и событий ActiveXкомпонента (рис. 16.24).
Рис. 16.24. Список всех методов, свойств и событий ActiveX-компонента
Использование календаря для ввода информации в поля дат
Мы описали свойства календаря. Теперь посмотрим, как можно использовать данный ActiveX-компонент для ввода информации в поля таблицы, содержащие даты. В качестве примера создадим форму для ввода информации о сотрудниках фирмы. Исходная таблица Manager содержит поле ddatebirth с информацией о дате рождения сотрудника. Информацию в это поле будем вводить с помощью программно формируемого ActiveX-компонента календарь.
Чтобы создать форму, выполните следующие действия:
#DEFINE C_CALCAPTION_LOC "Календарь"
oCalForm = Create('form')
oCalForm.NewObject("oleCalendar","_olecalendar", "_datetime")
WITH oCalForm.oleCalendar
.date_cclumn = "manager.ddatebirth"
.RefreshDisplay{)
.BackColor = THISFORM.BackColor
.Visible = .T.
ENDWITH
WITH OCalForm
.BorderStyle = 2
.MaxButton = .F.
.MinButton = .F.
.Height = oCalForm.oleCalendar.Height
.Width = oCalForm. oleCalendar.Width
.Caption = C_CALCAPTION_LOC
ENDWITH
oCalForm.Show(l)
THISFORM.Refresh
Создание формы завершено. Запустите ее на выполнение. Для ввода информации в поле дата рождения нажмите кнопку Календарь. На экране откроется календарь. Выберите необходимое число, месяц и год и закройте календарь. Указанная вами дата будет перенесена в поле день рождения.
Использование браузера объектов
В Visual FoxPro 7 появилось новое средство для просмотра списка классов, свойств, методов, событий и констант библиотек СОМ-объектов или ActiveX-компонентов — Object Browser (Браузер объектов). В окне браузера можно выполнять поиск заданного значения в пределах всей библиотеки.
Дня запуска браузера можно воспользоваться одним из следующих способов.
Для открытия библиотеки и просмотра ее структуры в окне браузера объектов предназначена кнопка Open Type Library (Открыть библиотеку) При нажатии этой кнопки открывается диалоговое окно Open (Открыть), которое содержит три вкладки следующего назначения:
При нажатии кнопки Find (Найти) в верхней части окна Object Browser (Браузер объектов) появляется поле Look for (Значение для поиска) и кнопка Go (Начать поиск), предназначенные для текстового поиска.