Примеры Библиотек Классов Visual FoxPro обеспечивают Инкапсуляцию требуемой функциональности в ваших разрабатываемых Приложениях. Примеры Решений иллюстрируют варианты использования Классов. Группы примеров Классов подробно описаны в следующих Разделах:

Библиотека Классов Командных Кнопок

Библиотека Buttons.vcx содержит следующие Классы Командных Кнопок.

Класс Краткое Описание

CmdOK

Командная кнопка Закрытия родительской Формы. Если форма является Элементом набора форм (FormSet), cmdOK закрывает весь набор форм.

CmdCancel

ПодКласс, порождаемый классом cmdOK, в котором свойство Caption имеет значение = "Cancel" (Отмена)

CmdHelp

Кнопка активации подсистемы Помощи (раздела помощи) в соответствие с идентификатором HelpContextID, который определен для Формы, в которую помещена данная Кнопка.

MailBtn

Кнопка обработки Почты, входит в состав Контейнера, вместе с Контролами: Microsoft MAPI MessageMicrosoft MAPI Session. Программный фрагмент события Click данной кнопки выполняет подключение к Электронной Почте, создает соответствующее Сообщение на основе Данных из Текущей Записи Таблицы.

Например, Класс кнопки MailBtn используется в форме: SENDMAIL.SCX, подкаталог: ...Samples\Solution\OLE.

VCR

Набор командных кнопок навигации по записям Таблицы Данных, обеспечивается выполнение стандартных навигационных команд: Next, Prior, Top, Bottom.

При использовании данного класса уточните значение свойства Skiptable, содержащего Алиас Таблицы Данных, для которой требуется навигация. Если Skiptable ="", указатель Записи перемещается для текущей рабочей области.

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

Библиотека Samples.vcx солдержит следующие Классы.

Класс Краткое Описание

CboFontName

Контрол типа "combo box", отображающий все текущие доступные системные Шрифты.

CboFontSize

Контрол типа "combo box",  отображающий вместе с доступными Шрифтами возможные Размеры данных Шрифтов. Для заполнения данного Контрола используется внутренний метод: FillList, ему передается имя Шрифта. Свойства nLargestFont и nSmallestFont ограничивают минимальный и максимальный размеры для отображаемых Шрифтов. Вы можете использовать данный Класс совместно с Контролом cboFontName (смотрите выше). В программном фрагменте события InteractiveChange объекта cboFontName вызывается указанный Метод FillList рассматриваемого контрола cboFontSize:

THISFORM.cboFontSize1.FillList(THIS.Value)

Например, данный класс (контрол) используется при построении класса tbrEditing, расположенного в данной Библиотеке.

Clock

Класс-Контейнер, отображающий текущую Дату и Время.

Компонета "Display a system clock" (Отобразить Системное Время) из Общих Решений VFP, использует рассматриваемый класс Clock.

Datachecker

Пользовательский Класс, обеспечивающий разрешение Конфликтов обработки данных в многопользовательской среде (или при многосеансной обработке данных). Программный фрагмент в событии Error контрола VCR из библиотекиn BUTTONS.vcx выполняет вызов соответствующий метод обработчика Конфликтов CheckConflicts в том случае, когда возникает конфликтная ситуация при сохранении измененных данных Буферизованных Таблиц, смотрите Код ниже:

nConflictStatus = ; THIS.DataChecker1.CheckConflicts()

В разделе "Run multiple instances of a form" (Активация нескольких Экземпляров одной Формы ) из Общих Решений VFP демонстрируется использование рассматриваемого класса обработки Конфликтов.

Дополнительную информацию смотрите в соответствующем Разделе, при описании, или в комментариях к указанному Примеру.

Distinct_values_combo

Контрол типа "combo box", который заполняется уникальными (неповторяющимися) значениями из соответствующего источника данных, определенного в свойстве: ControlSource. Например, если вы разместите данный класс в вашей Форме, уточните значение свойства ControlSource = "customer.country", то данный Контрол будет заполнен значениями "Национальностей" из указанной Таблицы, при этом значения будут неповторяющиеся.

FrmNoTitle

Контрол типа "Form", у которого отсутствует Заголовок. Если вам требуется отобразить некоторую информацию в обычном Окне (не в Форме), вы можете создать пользовательский Объект, порождаемый данным классом, а далее использовать Графические Методы обычной Формы.

