2016-03-07 2 views
1

У моей программы установки Inno есть пользовательская страница входных файлов, которая была создана с использованием CreateInputFilePage.Как отключить NextButton, когда файл не выбран на InputFilePage (CreateInputFilePage)?

Как отключить NextButton на этой странице, пока путь к файлу не будет выбран пользователем?

Другими словами, мне нужно сделать NextButton незаменимым, в то время как форма выбора файла пуста и доступна при заполнении формы выбора файла.

спасибо.

ответ

2

Самый простой способ - использовать NextButtonClick для проверки входов и отображения сообщения об ошибке при неудачной проверке.

var 
    FilePage: TInputFileWizardPage; 

procedure InitializeWizard(); 
begin 
    FilePage := CreateInputFilePage(wpSelectDir, 'caption', 'description', 'sub caption'); 
    FilePage.Add('prompt', '*.*', '.dat'); 
end; 

function NextButtonClick(CurPageID: Integer): Boolean; 
begin 
    Result := True; 

    if (CurPageID = FilePage.ID) and 
    (Length(FilePage.Edits[0].Text) = 0) then 
    begin 
    MsgBox('Please select a file.', mbError, MB_OK); 
    WizardForm.ActiveControl := FilePage.Edits[0]; 
    Result := False; 
    end; 
end; 

Если вы действительно хотите обновить «Next» кнопку состояния в то время как изменения входных, это немного сложнее:

procedure FilePageEditChange(Sender: TObject); 
begin 
    WizardForm.NextButton.Enabled := (Length(TEdit(Sender).Text) > 0); 
end; 

procedure FilePageActivate(Sender: TWizardPage); 
begin 
    FilePageEditChange(TInputFileWizardPage(Sender).Edits[0]); 
end; 

procedure InitializeWizard(); 
var 
    Page: TInputFileWizardPage; 
    Edit: TEdit; 
begin 
    Page := CreateInputFilePage(wpSelectDir, 'caption', 'description', 'sub caption'); 
    { To update the Next button state when the page is entered } 
    Page.OnActivate := @FilePageActivate; 

    Edit := Page.Edits[Page.Add('prompt', '*.*', '.dat')]; 
    { To update the Next button state when the edit contents changes } 
    Edit.OnChange := @FilePageEditChange; 
end; 
+1

Еще раз спасибо Мартин. Работает как шарм. И опция оповещения на самом деле более удобна для пользователя! :) –