Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для No4noylis

Пользователь


Сообщения: 94
Благодарности: 38

Профиль | Отправить PM | Цитировать


Neutron,
читать дальше »

На самом деле можно не писать:
Код: Выделить весь код
WizardForm.InnerNotebook.Show;
WizardForm.OuterNotebook.Show;
А достаточно удалить:
Код: Выделить весь код
WizardForm.InnerNotebook.Hide;
WizardForm.OuterNotebook.Hide;
Просто по умалчиванию InnerNotebook и OuterNotebook УЖЕ включены и писать для них .Show не нужно, просто убери их скрытие .Hide
А вот небольшие примеры
у тебя создана панель:
Код: Выделить весь код
procedure CreateStatusPanel;
begin
  Welcome := TLabel.Create(WizardForm);
  with Welcome do begin
    AutoSize:=False;
    SetBounds(ScaleX(13), ScaleY(100), ScaleX(114), ScaleY(20));
    Transparent:=True;
    Font.Size:= 10;
    Font.Style:=[fsBold];
    Caption := ExpandConstant('{cm:Welcome}');
    Parent := WizardForm;
  end;

  Catalogue := TLabel.Create(WizardForm);
  with Catalogue do begin
    AutoSize:=False;
    SetBounds(ScaleX(13), ScaleY(130), ScaleX(114), ScaleY(20));
    Transparent:=True;
    Font.Size:= 10;
    Font.Style:=[fsBold];
    Caption := ExpandConstant('{cm:Catalogue}');
    Parent := WizardForm;
  end;

  StartMenu := TLabel.Create(WizardForm);
  with StartMenu do begin
    AutoSize:=False;
    SetBounds(ScaleX(13), ScaleY(160), ScaleX(114), ScaleY(20));
    Transparent:=True;
    Font.Size:= 10;
    Font.Style:=[fsBold];
    Caption := ExpandConstant('{cm:StartMenu}');
    Parent := WizardForm;
  end;

  Tasks := TLabel.Create(WizardForm);
  with Tasks do begin
    AutoSize:=False;
    SetBounds(ScaleX(13), ScaleY(190), ScaleX(114), ScaleY(20));
    Transparent:=True;
    Font.Size:= 10;
    Font.Style:=[fsBold];
    Caption := ExpandConstant('{cm:Task}');
    Parent := WizardForm;
  end;

  Installing := TLabel.Create(WizardForm);
  with Installing do begin
    AutoSize:=False;
    SetBounds(ScaleX(13), ScaleY(220), ScaleX(114), ScaleY(20));
    Transparent:=True;
    Font.Size:= 10;
    Font.Style:=[fsBold];
    Caption := ExpandConstant('{cm:Installing}');
    Parent := WizardForm;
  end;

  Finish := TLabel.Create(WizardForm);
  with Finish do begin
    AutoSize:=False;
    SetBounds(ScaleX(13), ScaleY(250), ScaleX(114), ScaleY(20));
    Transparent:=True;
    Font.Size:= 10;
    Font.Style:=[fsBold];
    Caption := ExpandConstant('{cm:Finish}');
    Parent := WizardForm;
  end;
end;
Для нее указано расположение Parent := WizardForm, НО сверху WizardForm у тебя есть InnerNotebook и OuterNotebook со всеми стандартными надписями поэтому панели не видно. Чтобы панель была видно у тебя в скрипте добавлено
Код: Выделить весь код
WizardForm.InnerNotebook.Hide;
WizardForm.OuterNotebook.Hide;
Чтоб вернуть стандартные надписи можно:
1). InnerNotebook и OuterNotebook скрыты и стандартных надписей не видно. Тут можно сделать так:
удалить
Код: Выделить весь код
WizardForm.InnerNotebook.Hide;
WizardForm.OuterNotebook.Hide;
А потом чтоб была видна панель сделать нужно все ее лейбы перенести на каждую страницу (Parent := WizardForm.WelcomePage; Parent := WizardForm.SelectDirPage; и так далее)
Вот пример для первых двух страниц:
Код: Выделить весь код
////////////////// welcomepage ///////////////////////////////////
procedure CreateStatusPanel;
begin
  Welcome := TLabel.Create(WizardForm);
  with Welcome do begin
    AutoSize:=False;
    SetBounds(ScaleX(13), ScaleY(100), ScaleX(114), ScaleY(20));
    Transparent:=True;
    Font.Size:= 10;
    Font.Style:=[fsBold];
    Caption := ExpandConstant('{cm:Welcome}');
    Parent := WizardForm.welcomepage;
  end;

  Catalogue := TLabel.Create(WizardForm);
  with Catalogue do begin
    AutoSize:=False;
    SetBounds(ScaleX(13), ScaleY(130), ScaleX(114), ScaleY(20));
    Transparent:=True;
    Font.Size:= 10;
    Font.Style:=[fsBold];
    Caption := ExpandConstant('{cm:Catalogue}');
    Parent := WizardForm.welcomepage;
  end;

  StartMenu := TLabel.Create(WizardForm);
  with StartMenu do begin
    AutoSize:=False;
    SetBounds(ScaleX(13), ScaleY(160), ScaleX(114), ScaleY(20));
    Transparent:=True;
    Font.Size:= 10;
    Font.Style:=[fsBold];
    Caption := ExpandConstant('{cm:StartMenu}');
    Parent := WizardForm.welcomepage;
  end;

  Tasks := TLabel.Create(WizardForm);
  with Tasks do begin
    AutoSize:=False;
    SetBounds(ScaleX(13), ScaleY(190), ScaleX(114), ScaleY(20));
    Transparent:=True;
    Font.Size:= 10;
    Font.Style:=[fsBold];
    Caption := ExpandConstant('{cm:Task}');
    Parent := WizardForm.welcomepage;
  end;

  Installing := TLabel.Create(WizardForm);
  with Installing do begin
    AutoSize:=False;
    SetBounds(ScaleX(13), ScaleY(220), ScaleX(114), ScaleY(20));
    Transparent:=True;
    Font.Size:= 10;
    Font.Style:=[fsBold];
    Caption := ExpandConstant('{cm:Installing}');
    Parent := WizardForm.welcomepage;
  end;

  Finish := TLabel.Create(WizardForm);
  with Finish do begin
    AutoSize:=False;
    SetBounds(ScaleX(13), ScaleY(250), ScaleX(114), ScaleY(20));
    Transparent:=True;
    Font.Size:= 10;
    Font.Style:=[fsBold];
    Caption := ExpandConstant('{cm:Finish}');
    Parent := WizardForm.welcomepage;
  end;