Раздел "Display line animation on a form" (Подвижные Линии в Форме) из Общих Решений VFP демонстрирует использование указанного Класса-формы без Заголовка.

Lookup_combo

Контрол типа "combo box", который позволяет достаточно просто отображать значения одного из полей таблицы, например, Имя Компании, в том случае, когда свойство ControlSource "привязано" к другому Полю, например, используется идентификатор Компании (company id number). Данный Класс имеет дополнительные, пользовательские Свойства:

order_column: Номер столбца Сортировки Таблицы (опционально).

lookup_table: Имя алиаса Таблицы, из которой заполняется данный Контрол.

display_column: Имя отображаемого Столбца Таблицы.

return_column: Имя столбца, который связывается со свойством ControlSource.

MoverLists

Контейнер, содержащий Два Списка и Четыре Командные Кнопки. Пользователь может переносить выбранные Элементы Списков в другой Список при помощи соответствующих Кнопок или при помощи операций "перетаскивания" (dragging-and-dropping).

Вым необходимо контролировать, чтобы значение свойства в обоих Списках было RowSourceType = 0; элементы в Списки добавляются с помощью стандартного Метода AddItem.

Класс MoverLists содержит Три пользовательскихСвойства:

CanDropIcon: Имя графического файла Курсора мышки, который отображается при доступности выполнения операции "перетаскивания": "drag and drop".

NoDropIcon: Имя графического файла Курсора мышки, который отображается в том случае, когда указанная выше операция недоступна.

DragThreshold: Количество пикселов, которое определыяет начало указанной операции "перетаскивания".

Рассматриваемый класс иллюстрируется в разделе "Move items between list boxes" (Перенос Элементов между двумя Списками) в Общих Решениях  VFP.

Print_reports

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

o = CREATEOBJECT(print_reports, ; "myreport.frx")

QBF

Контейнер с Тремя Кнопками. Данный Класс используется совместно с классом VCR в формах, обрабатывающих Данные из Таблиц. Когда вы нажимаете кнопку <Enter QBF> (Определить Запрос по Форме, примеру [Query -By- Form]), значения в контролах очищаются. Вводимые новые значения будут определять условия Фильтрации Записей Таблицы; фильтр устанавливается кнопкой <Query> (Запрос).

Каждый из контролов-источников значений филтра должен иметь заданное свойство ControlSource, эти контролы должны иметь родительским Контейнером ту же самую Форму.

Компонента Примеров Решений VFP "Create a query by example form" (Создание Запроса-по-примеру) иллюстрирует использование рассматриываемого Класса

Resizable

Класс типа "Custom", который обеспечивает изменение размеров Контролов на Форме, а также их размещение относительно изменяемых размеров самой Формы. Включите данный класс в вашу форму и определите в программном Коде события Resize формы вызов специального метода данного класса: AdjustControls:

THIS.Resizable2.AdjustControls

Рассматриваемый класс Resizable содержит два пользовательских свойства, которые требуется уточнить:

RepositionList: Символьная строка, как список обрабатываемых (перемещаемых) базовых Классов.

ResizeList: Символьная строка, как список классов, у которых изменяются размеры.

Компонента "Resize and reposition controls at run time" (Перемещение и Масштабирование Контролов при выполнении Приложения) иллюстрирует использование данного Класса.

RTFcontrols

Класс типа "Container", содержащий описанные выше контролы:  cboFontName, cboFontSize, а также дополнительные кнопки: Bold, ItalicForeColor. Подконтрол cboFontSize обновляет (или учитывает) изменения в указанных контролах, смотрите код события: InteractiveChange для cboFontName, 

Компонента "Use the RichText control" (Использование внешнего Контрола типа RichText)  из Примеров Решений VFP иллюстрирует использование данного контейнера.

SoundPlayer

Класс обеспечивает открытие и активацию невизуальных (звуковых) мультимедийных файлов, типа .WAV (Audio). Дополнительную информацию по использованию данного класса смотрите в разделе Sample Multimedia Classes (Примеры обработки Мультимедийных Файлов), смотрите Далее....

StopWatch

Контейнерный класс, содержащий базовые классы Timer & Label, позволяющие эмулировать работу Секундомера.

