3 Mb

Март 2012

 


ООП + Метаданные = Универсальность

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

Тамар Е. Гранор, д-р философии (Tamar E. Granor, Ph.D.)

За прошедшие несколько лет мне встретилось множество ситуаций, в которых программный код, управляемый данными, облегчает сопровождение приложения. Но иногда само по себе управление данными способно привести к появлению повторяющегося программного кода и затруднить сопровождение. В таких случаях сочетание передовых приемов объектно-ориентированного программирования с управлением данными может обеспечить более удачное решение.
Приложение, над которым я работаю, должно получать принимать номера медицинской страховки (health number), используемые в Канаде. В каждой провинции Канады каждому человеку назначается личный номер медицинской страховки (personal health number, PHN), чтобы обеспечить ему доступ к системе медицинского обслуживания в этой провинции. (Упомянутое приложение не должно получать номера PHN из Квебека (Quebec), поэтому я не знаю, применима ли нижеследующая информация для этой провинции.)
Приложение должно подтвердить достоверность полученных номеров PHN. Хотя нет никакого способа, который позволил бы гарантировать правильность конкретного номера PHN для данного лица, исключая сверку с документами провинции, существуют два довольно простых теста.
Первый тест – убедиться в том, что номер PHN содержит правильное количество цифр. «Правильное» количество варьируется от провинции к провинции, и с этой работой справится простой просмотр.
Кроме того, в каждой провинции для номера PHN используется контрольная цифра. Контрольная цифра – это дополнительная цифра, полученная из других цифр номера, которая подтверждает правильность формата данного номера PHN.
Используя реализованные в VFP возможности для работы со строками, вычислить контрольную цифру не сложно. Однако, в разных провинциях действуют разные правила для вычисления контрольной цифры. Кроме того, эти правила со временем меняются, и целесообразно исходить из того, что они снова будут изменены.
Поэтому я нашла общее решение. В конечном итоге у меня появился класс, управляемый данными. Хотя вам, возможно, не надо вычислять контрольные цифры для номеров медицинской страховки в Канаде, основные идеи имеют более широкое применение.

Оплата по принципу «заплати другому»
Тони Фельтман (Toni Feltman)

Много лет фирма DBI Technologies, www.dbi-tech.com, поставляла на рынок элементы управления ActiveX, которые можно было использовать в разработках на разных языках программирования, и в отличие от множества других независимых поставщиков у этой фирмы были примеры, написанные на языке программирования FoxPro. Сейчас поддержка FoxPro-сообщества со стороны фирмы DBI стала еще лучше. Фирма согласилась бесплатно предоставить 8 из своих активных элементов управления пользователям версии VFP 9 SP2 в виде пакета, который называется «Sedna Components».
В этой статье я собираюсь рассказать о трех элементах управления ActiveX из числа вошедших в пакет «Sedna Components». Оставшиеся элементы управления из этого набора я рассмотрю в последующих статьях. Настоящая статья охватывает следующие три элемента управления:
• ctTray – это элемент управления, который позволяет разработчикам получить доступ к панели задач (System Tray) ОС Windows без обращения к интерфейсу Windows API. В панель задач добавляются какие-то значки (icons), и код приложения, созданного средствами Visual FoxPro, может реагировать на действия пользователя с такими значками.
• ctDropMenu – этот элемент управления предназначен для создания открывающегося (drop-down) меню, в элементах которого можно использовать изображения и текст с подтекстом.
• ctToolBar – этот элемент управления используется для создания меню и инструментальных панелей, которые можно размещать в формах. У созданных с помощью этого элемента управления инструментальных панелей и меню есть свойства, которые позволяют им выглядеть и функционировать в стиле операционной системы Windows XP.

Использование VFP Entity Framework Provider со свободными таблицами
Том Бразерс (Tom Brothers)

Введение
К моему удивлению, похоже, что большинство программистов, заинтересованных в использовании VFP Entity Framework Provider (http://vfpefprovider.codeplex.com/), обращаются к свободным таблицам. По счастью при разработке провайдера я особо озаботился его работой со свободными талицами. В этой статье я проведу вас по шагам использования провайдера со свободными таблицами.
(Я предполагаю, что у вас уже установлен VFP Entity Framework Provider, по ссылке выше или с диска с журналом)

VFPX: zProc IntelliSense
Рик Шуммер (Rick Schummer)

IntelliSense в составе Visual FoxPro открыто для расширения и это доказывается многими разработчиками, которые создают код, позволяющий повысить продуктивность программирования. В iэтой статье Рик предлагает рассмотреть код проекта “zProc, zVFP, and zCOM IntelliSense Scripts”, возглавляемого Джиджо Паппачаном (Jijo Pappachan). Проект привязан к библиотекам:
zProc: отображает список пользовательских и объявленных фукций в составе DLL с выводом списка параметров в форме тексте подсказке(tooltip).
zVFP: отображает список встроенных функций VFP с выводм списка параметров в подсказке.
zCOM: отображает список зарегистрированных COM объектов.

Выравнивание текста в отчетах с помощью GDIPlusX

Среди прочего, я покажу в этой статье, как мы можем использовать новый метод drawstringjustified библиотеки gdiplusx для выравнивания текста в отчете.
Нужно иметь ввиду, что vfp9 предлагает столько замечательных возможностей, что я не мог оставить их без внимания. Я решил создать дочерний класс на базе слушателя отчетов (report listener), который будет трансформировать текст из отчетов для выполнения выравнивания по правой и левой кромкам. Моя идея заключалась в том, что пользователь будет использовать тег "<fj>" в начале строки в поле текстового ввода, и мой класс будет отрисовывать текст с использованием метода drawstringjustified из gdiplusx.

 


Возврат на основную страницу

К архивам

© Edel Ltd. Все права защищены. 2012 г.

Hosted by uCoz