///////////////////// welcome page /////////////////////////////////

/////////////////// selectdirpage /////////////////////////////////////
  
   Welcome := TLabel.Create(WizardForm);
   with Welcome do begin
    AutoSize:=False;
    SetBounds(ScaleX(13), ScaleY(100), ScaleX(114), ScaleY(20));
    Transparent:=True;
    Font.Size:= 10;
    Font.Style:=[fsBold];
    Caption := ExpandConstant('{cm:Welcome}');
    Parent := WizardForm.selectdirpage ;
  end;

  Catalogue := TLabel.Create(WizardForm);
  with Catalogue do begin
    AutoSize:=False;
    SetBounds(ScaleX(13), ScaleY(130), ScaleX(114), ScaleY(20));
    Transparent:=True;
    Font.Size:= 10;
    Font.Style:=[fsBold];
    Caption := ExpandConstant('{cm:Catalogue}');
    Parent := WizardForm.selectdirpage ;
  end;

  StartMenu := TLabel.Create(WizardForm);
  with StartMenu do begin
    AutoSize:=False;
    SetBounds(ScaleX(13), ScaleY(160), ScaleX(114), ScaleY(20));
    Transparent:=True;
    Font.Size:= 10;
    Font.Style:=[fsBold];
    Caption := ExpandConstant('{cm:StartMenu}');
    Parent := WizardForm.selectdirpage ;
  end;

  Tasks := TLabel.Create(WizardForm);
  with Tasks do begin
    AutoSize:=False;
    SetBounds(ScaleX(13), ScaleY(190), ScaleX(114), ScaleY(20));
    Transparent:=True;
    Font.Size:= 10;
    Font.Style:=[fsBold];
    Caption := ExpandConstant('{cm:Task}');
    Parent := WizardForm.selectdirpage ;
  end;

  Installing := TLabel.Create(WizardForm);
  with Installing do begin
    AutoSize:=False;
    SetBounds(ScaleX(13), ScaleY(220), ScaleX(114), ScaleY(20));
    Transparent:=True;
    Font.Size:= 10;
    Font.Style:=[fsBold];
    Caption := ExpandConstant('{cm:Installing}');
    Parent := WizardForm.selectdirpage ;
  end;

  Finish := TLabel.Create(WizardForm);
  with Finish do begin
    AutoSize:=False;
    SetBounds(ScaleX(13), ScaleY(250), ScaleX(114), ScaleY(20));
    Transparent:=True;
    Font.Size:= 10;
    Font.Style:=[fsBold];
    Caption := ExpandConstant('{cm:Finish}');
    Parent := WizardForm.selectdirpage ;
  end;
end;
/////////////////// selectdiepage //////////////////////////////////
Как видишь сильно увеличиваеться размер кода, но так проще (Соответственно для каждой страници нужному лейбу делаешь нужный цвет).
2. А можно сделать по другому (Я так делаю):
оставляешь:
Код: Выделить весь код
WizardForm.InnerNotebook.Hide;
WizardForm.OuterNotebook.Hide;
А потом для всех стандартных надписей пишешь
Код: Выделить весь код
with WizardForm do begin
WizardForm.WelcomeLabel1.Parent:=WizardForm;
WizardForm.WelcomeLabel2.Parent:=WizardForm;
WizardForm.SelectDirLabel.Parent:=WizardForm;
******
end;
ну и так дальше. Теперь они ВСЕ ВСМЕСТЕ будут у тебя на ВСЕХ страницах.
Чтоб это исправить мы сначала их скрываем:
Код: Выделить весь код
procedure HideCocmponents:
WizardForm.WelcomeLabel1:=Hide;
WizardForm.WelcomeLabel2:=Hide;
WizardForm.SelectDirLabel:=Hide;
********
а потом для КАЖДОЙ страници возобноволяем:
Код: Выделить весь код
procedure ShowComponents(CurPageID: Integer);
begin
 case CurPageID of
    wpWelcome:
    begin
      WizardForm.WelcomeLabel1:=Show;
      WizardForm.WelcomeLabel2:=Show;
    end;

    wpSelectDir:
    begin
    WizardForm.SelectDirLabel:=Show;
    end;
end;
end;
...ну и так далее, я думаю смысл понятен.
И наконец мы добавляем наши процедуры в CurPageChanged:
Код: Выделить весь код
procedure CurPageChanged(CurPageID: Integer);
begin
 HideComponents;
 ShowComponents(CurPageID);
end;

Последний раз редактировалось No4noylis, 01-08-2011 в 14:50.

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:46, 01-08-2011 | #2551