В отличие от диалогов описанных в предыдущем посте, диалоги описанные здесь, выполняют более полезные функции. =)
Диалоги, построенные на Delphi
TJvDesktopAlert и TJvDesktopAlertStack
Компоненты для показа всплывающих окошек.(Popup hint window).
Можно настраивать любые параметры, окошки появляются на заданное время и тают по истечении. При наведении мышки, они перестают пропадать. Есть возможность перетаскивать их мышкой, обрабатывать клики на разных областях, присваивать Popup menu для стрелочки. TJvDesktopAlert отвечает за прорисовку окошка. TJvDesktopAlertStack отвечает за список активных окошек. Единственный минус с которым я столкнулся при использовании этого компонента – это то, что всё работает хорошо до тех пор пока мы не попытаемся уместить на нём больше текста. Советую посмотреть демку: JVCL\examples\JvDesktopAlert.
TJvDSADialog
Компонент для создания собственных диалогов(MessageDlg) с галочкой "Не показывать больше это окно"(Don’t Show Again), а также диалогов закрывающихся по таймеру. Прежде чем его использовать обратите внимание на готовые функции предоставленные в модуле JvDSADialogs.pas. Там полно функций, позволяющих показывать диалог с заданными параметрами. Также там есть функции заменяющие стандартные ShowMessage, MessageDlg, MessageDlgEx.
Этот компонент подробно описан в JVCL Help-е. Также советую посмотреть демку JVCL\Examples\JvDSADialogs\MessageDlgEditor.dpr.
TJvTipOfDay
Диалог “Совет Дня”. Умеет автоматически показывать себя при старте программы(отключаемо), сохранять свои свойства в AppStorage[1]. Хранит советы в Tips:Tstrings. Имеет два вида отображения.
TJvFindReplace
Компонент, инкапсулирующий в себе функционал стандартных TFindDialog и TReplaceDialog. Подключается к Edit контролу, имеет методы для поиска и замены текста, а также умеет контролировать ход выполнения поиска и замены с помощью событий. Умеет искать и заменять текст без показа диалогов.TJvLoginDialog
Диалог запрашивающий имя пользователя и пароль. По умолчанию автоматически запускается при старте программы(свойство Active) и в случае неправильного пароля, не позволяет запуститься программе. Имеет свойства: Caption; Количество попыток ввода пароля; Максимальная длина пароля, умеет сохраняться в AppStorage[1].
TJvProgressDialog
диалог с прогрессбаром.
TJvProgressComponent
компонент, показывающий диалог с прогрессбаром в модальном или немодальном режиме.
TJvDualListDialog
Диалог для перемещения информации между двумя списками TStrings. Поддерживается Drag’n’Drop.TJvBrowseForFolderDialog
Диалог для выбора папки(Browse For Folder). Обёртка вокруг функции SHBrowseForFolder.
Диалоги для выбора цвета
JvColorDialog : TJvColorDialog
От стандартного TColorDialog отличается только наличием события OnQueryColor(Sender: TObject; SelectedColor: TColor; var Accept: Boolean);JvFullColorDialog : TJvFullColorDialog
JvFullColorCircleDialog : TJvFullColorCircleDialog
Из бесплатных контролов для выбора цвета, хочу упомянуть ещё Color Picker Control от Soft-Gems. Версии для D2009 там пока нет.
Устаревшие диалоги
TJvOpenDialog, TJvSaveDialog – немного расширенные диалоги для загрузки/сохранения файлов. В Висте визуально ничем не отличаются от стандартных TOpenDialog, TSaveDialog.
TJvSelectDirectory – устаревший аналог TJvBrowseForFolderDialog. Надеюсь, что его уберут из следующей версии.
Проблемные диалоги
Диалоги с которыми у меня возникли проблемы. Причины проблем в совокупности этих параметров: Windows Vista 32 bit, Delphi 2009, JVCL 3.36 =) Описанные фичи и баги актуальны для JVCL 3.35, точнее для исходников в репозитории на 24-12-2008.
TJvImageDialog – при тестовом запуске подвесил IDE.
TJvPageSetupDialog, TJvPageSetupTitledDialog, TJvAddHardwareDialog – глючат.
Ссылки по теме
- Описание компонентов JVCL на русском языке
- Сравнение TjvDbGrid db grid из JVCL со стандартным TDbGrid
- Системные диалоги в JVCL. JvDialogs, Часть 1(начало).
- Бесплатные компоненты для выбора цвета: Color Picker Control от Soft-Gems.
[1] AppStorage – универсальный механизм в JVCL позволяющий легко сохранять published свойства объектов в ini-файлах, реестре, базе данных и т.п. Основан на TFormStorage из rxLib.
спасибо за обзор.
ОтветитьУдалитьВпечатлило... обычно в дополнительных библиотеках один-два полезных компонента, остальные - заурядные и бесполезные. Здесь же компоненты самые разные.. добавлю в закладки, уверен - пригодится.
ОтветитьУдалитьПриветствую! Прошу помощи...
ОтветитьУдалитьРазбираюсь с TJvDesktopAlert и TJvDesktopAlertStack
Так Вот как Получить Текст сообщения по которому я нажал... если скажем открыто несколько окон
procedure TJvDesktopAlertDemoFrm.DoMessageClick(Sender:TObject);
begin
ShowMessage('You clicked the message!');
end;
точнее на форме у меня есть lblCod в нем Код сообщения как его получить в
procedure TJvDesktopAlertDemoFrm.DoMessageClick(Sender:TObject);
Скорее всего как-то через Sender (точно проверять лень)
Удалитьif Sender is TJvDesktopAlert then
// тут обращаемся к Sender-у через TJvDesktopAlert(Sender) и получаем то что нужно
TJvDesktopAlert(Sender).Caption ?
Где скучать????? Одни битые ссылки!
ОтветитьУдалитьБедняжка. Специально всё поправил.
УдалитьДа, со сбитыми ссылками на соскучишься! :)
Удалить