Класс StopWatch имеет Три пользовательских Метода, которые имеют следующее назначение:

Start: Запуск Секундомера;

Stop: Остановка Секундомера;

Reset: Очистка текущего значения (Табло Секундомера) (0:00)

Компонента "Display a stop watch" (Отображения Секундомера)иллюстрирует использование данного класса. 

TbrEditing

Класс Инструментария для команд Редактирования; tbrEditing содержит следующие компоненты:

nAppliesTo Property: возможные значения: 1, 2, или 3.

  1. Команды действуют только на текущий Контрол данной Формы.

  2. Команды действуют только на Контролы типа TextBox или EditBox.

  3. Команды действуют на все Контролы данной Формы.

Refresh: Принимает ссылку на объект и устанавливает все изменяемые свойства объекта. Вызов метода Refresh рекомендуется выполнять в программном Коде события GotFocus каждого Контрола.

Компонента "Change font attributes" (Изменение характеристик и свойств Шрифта) иллюстрирует использование данного Класса.

VideoFrame

Данный класс может быть использован для Активации и просмотра мультимедийных файлов, таких как "Windows Video". Подробнее смотрите в разделе "Sample Multimedia Classes" (Примеры Мультимедийных классов), смотрите ниже....

Макеты мультимедийных Классов

Два представленных Класса (SoundPlayer и VideoFrame) из библиотеки классов ...Samples\Classes\Samples.vcx позволяют вам вцыполнять специальные команды MCI (Multimedia Command Interface) для обработки и активации Мультимедийных файлов.

