Создание окна мастера (исходники)

Источник: codingclub

Сегодня я раскажу, как можно создать простейшее и удобное окно мастера. В нём будет создано несколько панелей, каждая из которых будет содержать инфу для определённого шага и при выполнении панели будут просто сменять друг-друга.

Создай новый проект. Брось на форму две кнопки "Назад" и "Далее". Теперь положи на форму компонент TPanel c закладки "Standard".

Установи на нём любые компоненты, а можешь просто сделать какую-нибудь надпись. Теперь брось на форму ещё одну панель. Её нужно поставить прямо над первой панелью.

Теперь создадим обработчик события OnShow для формы и напишем в нём следующее:

procedure TForm1.FormShow(Sender: TObject);
begin
 Panel1.Visible:=true;
 Panel2.Visible:=false;
 Panel3.Visible:=false;
end;

Здесь я делаю все панели невидимыми кроме первой. Теперь нам надо сделать так, чтобы по нажатии кнопки "Дальше" появлялась вторая панель, а затем третья. Для этого в обработчике события OnClick для кнопки "Далее" напишем:

procedure TForm1.Button1Click(Sender: TObject);
begin
 //Если видна первая панель, то сделать видимой вторую
 if Panel1.Visible=true then
  begin
   Panel1.Visible:=false;
   Panel2.Visible:=true;
   exit;
  end;

 //Если видна вторая панель, то сделать видимой первую
 if Panel2.Visible=true then
  begin
   Panel2.Visible:=false;
   Panel3.Visible:=true;
   exit;
  end;
end;

Теперь, то же самое, только для кнопки "Назад", чтобы мы могли двигатся в обратном порядке - от третей панели к первой. Для этого нужно обработать событие OnClick для кнопки "Назад":

procedure TForm1.Button2Click(Sender: TObject);
begin
 if Panel3.Visible=true then
  begin
   Panel3.Visible:=false;
   Panel2.Visible:=true;
   exit;
  end;

 if Panel2.Visible=true then
  begin
   Panel2.Visible:=false;
   Panel1.Visible:=true;
   exit;
  end;
end;

Вот и всё. Хотя я расскзал, как можно сделать мастер, такую подмену можно использовать везде.


Страница сайта http://www.interface.ru
Оригинал находится по адресу http://www.interface.ru/home.asp?artId=3664