Функция ShouldSkipPage внутри процедуры CurPageChanged

Я хочу, чтобы мои настройки переместились на следующую страницу из CurPageChanged процедура,

Подробности - я заменяю wpInstalling с ProgressPage чтобы сделать установку более аккуратной, после ProgressPage Готово, я хочу перейти к следующей странице, поэтому я вошел ShouldSkipPage функция,

но когда я компилирую настройки, я получаю сообщение об ошибке "Идентификатор исключен" на function ShouldSkipPage(curPageId : Integer) линия.

procedure CurPageChanged(CurPageID: Integer);
    var
      I: Integer;
begin
  case CurPageID of
    MOPage.ID:
    begin
      // this code executes for the first page, so let's setup the buttons however you want
      WizardForm.BackButton.Visible := False;
      WizardForm.NextButton.Caption := '&Agree and Install';
      WizardForm.CancelButton.Caption := '&Abort';
    end;
    SOPage.ID:
    begin
      // this code executes for the second page, so let's setup the buttons however you want
      SkipSOSwitch := 1;
      WizardForm.BackButton.Visible := False;
      WizardForm.NextButton.Caption := '&Agree and Install';
      WizardForm.CancelButton.Caption := '&Decline';
      WizardForm.CancelButton.OnClick := @SkipSOEvent;
    end;
    FSPage.ID:
    begin
      WizardForm.NextButton.Caption := SetupMessage(msgButtonFinish);
      WizardForm.NextButton.OnClick :=  @FinishButtonOnClick;
    end;
    IDPForm.Page.ID:
    begin
    // show the detail components
    idpShowDetails(True);
    // and hide the details button
    IDPForm.DetailsButton.Visible := False;
    end;
   wpInstalling: 
   begin
    ProgressPage.SetText('Starting installation...', 'Installing Wise Convert');
    ProgressPage.SetProgress(0, 0);
    WizardForm.ProgressGauge.Width := 600;
    ProgressPage.Show;
    try
    for I := 0 to 20 do begin
    ProgressPage.SetProgress(I, 20);
    Sleep(150);
    end;
    finally
    Sleep(3000);
    ProgressPage.Hide;
    function ShouldSkipPage(curPageId : Integer) : Boolean;
    begin
    Result := True
    end;
    end;
//  end else
//  WizardForm.NextButton.OnClick(WizardForm.NextButton);
    end;
    //StartTick := GetTickCount;
    end;        
  end; 

1 ответ

Эта ошибка возникает из-за того, что вы пытаетесь ShouldSkipPage Метод события из другого метода. Ваша проблема может быть упрощена до следующего фрагмента кода:

[Code]
procedure CurPageChanged(CurPageID: Integer);
begin
  function ShouldSkipPage(PageID: Integer): Boolean;
  begin
    Result := True;
  end;
end;

Такое строительство не допускается. Вы не можете объявлять методы событий внутри других. Они никак не могут быть вложенными (хотя ваше объявление фактически не является вложенным). Единственный допустимый способ объявить их:

[Code]
procedure CurPageChanged(CurPageID: Integer);
begin

end;

function ShouldSkipPage(PageID: Integer): Boolean;
begin
  Result := True;
end;

Таким образом, вы должны переместить ShouldSkipPage Объявление метода события из вашего CurPageChanged метод события. Если вы хотите, чтобы ваши события как-то взаимодействовали, вам придется использовать некоторые глобально объявленные переменные.

Другие вопросы по тегам