Inno Setup: «Невозможно сфокусировать отключенное или невидимое окно» при настройке свойства ActiveControl - PullRequest
0 голосов
/ 24 декабря 2018

Я пытаюсь сфокусировать кнопку в окне пользовательских настроек, которое отображается модально.Я уже прочитал Запретить кнопке получать фокус в Inno Setup и попытался использовать свойство ActiveControl, чтобы установить это.Вот код:

[Code]

{ Create and show the Options window }
procedure ShowOptionsWindow;
var
  OptionsOKButton, OptionsCancelButton: TButton;
begin
  OptionsWindowForm := TForm.Create(WizardForm);
  with OptionsWindowForm do
    begin
      Parent := WizardForm;
      BorderStyle := bsDialog;
      Position := poOwnerFormCenter;
      ClientWidth := ScaleX(425);
      ClientHeight := ScaleY(165);
      Caption := '{#AppName} Options';
    end;
{ Define the Options Cancel button }
  OptionsCancelButton := TButton.Create(OptionsWindowForm);
  with OptionsCancelButton do
    begin
      Parent := OptionsWindowForm;
      Left := (OptionsWindowForm.ClientWidth - WizardForm.NextButton.Width) - (WizardForm.ClientWidth - (WizardForm.CancelButton.Left + WizardForm.CancelButton.Width));
      Top := (OptionsWindowForm.ClientHeight - WizardForm.NextButton.Height) - ScaleY(12);
      Width := WizardForm.NextButton.Width;
      Height := WizardForm.NextButton.Height;
      Caption := 'Cancel';
      OnClick := @OptionsCancelButtonClick;
    end;
{ Define the Options OK button }
  OptionsOKButton := TButton.Create(OptionsWindowForm);
  with OptionsOKButton do
    begin
      Parent := OptionsWindowForm;
      Left := (OptionsCancelButton.Left - WizardForm.NextButton.Width) - ((WizardForm.CancelButton.Left - WizardForm.NextButton.Left) - WizardForm.NextButton.Width);
      Top := OptionsCancelButton.Top;
      Width := WizardForm.NextButton.Width;
      Height := WizardForm.NextButton.Height;
      Caption := 'OK';
      OnClick := @OptionsOKButtonClick;
    end;
  OptionsWindowForm.ActiveControl := OptionsOKButton;
  OptionsWindowForm.ShowModal;
end;

Тем не менее, при запуске это выдает следующую ошибку:

Runtime Error

Я попытался изменитькогда это вызывается, помещая его после показа окна, но оно не вызывается до тех пор, пока окно не будет закрыто, поскольку ShowModal останавливает выполнение сценариев, когда он все еще выдает ту же ошибку.Есть ли способ установить кнопку для фокусировки в модальном окне?

1 Ответ

0 голосов
/ 24 декабря 2018

Ваш код правильный.Для меня это похоже на ошибку.

Это настройка свойства OptionsWindowForm.Parent, которая вызывает проблему.Просто удалите его.

enter image description here

...