2016-09-27 4 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

Я не понимаю, какая у вас проблема с этим методом. Это, безусловно, лучший способ. Единственным другим является поиск дочернего элемента 'Page' с использованием метода« FindComponent »или путем итерации списка« Controls ». –

+0

Просто личное отвращение к глобальным переменным. –

+0

Мы уже обсуждали это: [Чтение значений с пользовательских страниц мастера без использования глобальных переменных] (http://stackoverflow.com/q/38792593/850848). –