|
Декабрь 2010
Сотворение совершенного Grid
Дорон Фарбер (Doron Farber)
Объединим элементы управления — таблицу grid, флажок checkbox и текстовое
поле textbox, которое позволяет осуществить последовательный поиск, — чтобы
создать по-настоящему полезное инструментальное средство.
В проекте, унаследованном мной от другого разработчика, мне потребовался
способ, который позволил бы предоставить пользователю возможность искать
записи в другой таблице или источнике данных. Элемент управления combobox в
качестве решения этой задачи не годился, потому что количество записей, из
которых надо было выбирать, составляло от 30 000 до 40 000. К тому же, я
хотел обеспечить пользователю возможность последовательного поиска. Что мне
требовалось, так это элемент управления grid с функцией поиска, который
можно было бы «бросить» в модальную форму. В этом проекте насчитывалось 60
форм, нуждавшихся в такой возможности, как поиск, поэтому требовалось найти
общее решение.
Для удовлетворения указанных потребностей на свет явился класс cntGrid,
который я использовал в решении, названном мной «Ultimate Grid» (совершенный
Grid).
VFPX: редактор PEM Editor
Рик Шуммер (Rick Schummer)
Редактор PEM Editor — это один из наиболее быстро развивающихся проектов на
сайте VFPX, и потому он принадлежит к инструментам, о которых труднее всего
писать в этой серии статей «с продолжением». Тем не менее, в этом месяце Рик
пытается познакомить вас со всеми имеющимися наработками для редактора PEM
Editor, показать кое-какие из его наиболее выдающихся возможностей, которые
должны содействовать повышению продуктивности вашего труда, а также раскрыть
тайну некоторой новой функциональности, разрабатываемой для четвертого
релиза этого мощного инструмента.
Для некоторых из вас редактор PEM Editor, возможно, окажется новостью, но на
самом деле он приближается уже к шестому выпуску. Его диалоговые окна
опционально замещают встроенные диалоговые VFP-окна Edit Property/Method,
предназначенные для редактирования свойств и методов, и, если вам так
хочется, встроенные VFP-окна New Property (новое свойство) и New Method
(новый метод). Вы могли бы спросить: «Вот те на, Рик, ведь ты уже
рассказывал раньше о новых диалоговых окнах, которые заменяют встроенные?»
Да, я рассматривал первое поколение редактора PEM Editor, но тогда он
назывался «Edit Property/Method dialog» и изначально был написан Марсией
Акинз (Marcia Akins). Марсиа заложила фундамент для этого нового
инструмента. В 2008 году управление проектом и основную разработку взял на
себя Джим Нельсон (Jim Nelson), вдохновившийся на то, чтобы поднять эту
разработку на новый уровень.
Создание интерфейсов в стиле проводника
Explorer средствами Visual FoxPro. Часть 1
Дуг Хенниг (Doug Hennig)
Пользовательские интерфейсы в стиле проводника Explorer входят в число
наиболее популярных интерфейсов, используемых для современных приложений.
Однако, работа с необходимыми для реализации такого интерфейса элементами
управления и их объединение в одном решении может оказаться трудной задачей.
В первой части этой серии из нескольких статей представлен набор классов и
методик, позволяющих быстро справиться с разработкой интерфейсов в стиле
проводника для ваших приложений. Интерфейс в стиле проводника обеспечивает
отображение в левой части экрана списка элементов, а в правой — свойств
выбранного элемента. Такой интерфейсный стиль давно уже пользуется
популярностью и был использован во многих приложениях, вроде Windows
Explorer и Outlook. Этот интерфейс не обязательно окажется идеальным
вариантом для всех типов приложений, но он успешно работает в том случае,
если у вас имеется иерархическая структура данных, такая, как хранящиеся в
папках файлы, сделанные покупателями заказы или список контактных лиц в
разных организациях.
У типичного интерфейса в стиле проводника есть несколько стандартных
компонентов:
-
Список Listbox или таблица Grid,
элемент управления TreeView — это наилучший вариант, поскольку он по
природе своей обеспечивает иерархическое представление данных.
-
Набор элементов управления для
демонстрации атрибутов (properties) выбранного предмета (item). Один из
способов, которыми я пользовался для решения этой задачи раньше,
предусматривал создание по одному контейнерному классу с необходимыми
элементами управления для каждого типа отображаемых на экране предметов;
далее экземпляры объектов этих контейнеров «складывались», один на
другой, в правой части формы, и размещенный в методе Refresh этих
контейнеров программный код использовался для того, чтобы скрыть (hide)
или показать (show) определенный контейнер в зависимости от того, какого
типа предмет был выбран в данный момент. Хотя на этапе выполнения все
это выглядит прекрасно, на стадии проектирования такое решение весьма
неприятно. Сейчас я предпочитаю использовать страничный блок pageframe,
свойство которого Tabs имеет значение .F., в результате чего этот блок
играет роль простого контейнера, а на каждой его вкладке размещен
экземпляр объекта одного из контейнерных классов. Далее все сводится к
следующему: если в «дереве» TreeView выбран какой-то предмет, свойству
ActivePage страничного блока pageframe присваивается соответствующее
значение, чтобы на экране был показан нужный контейнер.
-
Элемент управления splitter,
разделяющий список предметов и панель атрибутов. С помощью этого
разделителя, перетаскивая его влево или вправо, пользователь может
менять относительные размеры области списка и панели атрибутов.
-
Элемент управления «status bar». Как
правило, в этом элементе управления выдается информация о выбранном
предмете, например, его наименование, а также сведения о состоянии
формы, например, «Processing...» («Обработка…»), если форма выполняет
какое-то действие.
Давайте разберемся, как создать интерфейс
в стиле проводника. |