Motto

В тихом саду здравомыслия
Пусть на вас постоянно падают
кокосовые орехи пробужденности.
Чогьям Трунгпа РИНПОЧЕ


Версия для мобильного


четверг, 25 декабря 2008 г.

Описание диалогов в JVCL. JvDialogs. Часть 2.

В отличие от диалогов описанных в предыдущем посте, диалоги описанные здесь, выполняют более полезные функции. =)

Палитра компонентов JVCL JvDialogs

Диалоги, построенные на Delphi


TJvDesktopAlert и TJvDesktopAlertStack

Компоненты для показа всплывающих окошек.(Popup hint window).

Всплывающие из трея прозрачные окошки на Delphi 
Можно настраивать любые параметры, окошки появляются на заданное время и тают по истечении. При наведении мышки, они перестают пропадать. Есть возможность перетаскивать их мышкой, обрабатывать клики на разных областях, присваивать Popup menu для стрелочки. TJvDesktopAlert отвечает за прорисовку окошка. TJvDesktopAlertStack отвечает за список активных окошек. Единственный минус с которым я столкнулся при использовании этого компонента – это то, что всё работает хорошо до тех пор пока мы не попытаемся уместить на нём больше текста. Советую посмотреть демку: JVCL\examples\JvDesktopAlert.

TJvDSADialog

Компонент для создания собственных диалогов(MessageDlg) с галочкой "Не показывать больше это окно"(Don’t Show Again), а также диалогов закрывающихся по таймеру. Прежде чем его использовать обратите внимание на готовые функции предоставленные в модуле JvDSADialogs.pas. Там полно функций, позволяющих показывать диалог с заданными параметрами. Также там есть функции заменяющие стандартные ShowMessage, MessageDlg, MessageDlgEx.Диалог сделанный на Delphi с галочкой "Больше не показывать" и обратным отсчётом
Этот компонент подробно описан в JVCL Help-е. Также советую посмотреть демку JVCL\Examples\JvDSADialogs\MessageDlgEditor.dpr.


TJvTipOfDay


Диалог “Совет Дня”. Умеет автоматически показывать себя при старте программы(отключаемо), сохранять свои свойства в AppStorage[1]. Хранит советы в Tips:Tstrings. Имеет два вида отображения.

А знаете ли Вы? - диалог в DelphiDid you know...? - диалог в Delphi 

TJvFindReplace

Компонент, инкапсулирующий в себе функционал стандартных TFindDialog и TReplaceDialog. Подключается к Edit контролу, имеет методы для поиска и замены текста, а также умеет контролировать ход выполнения поиска и замены с помощью событий. Умеет искать и заменять текст без показа диалогов.

TJvLoginDialog

Диалог запрашивающий имя пользователя и пароль. По умолчанию автоматически запускается при старте программы(свойство Active) и в случае неправильного пароля, не позволяет запуститься программе. Имеет свойства: Caption; Количество попыток ввода пароля; Максимальная длина пароля, умеет сохраняться в AppStorage[1].

Диалог для регистрации в программе. 

TJvProgressDialog

диалог с прогрессбаром.

TJvProgressComponent

компонент, показывающий диалог с прогрессбаром в модальном или немодальном режиме.

TJvDualListDialog

Диалог для перемещения информации между двумя списками TStrings. Поддерживается Drag’n’Drop.Диалог для работы с двумя списками

TJvBrowseForFolderDialog

Диалог для выбора папки(Browse For Folder). Обёртка вокруг функции SHBrowseForFolder.
Диалог "Выбрать папку" на Delphi

Диалоги для выбора цвета

JvColorDialog : TJvColorDialog

От стандартного TColorDialog отличается только наличием события OnQueryColor(Sender: TObject; SelectedColor: TColor; var Accept: Boolean);

JvFullColorDialog : TJvFullColorDialog

Выбор RGB цвета на Дельфи

JvFullColorCircleDialog : TJvFullColorCircleDialog

Выбор цвета в Delphi: цветовой круг

Из бесплатных контролов для выбора цвета, хочу упомянуть ещё 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 – глючат.

Ссылки по теме


[1] AppStorage – универсальный механизм в JVCL позволяющий легко сохранять published свойства объектов в ini-файлах, реестре, базе данных и т.п. Основан на TFormStorage из rxLib.

7 комментариев:

  1. Впечатлило... обычно в дополнительных библиотеках один-два полезных компонента, остальные - заурядные и бесполезные. Здесь же компоненты самые разные.. добавлю в закладки, уверен - пригодится.

    ОтветитьУдалить
  2. Приветствую! Прошу помощи...
    Разбираюсь с TJvDesktopAlert и TJvDesktopAlertStack
    Так Вот как Получить Текст сообщения по которому я нажал... если скажем открыто несколько окон
    procedure TJvDesktopAlertDemoFrm.DoMessageClick(Sender:TObject);
    begin
    ShowMessage('You clicked the message!');
    end;
    точнее на форме у меня есть lblCod в нем Код сообщения как его получить в
    procedure TJvDesktopAlertDemoFrm.DoMessageClick(Sender:TObject);

    ОтветитьУдалить
    Ответы
    1. Скорее всего как-то через Sender (точно проверять лень)

      if Sender is TJvDesktopAlert then
      // тут обращаемся к Sender-у через TJvDesktopAlert(Sender) и получаем то что нужно
      TJvDesktopAlert(Sender).Caption ?

      Удалить
  3. Где скучать????? Одни битые ссылки!

    ОтветитьУдалить

Постоянные читатели