2017-11-27 16 views
1

Inno Setup을 사용하는 설치 프로그램의 일부로 wpWelcome 페이지를 복제해야하지만 다른 내용이 필요합니다. TNotebookPage을 만들고 이미지, 패널 및 원하는 내용을 추가했으며 예상대로 표시합니다. 그러나 나는 그것을 원하는 위치에 WizardForm에 추가하는 방법을 모르겠습니다. 강제로 첫 번째 페이지로 표시 할 수 있지만 다음/뒤로 이동을 클릭하면 페이지가 사라집니다.Inno Setup OuterNotebook에 새 페이지를 추가하는 방법?

노트북 페이지를 해당 위치의 OuterNotebook에 어떻게 삽입합니까?

답변

0

마틴의 제안은 매우 도움이되었다 참조하십시오. 창문을 덮는 단순한 이미지 이상을 필요로했습니다. 따라서 필자의 해결책은 TNoteBookPage을 만들고 필요에 따라 형식을 지정할 수 있으며 TWizardPage입니다. inno-setup의 순서를 깨지 않으면 서 노트북 페이지를 설치 프로그램에 추가 할 수 없기 때문에 사용자 정의 페이지를 사용하여 주문을 유지하고 CustomPage가 활성으로 설정되면 활성 페이지를 노트북 페이지로 전환하여 필자가 필요한 것을 보여줍니다.

[Code] 
Apage, TWizardPage; 
ANotebookPage: TNewNoteBookPage; 

function CreatePage: TNewNoteBookPage; 
var 
    page: TNewNoteBookPage; 
    sideBarImage: TBitmapImage; 
    panel: TPanel; 
begin 

    {create page, sidebar and panel for our main content} 
    page := TNewNoteBookPage.Create(WizardForm); 
    page.Notebook := WizardForm.OuterNotebook; 
    page.Align := alClient; 
    page.Color := clWindow; 
    page.Visible:= True; 

    { copies the already loaded sidebar image on the welcome page to this notebook page} 
    sideBarImage := TBitmapImage.Create(WizardForm); 
    sideBarImage.Bitmap := WizardForm.WizardBitmapImage.Bitmap;  
    sideBarImage.Top := WizardForm.WizardBitmapImage.Top; 
    sideBarImage.Left := WizardForm.WizardBitmapImage.Left; 
    sideBarImage.Width := WizardForm.WizardBitmapImage.Width; 
    sideBarImage.Height := WizardForm.WizardBitmapImage.Height; 
    sideBarImage.BackColor := WizardForm.WizardBitmapImage.BackColor; 
    sideBarImage.Parent := page; 

    panel := TPanel.Create(WizardForm); 
    panel.BevelOuter := bvNone; 
    panel.Color := clWindow; 
    panel.Parent := page; 
    panel.Left := sideBarImage.Width + ScaleX(10); 
    panel.Height := page.Height; 
    panel.Width := page.Width - sideBarImage.Width; 

    { at this point we have a panel we can populate with content } 

    Result := page 
end 

procedure InitializeWizard; 
begin 
    ANotebookPage := CreateOneClickInstallPage(); 
    APage := CreateCustomPage(wpLicense, 'Install', ''); 
end 

procedure CurPageChanged(CurPageID: Integer); 
begin 
    WizardForm.Bevel1.Visible := true; 
    WizardForm.MainPanel.Visible := true; 
    WizardForm.InnerNotebook.Visible := true; 

    if CurPageID = APage.ID then begin 
    WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall) 
    WizardForm.Bevel1.Visible := false; 
    WizardForm.MainPanel.Visible := false; 
    WizardForm.InnerNotebook.Visible := false; 
    WizardForm.OuterNotebook.ActivePage := ANoteBookPage; 
    end; 
end 
1

일반적으로 TNewNotebookPage.PageIndex을 사용하여 페이지 위치를 지정합니다. 그러나 OuterNotebook을 "수동으로"수정하면 내부 Inno 설정 논리가 깨질 수 있습니다.


새로 작성하는 대신 기존 환영 페이지를 수정하면 어떨까요? 예 : Custom Welcome and Finished page with stretched image in Inno Setup.


또는, InnerNotebook에 사용자 정의 페이지를 만들 수 있지만 전체 창을 충당하기 위해 확장합니다.

문제를 해결하지 동안 직접 그들이 나에게 아이디어를 준, How to hide the main panel and show an image over the whole page?