Delphi 5. Обзор компонентов 1

Delphi 5. Обзор компонентов А можно сделать такие же кнопки, только немножко другие?..
Из разговора заказчика с программистом.

Разработчик: Майк Поркерт (Maik Porkert).
Версия: Delphi 5,6.
Количество компонент: 25.
Назначение: интерфейс.
Доступность: свободно.

Вообще, для продуктов фирмы Borland сейчас существует огромное множество компонент. Вопреки бытующему мнению, что весь без исключения западный мир пишет на Visual C++, именно западным программистам принадлежит авторство подавляющего большинства новых или переписанных компонент для Delphi и C++ Builder. Я не буду оригинален, если скажу, что стандартные компоненты среды разработки всем уже порядком поднадоели. И программисты, и заказчики давно не ограничиваются стандартными возможностями визуализации и функционирования программного обеспечения. Да и что говорить, Microsoft, Adobe, Symantec постоянно обновляют линейки своих продуктов, не забывая при этом добавлять новые "навороты" в интерфейс программ. Сейчас уже считается нормальным, что заказчик базы данных хочет "на лету" сортировать полученную информацию, и не перебиранием нескольких полей в открывшемся диалоге "выберите порядок сортировки", а желательно при нажатии на заголовок столбца таблицы. Так же и человек, работающий с текстом, хочет видеть в строке статуса, например, состояние документа, количество строк или символов, маркер сохранения документа. И это не кажется никому странным. Во-первых, заказчик всегда прав. Во-вторых, чем лучше пользователь будет знаком с интерфейсом, чем лучше и быстрее он будет работать с программой, тем меньше потом будет головной боли у авторов программы.

Но и это когда-нибудь надоедает. Приходит время, и хочется чего-то нового, чего-то такого, чтобы программа твоя была не похожа на остальные и в то же время сохраняла "знакомость" и легкость восприятия интерфейса. Вот это и подвигло меня в свое время заняться поиском разнообразных компонент, так как задачи, которые иногда приходится решать, очень различны — от баз данных до консольных приложений. Тут может возникнуть резонный вопрос: а зачем что-то искать, когда можно написать самому? Причем именно так, как тебе надо, благо примеров море. Но чтобы написать свои компоненты, нужны время, желание и знания. И если второго и третьего может быть и в достатке, то вот за первое я не ручаюсь. Время, как известно, не ждет, заказчик торопит, начальник искоса глядит на глупые иконки из стандартной поставки Delphi... Но теперь это в прошлом.
Итак, сегодня я расскажу о наборе компонент, который позволит вам создавать интерфейс своей программы так же легко и просто, как и используя стандартные компоненты. Причем вид вашего приложения будет довольно оригинален. Думаю, достаточно оригинален для того, чтобы ваша программа заинтересовала пользователя. А ведь это особенно важно, если вы пишете программу не на заказ, а просто так, чтобы выложить ее потом в сети Интернет или просто поделиться с товарищами и тем самым проявить себя.



Теперь же перейдем конкретно к разбору набора компонент FlatStyle Components. Как понятно из названия, это набор стандартных элементов управления, только с приятным "плоским" видом и хорошим набором настроек. Написанный командой под руководством Майка Поркерта (Maik Porkert) и содержащий в себе 25 компонент для создания своего весьма оригинального интерфейса, данный пакет претендует на место одного из лучших для создания альтернативного стандартному интерфейсов. После регистрации компонент в среде разработки появляется еще одна закладка на палитре компонентов — FlatStyle (а вы чего ждали-то?). И практически все, что вам нужно для создания визуальных элементов управления и ввода, есть именно на этой закладке. Видимо, авторы учли свой опыт разработки приложений, поэтому предоставленный набор должен полностью (по крайней мере, если у вас стандартное приложение, не выходящее за рамки SOHO (Small Office, Home Office) и не требующее специальной обработки элементов управления) удовлетворить требования программиста. Начиная от стандартных компонент TFlatEdit, TFlatComboBox, TFlatCheckBox, TFlatMemo до таких интересных переработок, как TFlatScrollBar (полоса прокрутки) и TFlatSplitter (бегунок для изменения замеров частей окна). Эти компоненты нельзя назвать ключевыми, однако они могут понадобиться, особенно плоский бегунок, так как зачастую в интерфейсе программы необходимо дать возможность пользователю изменять размер соседних оконных элементов. Прекрасным примером будет обыкновенный проводник из Windows — там можно по своему усмотрению изменять размер главного окна и окна структуры каталогов. Полоса прокрутки может запросто заменить аналог из стандартной поставки для придания вида полной "плоской" картины интерфейсу. Назначение TFlatScrollBar также вспомогательное. Если учесть, что в пакете нет аналога TRichEdit, а только переделанный TFlatMemo, и вам нужен простой текстовый контейнер со скроллингом, нет ничего лучше, чем использование TFlatScrollBar — это позволит вам достичь своей цели и сохранить целостность интерфейса.