Техническая документация по использованию команд MCI может быть найдена по фильтру "Multimedia Commands"  на следующем разделе MSDN  (http://msdn.microsoft.com/library).

Класс Звукового Плейера (Sound Player Class)

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

Свойство Краткое Описание

AutoOpen

Определяет, что звуковой файл Открывается автоматически после создания рабочего Экземпляра данного Класса. Значение по-умолчанию: True (.T.).

AutoPlay

Определяет, что после открытия Звукового файла, он автоматически Активируется (проигрывается). Значение по-умолчанию: True (.T.).

AutoRepeat

Определяет, что по-завершении проигрывания звукового файла требуется повторить его Активацию. Значение по-умолчанию: False (.F.).

ControlSource

Определяет Имя Поля (столбца) некоторой Таблицы, который содержит ссылку на Звуковой файл. Если данное значение не указано (пустое), то предполагается значение свойства SoundFile, как имя звукового файла.

MCIAlias

Определяет имя Алиаса Таблицы, используемой при выполнении команд MCI. Если значение не задано (пустое), то предполагается в качестве алиаса таблицы значение свойства Name рассматриваемого Класса. Обычно, данное значение можно не указывать, однако при использовании текущего звукового файла дважды  - требуется однозначно определять имя рабочего Алиаса для каждого Экземпляра Класса. В противном случае возможны конфликты, или непредсказуемые Ошибки. 

SoundFile

Содержит или Определяет полное имя звукового файла, например: "C:\WINDOWS\CHIMES.WAV".

Метод Краткое Описание

OpenSound

Открывает Звуковой Файл.

PlaySound

Выполняет Активацию Звукового файла (проигрывание). Перед выполнением данного метода звуковой файл должен быть открыт в методе: OpenSound.

PauseSound

Остановка проигрывания звукового файла. Продолжение может быть выполнено методом PlaySound.

SetPosition

Позволяет переместить текущий указатель Позиции звукового файла. Данный метод может быть выполнен только после успешного Открытия указанного Звукового файла. Доустимые значения: "Start", "End", или значение N (в миллисекундах), определяющее позицию Звукового файла.

CloseSound

Закрывает Звуковой файл и освобождает все связанные с ним Ресурсы системы.

Класс ВидеоЭкрана (VideoFrame Class)

Класс VideoFrame может быть использован вами для активации (просмотра) мультимедийного файла , такого как стандартное Видео ОС Windows. После успешного открытия видео-файла вы получаете доступ к дополнительным внутренним функциям Инструментария MCI.

Например, использование данного класса можно посмотреть в библиотеке Video.scx, размещенную в подкаталоге: ...Samples\Solution\Forms.

Свойства Краткое Описание

AutoOpen

Определяет, что видео-файл автоматически открывается ппосле создания рабочего экземпляра класса. Значение по-умолчанию: True (.T.).

AutoPlay

Определяет, что после успешного открытия видео-файла, он Активируется (проигрывается). Значение по-умолчанию: True (.T.).

AutoRepeat

Определяет, выполнять ли повтор Просмотра данного файла после завершения текущего Цикла просмотра. Для повторения (непрерывного просмотра видео-файла) требуется установит значение = .T. . Значение по-умолчанию: False (.F.).

ControlSource

Определяет имя Поля (столбца), содержащего ссылку на требуемый видео-файл. Если значение не задано (пустое), то предполагается использование значение свойства VideoFile (смотрите ниже...).

MCIalias

Определяет имя Алиаса Таблицы, которая используется в инструментарии MCI. Если значение не указано (пустое), то для данного Алиаса используется значение свойства Name рассматриваемого класса. Обычно, данное свойство можно не определять, Однако при неоднократном использовании видео-файла (в нескольких экземплярах данного класса) для каждого из них необходимо указать кникальный идентификатор Алиаса.

VideoFile

Определяет или Содержит полное имя видео-файла, например: "C:\VFP\SAMPLES\SOLUTION\FORMS\FOX.AVI".

Метод Краткое Описание

CloseVideo

Закрывает текущий видео-файл и освобождает все связанные с ним Ресурсы.

DoMCI

Может быть использован для выполнения других (вспомогательных) команд Инструментария MCI. Стандартно применяется для выполнения основных команд MCI.

OpenVideo

Открывает заданный видео-файл и отображает начальный кадр.

PauseVideo

Приостанавливает просмотр видео-файла. Для возобновления может быть использован метод: PlayVideo.

PlayVideo

Стартует Просмотр файла-видео с текущей позиции. Файл должен быть предваритьельно открыт с помощью метода OpenVideo.

SetPosition

Позволяет вам установить текущую позицию указателя видео-файла. Данный метод может быть выполнен только после успешного открытия файла. Допустимые значения для параметра позиции: "Start", "End", или позиция N (в миллисекундах) относительно начала видео-файла.

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

Библиотека Utility.vcx содержит следующие Классы.

Класс Краткое Описание

Arraylib

Класс типа "Custom", содержащий методы Вставки, Удаления элементов в массивы; имеются также возможности Сканирования Массивов по Столбцам.

Execsp

Класс типа "Custom", значительно облегчающий выполнение Хранимых Процедур (SP-SQL) с использованием Технологии Сквозных Запросов (SQL pass through) для Удаленных Источников Данных (Серверов).

Filelib

Класс типа "Custom",  содержащий Расширенные методы обработки Специализированных символьных строк (имен файлов и подкаталогов), например, исключение или замена расширения имени файла, исключение или добавление к имени подкаталога  обратной косой черты (backslash), и так далее.

Menulib

Контейнерный класс, содержащий методы создания Контекстных Меню (shortcut menu) из исходных Массивов Данных.

В компоненте "Create dynamic shortcut menus"  (Создание динамических Контекстных Меню) из Раздела Примеры Решений VFP иллюстрируется использование рассматриваемого Класса.

Программы Обработки Реестра ОС Windows

Модуль Registry.prg содержит описание следующих Классов.

Класс Краткое Описание

FileReg

Является Подклассом основного класса Registry, который обеспечивает Чтение специфической информации о конкретном Приложении, на основании расширения файла Приложения и местом расположения указанного Приложения.

FoxReg

Является подклассом основного класса Registry, который обеспечивает Чтение-Запись специальных параметров системы Visual FoxPro в реестре ОС Windows.

ODBCReg

Является подклассом основного класса Registry, который обеспечивает Чтение информации о внешних или внутренних  Источниках Данных (ODBC data source), а также специальную информацию о соответствующих Драйверах.

OldINIReg

Является подклассом основного класса Registry, который обеспечивает Чтение-Запись пользовательской информации в файлах .INI

Registry

Основной класс для работы с Реестром ОС Windows, базирующийся на эффективном использовании инструментария Windows API.

Для знакомства с примерами по работе с Реестром запустите приложение SOLUTION.app из папки примеров:  ..\Samples\Solution\.

См. также