2013-12-14 37 views
5

我一直在嘗試一段時間,使「選擇組件」頁面變大,如下圖所示,包括組件inner-window(白色),因爲我有很多組件......並且它更容易選擇它的大窗口。如果任何人都可以說出這是否可能,請給我一個提示或者指示我。Inno Setup中較大的「選擇組件」頁面

enter image description here

值得慶幸的是, 開始

+0

嗯,這可能使嚮導窗口中較高,但你需要調整或轉移所有組件保持良好的外觀。有很多方法可以解決這項艱鉅的任務。 1)得到這樣一個非常長的腳本,這是一個很好的腳本,而且需要維護。 2)僅當用戶進入組件頁面並在離開組件頁面時將其還原才能使嚮導窗口更高。 3)根據請求調整大小(例如,通過僅在組件頁面上顯示的向下箭頭按鈕)。你能否詳述一下你的想法? – TLama

+0

P.S.考慮調整大小也可能會移動窗口,並且還應該考慮到用戶的屏幕高度,以避免其大小過高,因爲這樣您可能無法進入窗口的底部。 – TLama

+0

首先,我只想調整組件嚮導窗口,第二或第三個選項適合我的想法:),如果我想編輯組件嚮導,可以給我一些指示(例如,如何移動按鈕,如何使內部白色窗口變大等) –

回答

5

根據您original script我做了如下修改。爲了存儲原始位置(頂部和高度值),我使用了一個整數數組,並製作了兩個用於存儲當前位置和恢復它們的通用程序。

恢復過程的參數爲HeightOffset,您可以在其中指定值,在輸入整數數組中的所有值在傳遞給嚮導表單組件屬性之前都將被增加。除此之外,我已經聲明瞭一個單獨的標誌,表示嚮導窗體已經修改了大小。

我用所有這一切,因爲它提高了腳本的可讀性和它的其他頁面易於擴展:

[Code] 

type 
    TPositionStorage = array of Integer; 

var 
    CompPageModified: Boolean; 
    CompPagePositions: TPositionStorage; 

procedure SaveComponentsPage(out Storage: TPositionStorage); 
begin 
    SetArrayLength(Storage, 10); 

    Storage[0] := WizardForm.Height; 
    Storage[1] := WizardForm.NextButton.Top; 
    Storage[2] := WizardForm.BackButton.Top; 
    Storage[3] := WizardForm.CancelButton.Top; 
    Storage[4] := WizardForm.ComponentsList.Height; 
    Storage[5] := WizardForm.OuterNotebook.Height; 
    Storage[6] := WizardForm.InnerNotebook.Height; 
    Storage[7] := WizardForm.Bevel.Top; 
    Storage[8] := WizardForm.BeveledLabel.Top; 
    Storage[9] := WizardForm.ComponentsDiskSpaceLabel.Top; 
end; 

procedure LoadComponentsPage(const Storage: TPositionStorage; 
    HeightOffset: Integer); 
begin 
    if GetArrayLength(Storage) <> 10 then 
    RaiseException('Invalid storage array length.'); 

    WizardForm.Height := Storage[0] + HeightOffset; 
    WizardForm.NextButton.Top := Storage[1] + HeightOffset; 
    WizardForm.BackButton.Top := Storage[2] + HeightOffset; 
    WizardForm.CancelButton.Top := Storage[3] + HeightOffset; 
    WizardForm.ComponentsList.Height := Storage[4] + HeightOffset; 
    WizardForm.OuterNotebook.Height := Storage[5] + HeightOffset; 
    WizardForm.InnerNotebook.Height := Storage[6] + HeightOffset; 
    WizardForm.Bevel.Top := Storage[7] + HeightOffset; 
    WizardForm.BeveledLabel.Top := Storage[8] + HeightOffset; 
    WizardForm.ComponentsDiskSpaceLabel.Top := Storage[9] + HeightOffset; 
end; 

procedure InitializeWizard; 
begin 
    CompPageModified := False; 
end; 

procedure CurPageChanged(CurPageID: Integer); 
begin 
    if CurpageID = wpSelectComponents then 
    begin 
    SaveComponentsPage(CompPagePositions); 
    LoadComponentsPage(CompPagePositions, ScaleY(200)); 
    CompPageModified := True; 
    end 
    else 
    if CompPageModified then 
    begin 
    LoadComponentsPage(CompPagePositions, 0); 
    CompPageModified := False; 
    end; 
end;