В бесплатной библиотеке компонентов JVCL есть контролы, позволяющие быстро соорудить свой интерфейс a la Wizard.
Это 4 компонента: TjvWizard – собственно сам wizard и TjvWizardRouteMapSteps, TJvWizardRouteMapNodes, TjvWizardRouteMapList предназначенные для отображения “карты” wizarda.
Компонент TjvWizard является базой для построения “волшебника”. По структуре TjvWizard очень похож на TPageControl. Он содержит список страниц wizarda(наследников от TJvWizardCustomPage) и общие настройки wizard-a: размеры панели с кнопками, размеры кнопок, заголовки(Caption) кнопок(Next, Back), картинки(glyph), ModalResult кнопок(актуально для кнопок Cancel и Finish), обработчики событий. TJvWizard содержит 7 предопределённых кнопки: Back, Next, To first page, To last page, Cancel, Finish и Help. Можно добавлять и свои.
Так выглядит компонент TJvWizard, c активной страницей Welcome page:
Компоненты карты wizarda. Слева направо: TjvWizardRouteMapSteps, TjvWizardRouteMapList, TJvWizardRouteMapNodes. Содержимое автоматически генерируется на основании списка страниц Wizarda. Одновременно wizard может работать только с одной картой.
Каждая страница wizard-а состоит из следующих областей:
- Header – заголовок страницы , состоящего из Title и Subtitle. Для Title и Subtitle можно указать параметры шрифта, цвета, картинку.
- Panel – эта область предоставлена программисту.
- JvWizardWelcomePage помимо прочего содержит ещё область Watermark(синий прямоугольник на верхней картинке)
Для каждой области можно указать видимость, цвет заливки, изображение.
Видимость и доступность(свойство enabled) кнопок задаётся индивидуально в настройках каждой страницы.
Interior page с открытым Popup меню в IDE в режиме дизайна
В остальном там всё достаточно тривиально, и разобраться что к чему ни составит труда.
Как это выглядит в программе. Пример.
Вот снимки экрана трёхстраничного wizard-a. Использованы цвета по умолчанию. В качестве карты используется TjvWizardRouteMapSteps.
Ссылки по теме
- Все статьи описывающие компоненты JVCL
- Что такое Jedi Code Library(JCL) и Jedi Visual Component Library(JVCL)?
- Системные диалоги с помощью JVCL. Диалоги Run, Connect Network, Change icon, Find files, Add printer.
- Диалоги в JVCL. Часть 2. Всплывающие окна, MessageBox с галочкой, Совет дня("А вы знаете, что?"), Диалоги выбора цветв
- Сравнение стандартного DbGridа с гридами в JVCL(TJvUltimateDbGrid, TjvDbGrid)
- Невизуальные компоненты JVCL. Описание закладки JvSystem: слежение за буфером обмена, работа с джойстиком, работа с HID, drag drop для любых контролов, подавление скринсейвера, слежение за папками, только один экземпляр программы, получение информации о компьютере, чтение windows event log, получение информации о компьютере, ведение журнала ошибок.
Hi! Спасибо за статью.
ОтветитьУдалитьНе подскажешь как обновить TjvWizardRouteMapList
при заполнении TjvWizard страницами программно? Из среды работает, а при программном заполнении МапЛист не обновляет свой список.
Спасибо.
Как добавить страницу в Wizard программно:
ОтветитьУдалитьprocedure TForm1.BitBtn1Click(Sender: TObject);
var
tmpPage: TJvWizardWelcomePage;
begin
tmpPage:= TJvWizardWelcomePage.Create(JvWizard1);
tmpPage.Wizard:=JvWizard1;
end;
p.s. ключевая строка tmpPage.Wizard:=JvWizard1;
Спасибо.
ОтветитьУдалитьВсе просто и даже можно сказать явно.
а я делал так
zWizard.Pages.Add(TJvWizardInteriorPage.Create(zWizard));
zWizard.Pages[i].Parent := zWizard;
таким способом ее можно было листать кнопками "Back/Next", но в маплисте ее не было.
Я когда пытался повторить, делал точно также. А потом посмотрел исходники и понял как нужно. =))
ОтветитьУдалить