создание интерфейса мастера в Delphi 7 - PullRequest
9 голосов
/ 05 декабря 2011

Я использую Delphi 7 и пытаюсь создать интерфейс мастера. Я не знаю, есть ли более простой способ создания мастера, поэтому я думал о создании отдельных форм для каждого шага мастера, и когда пользователь нажимает «Далее», активная форма закрывается, а открывается следующая.

Вот скриншот из двух последовательных форм: screen-shot

Я сделал процедуру, которая принимает 2 формы в качестве параметров: форму, которая будет закрыта, и следующую форму мастера

class Procedure Tspad.nextForm(showForm, closeForm: TForm);
begin
   closeForm.Close;
   showForm.Showmodal;
end;

Когда я нажимаю кнопку «Далее», выполняется следующий код:

Tspad.nextForm(echipContractForm, clientContractForm);

Когда я запускаю программу и нажимаю кнопку «Далее», появляется следующая форма, но текущая не закрывается.

Как я могу сделать эту работу, или есть еще более эффективный способ создания мастера?

Ответы [ 6 ]

20 голосов
/ 05 декабря 2011

Один из самых распространенных способов создания мастера - использование элемента управления страницей.Каждая отдельная страница мастера представляет собой отдельную страницу / вкладку в элементе управления страницей.Я считаю, что именно так Windows реализует мастера.

Естественно, вы хотите скрыть все вкладки.Сделайте это, установив TabVisible в False для каждой вкладки.Если вы хотите перемещаться вперед и назад с помощью мастера, например, когда пользователь нажимает кнопки «Далее» или «Предыдущий», сделайте это, установив ActivePage или ActivePageIndex в зависимости от ваших предпочтений.

14 голосов
/ 05 декабря 2011

Хорошей практикой для разделения контента, отображаемого в одной форме, является использование Frames .

A Рамка очень похожа на форму, за исключением того, что у нее нет собственного окна, но она находится внутри формы хоста .

В сочетании с (как предположил Дэвид Хеффернан) TPageControl или даже TNotebook (, который почти такой же, как TPageControl, только у него нет вкладок для начала ), в итоге вы получите легко обслуживаемый Мастер.

11 голосов
/ 05 декабря 2011

JVCL имеет хороший контроль, чтобы сделать мастера очень простым и эффективным способом (TJvWizard).См. http://jvcl.delphi -jedi.org /

3 голосов
/ 05 декабря 2011

Вы можете попробовать это:

2 голосов
/ 05 декабря 2011

Вы можете протестировать некоторые компоненты, которые могут помочь вам в этой задаче (внутренне используя tPageControl или TNotebook).Смотрите эту ссылку .

С уважением.

0 голосов
/ 05 декабря 2011

Вы также можете рассмотреть TMS TAdvSmoothStepControl (не бесплатно!).Другое решение, но только «внешнее» для вашей программы, заключается в использовании Inno Setup для создания мастера, даже в целях «установки без установки».

На самом деле с Inno Setup вы можете много думать (изменить INI-файл и реестр, запускать / останавливать программы ...), которые могут быть полезны для мастера без «установки» программы.

...