Эта закладка в Jedi Visual Control Library(JVCL), содержит компоненты, позволяющие разработчику без усилий продемонстрировать отстутствие чувства вкуса и в течение пары минут создать приложение с раздражающим дизайном. =) Я говорю о компонентах для создания “анимации” в заголовках форм и наложения фоновой картинки на саму форму. Впрочем, пара полезных компонентов там тоже есть.
JvAppEvents: TJvAppEvents
Компонент предназначен для создания обработчиков событий TApplication и задания значения некоторых свойств TApplication в режиме дизайна. Фактически представляет собой обёртку над классом TApplication. Компонент пришёл в JVCL из библиотеки RxLib.
JvFormMagnet: TJvFormMagnet
Компонент делающий форму “магнитной”. В зависимости от настроек, форма с магнитом начинает прилипать к краям экрана, главной форме, а также может приклеить к себе другую форму, так, что перемещая мышкой по экрану одну форму, вторая будет перемещаться вместе с первой.
JvFormWallpaper: TJvFormWallpaper
Компонент позволяющий указать любую картинку в качестве фона для формы.
Пример работы TJvFormWallpaper
Hint: мерцание при изменении размеров формы прекращается если у формы включить свойство DoubleBuffered.
JvTransparentForm: TJvTransparentForm
Этот компонент делает форму прозрачной. Целиком, или по маске. Прозрачными также становятся все компоненты, помещённые на форму. Ниже на картинке можно посмотреть результат работы этого компонента. Имхо, единственное место, где такой приём стоит использовать – это создание окна-заставки(splash form) необычной формы.
“Анимация форм”
JvAppAnimatedIcon: TJvAppAnimatedIcon
Этот компонент меняет иконку запущенной программы по таймеру, создающий эффект анимации. Кадры для анимации берутся из подключенного ImageList. Есть возможность установить задержку для смены кадров.
пример работы TJvAppAnimatedIcon, TJvFormAnimatedIcon в заголовке формы.
TJvAppAnimatedIcon, TJvFormAnimatedIcon и TJvAnimTitle в панели задач (taskbar)
JvFormAnimatedIcon: TJvFormAnimatedIcon
Компонент, аналогичный TJvAppAnimatedIcon, но меняющий иконку только для отдельной формы.
JvAnimTitle: TJvAnimTitle
Ещё один вредный бесполезный компонент для создания “анимации”. Этот компонент “анимирует” заголовок(Caption) формы. Пример работы можно посмотреть на рисунке выше. Тип анимации не настраивается.
JvFormAnimation: TJvFormAnimation
Компонент, позволяющий прятать/показывать форму с эффектом. Доступны следующие виды “анимации”. Эффект, реализуемый этим компонентом глючит в сочетании с системными эффектами windows. Поэтому я не советую использовать TJvFormAnimation.
Встраиваемые формы
Для того, чтобы показать одну форму внутри другой я обычно пользуюсь таким кодом:
procedure TForm1.Button2Click(Sender: TObject); var tmpForm:TForm1; begin tmpForm:=TForm1.Create(self); tmpForm.Parent:=Panel1; // Panel1 – выступает контейнером для tmpForm tmpForm.BorderStyle:=bsNone; tmpForm.Align:=alClient; tmpForm.Show; end;
Однако JVCL предлагает отдельные компоненты, позволяющие сделать примерно то же самое. Эти компоненты: TJvEmbeddedFormLink, TJvEmbeddedFormPanel и TJvEmbeddedInstanceFormPanel. Опишу их, только для того чтобы, пост был полным. Использовать я их не стал бы, ибо встроенные в JVCL формы у меня ужасно мерцают и иногда не прорисовываются(Delphi 2009 + Windows Vista).
JvEmbeddedFormLink: TJvEmbeddedFormLink
Компонент, который делает форму встраиваемой. Применяется в связке с компонентами TJvEmbeddedFormPanel и TJvEmbeddedInstanceFormPanel. Т.е. форму, на которой лежит TJvEmbeddedFormLink можно будет показать внутри TJvEmbeddedFormPanel или TJvEmbeddedInstanceFormPanel. Фактически, компонент ничего не делает, а просто используется как способ сказать компонентам TJvEmbeddedFormPanel и TJvEmbeddedInstanceFormPanel, какую форму им показывать.
JvEmbeddedFormPanel: TJvEmbeddedFormPanel
Этот компонент типа панели, в которую можно встроить другую форму(TForm) с TJvEmbeddedFormLink. Что-то типа фреймов(Tframe), но без визуального наследованию-редактирования и с формами(TForm). Чтобы указать, какую форму отображать в этой панели, необходимо присвоить свойству LinkForm соответствующий компонент TJvEmbeddedFormLink с другой формы. Чтобы этот компонент работал, на момент создания формы-хозяйки(с TJvEmbeddedFormPanel), встраиваемая форма(форма с TJvEmbeddedFormLink) уже должна быть создана! Т.е. TJvEmbeddedFormPanel показывает конкретный экземпляр встроенной формы.
JvEmbeddedInstanceFormPanel: TJvEmbeddedInstanceFormPanel
Этот компонент делает то же, что и TJvEmbeddedFormPanel, но с тем отличием, что для каждой TJvEmbeddedInstanceFormPanel создаётся новый экземпляр формы. Т.е. фактически TJvEmbeddedInstanceFormPanel запрашивает у TJvEmbeddedFormLink имя класса формы, которую нужно встроить и создаёт новый экземпляр.
Альтернативно функционирующие компоненты =)
JvGradientCaption: TJvGradientCaption
А этот компонент вероятно должен позволять рисовать градиентный заголовок(Caption) формы и выводить текст заголовка разными шрифтами, но… При включенных темах в Windows Vista, подозреваю, что и в XP, он не работает. И это хорошо, так как, это компонент от которого на мой взгляд вреда больше, чем пользы.
JvApplicationHotKey: TJvApplicationHotKey
По идее этот компонент должен уметь регистрировать глобальную горячую клавишу в Windows и вызывать обработчик события, каждый раз когда нажата эта клавиша. Но у меня он не заработал.
JvFormAutoSize: TJvFormAutoSize
Компонент, пытающийся автоматически масштабировать положение и размеры контролов, при изменении размера родительской формы, без использования свойств компонентов align и anchors. Если изменить anchors – то контролы начинают в прямом смысле путешествовать по форме. Компонент скорее не работает, чем работает. Впрочем, чудес и не бывает.
Aleksey Timohin, не обращай внимания на всяких козлов!
ОтветитьУдалитьпиши исче, мне например помогло, куча компонентов а непонятно что и для чего)
Вопрос, анимацию для заголовка можно в трее отображать этим компонентом?
а то если самому сделать через таймер, то когда кончаються картинки идет 1 пустой кадр.
Спасибо, Анонимный.
ОтветитьУдалитьДля трея там есть отдельный компонент: TjvTrayIcon. И анимацию он отображает нормально. Пустой кадр скорее всего из-за пустой картинки в ImageList.
TJvFormAutoSize у меня заглючил, а вот TJvApplicationHotKey сработал нормально (WinXP x64, Delphi 7)
ОтветитьУдалить