2016-09-27 38 views
0

我做了一個自定義嚮導頁面,我希望它在安裝結束時顯示一種安裝清單,顯示安裝是否成功。Inno Setup自定義嚮導頁面(「安裝清單」)在運行時更改文本

喜歡的東西

Crucial Step......................SUCCESS 
Optional Step.....................FAILURE 

所以我有這樣的代碼在我initializeWizard()

Page := CreateCustomPage(wpInstalling, 'Installation Checklist', 'Status of all installation components'); 

RichEditViewer := TRichEditViewer.Create(Page); 
RichEditViewer.Width := Page.SurfaceWidth; 
RichEditViewer.Height := Page.SurfaceHeight; 
RichEditViewer.Parent := Page.Surface; 
RichEditViewer.ScrollBars := ssVertical; 
RichEditViewer.UseRichEdit := True; 
RichEditViewer.RTFText := ''// I want this attribute to be set in CurStepChanged() 

有沒有在稍後的時間點添加或編輯RichEditViewer.RTFText的方法嗎? Page是一個全局變量,但試圖訪問任何屬性給我一個錯誤。我想在wpInstalling之後編輯文本,所以我可以判斷安裝步驟是否成功。

+0

*「試圖訪問任何屬性給我一個錯誤」* - 什麼屬性? –

回答

1

我並不是這種方法的忠實粉絲,但是您可以將您的RichEditViewer設置爲全局,然後在任何函數中的任何位置對其進行編輯都是微不足道的。

var 
    RichEditViewer: TRichEditViewer; 

procedure InitializeWizard(); 
var 
    Page: TWizardPage; 
begin 
    Page := CreateCustomPage(wpInstalling, 'Installation Checklist', ''); 

    RichEditViewer := TRichEditViewer.Create(Page); 
    RichEditViewer.Width := Page.SurfaceWidth; 
    RichEditViewer.Height := Page.SurfaceHeight; 
    RichEditViewer.Parent := Page.Surface; 
    RichEditViewer.ScrollBars := ssVertical; 
    RichEditViewer.UseRichEdit := True; 
end; 

procedure CurStepChanged(CurStep: TSetupStep); 
begin 
    if CurStep=ssPostInstall then RichEditViewer.RTFText := 'STUFF'; 
end; 

值得一提的是,頁面本身甚至不需要是全局的。

+0

我不明白你用這種方法有什麼問題。這是迄今爲止最好的方式。唯一的方法是使用FindComponent方法或迭代Controls列表查找'Page'的子元素。 –

+0

只是個人對全局變量的厭惡。 –

+0

我們已經討論過這個問題:[從不使用全局變量的自定義嚮導頁面讀取值](http://stackoverflow.com/q/38792593/850848)。 –