Конечно, замена стандартной полосы прокрутки на TFlatScrollBar добавит вам немного хлопот, но это того стоит, поверьте. Внешний вид программы от этого только выиграет. Да и трехмерного бегунка в TFlatMemo при остальных одинаковых элементах управления будет смотреться не очень хорошо, как и "канава" стандартного TSplitter'a, разделяющего окна на форме.
Кроме того, есть несколько компонентов, расширяющих возможности этой библиотеки. Например, клон стандартного аниматора — TFlatAnimation. Задайте в свойстве файл *.bmp, который разбивается на кадры так же, как и в стандартном компоненте (то есть считается, что в файле слева направо выстроены кадры анимации). Вы можете управлять показом через свойства loop (повторение), interval (задержка между показом кадров), frame и framewidth — определяют начальный кадр и ширину одного кадра в пикселях соответственно. Также есть свойства reverse — обратный показ и transparent — прозрачность с возможностью определения базового цвета.
TFlatSound интересен тем, что можно отождествлять действие пользователя со звуком в приложении. Так, если вы выбираете в свойстве event некоторый тип звука из доступных (нажатие на кнопку, нажатие на меню, фокусирование кнопки и т.д.), а потом в некотором обработчике события пишете FlatSound.Play, — создается впечатление присутствия некой звуковой схемы в операционной системе. Вы можете прямо при исполнении программы изменять значение event при помощи процедуры PlayThis (ThisEvent: TSoundEvent). Значения, принимаемые этой процедурой, перечислены в свойстве event в инспекторе объектов.

TFlatSpinEditFloat — еще одна альтернатива. Дает возможность накручивать дробные числа с выбором шага. По умолчанию стоит 0,5. Есть форматирование чисел с плавающей точкой, установка верхнего и нижнего пределов накрутки.
На TFlatTitleBar надо заострить внимание. Этот компонент интересен тем, что позволяет заменить стандартный заголовок окна на некое его подобие, сохраняющее, однако, всю необходимую функциональность. То есть форму по-прежнему можно таскать за этот TTitleBar как угодно — никаких бликов, размножений форм при быстром перетаскивании. На него прекрасно ложаться всевозможные BitButtons и Labels, что позволяет практически неограниченно моделировать свои заголовки окон по вашему усмотрению. Можно изменить и текст заголовка окна (он, кстати, расположен по центру), и цвет самого заголовка. Есть только два недостатка. Чтобы вашему приложению стать совершенно "плоским", придется установить свойство BorderStyle в bsNone — иначе родной заголовок окна не уберется и у вас получится форма с двумя заголовками, что портит весь внешний вид. И второе — этот компонент не положишь ни на какой другой, кроме наследника TCustomForm, — он просто выдаст сообщение об ошибке. Это значит, например, на TPanel вы TFlatTitleBar не положите. Хотя это не сильно ограничивает его функциональность.

Теперь о возможностях настроек компонентов. Во-первых, после установки компонентов появляется приличное количество новых цветов — по три на каждый стандартный цвет. Например, для синего теперь существует темно-синий, сам синий и светло-синий цвета. Кроме того, в отличие от RxLib (помните ошибку версии 2.75, когда невозможно было выбрать кремовый и некоторые другие цвета из палитры?), тут добавленные цвета доступны и в других, стандартных компонентах. Потом, конечно, этот баг разработчики RxLib исправили... Однако намного лучше, когда все работает сразу. Богатство настройки цветов вообще поражает. Выбор активного, неактивного цветов для полей ввода. Выбор цвета для состояния кнопок: нажатая, свободная, при наведении мыши, недоступная; настройка цветов для определения границы кнопок — при наведении мыши появляются границы — светлая (подсветка) и темная (тень). Возможность настройки прозрачности — три режима: "всегда", "при наведении", "никогда". Также можно выбрать цвет не только границы элемента управления, но и цвет, которым будет выделяться строка, например, в TFlatListBox. Да и вообще — подобрана цветовая палитра очень хорошо, оттенки цвета радуют глаз и приятно смотрятся на форме. Если бы была возможность показать вам все это в цвете... Так что придется вам включить свое воображение, потому как в черно-белом варианте смотрится не очень.

Как видно на рисунке (рис. 2), компоненты в своем нормальном состоянии имеют цвет формы (или любой другой, который укажете), а при наведении мыши становятся "активными" — меняют цвет на тот, который был выбран для этого компонента.
Почти у каждого компонента есть свойство Transparent — прозрачность. Использование этого свойства вкупе с возможностью устанавливать цвет компонента в неактивном состоянии и при наведении мыши позволяет добиваться интересных результатов. Попробуйте поэкспериментировать — наверняка что-нибудь да понравится.

Итог
Как результат этой статьи, остается только сказать, что данный набор компонент представляет довольно интересный вариант оформления своего приложения. Конечно, интерфейс, построенный таким образом, будет выглядеть немного необычно, но это уже дело вкуса. Жаль только, что содержит он всего 25 компонент. Неплохо было бы создать и аналоги TTreeView, TMainMenu, TListView и TGrid. Остается надеяться, что, так как работа над пакетом продолжается, вскоре мы увидим новую версию, где появится много нового.
В следующий же раз будут рассмотрены сразу несколько компонентов различных направлений — как для интерфейса, так и не визуальных — в частности, для работы с базами данных.

Денис Мигачев


(c) компьютерная газета


Компьютерная газета. Статья была опубликована в номере 47 за 2001 год в рубрике программирование :: delphi

©1997-2024 Компьютерная газета