Как уменьшить межстрочный интервал между двумя полями ввода в Inno Setup TInputQueryWizardPage (CreateInputQueryPage) - PullRequest
2 голосов
/ 07 января 2020

У меня есть страница TInputQueryWizardPage с 8 пользовательскими вводами. Страница мастера была увеличена , но все значения не отображаются. Есть ли способ уменьшить межстрочный интервал между двумя значениями, чтобы все значения отображались с текущим размером мастера?

enter image description here

1 Ответ

1 голос
/ 07 января 2020

Используйте TInputQueryWizardPage.Edits и TInputQueryWizardPage.PromptLabels для доступа к элементам управления и переместите их по мере необходимости:

[Code]

procedure ReducePromptSpacing(Page: TInputQueryWizardPage; Count: Integer; Delta: Integer);
var
  I: Integer;
begin
  for I := 1 to Count - 1 do
  begin
    Page.Edits[I].Top := Page.Edits[I].Top - Delta * I;
    Page.PromptLabels[I].Top := Page.PromptLabels[I].Top - Delta * I;
  end;
end;

procedure InitializeWizard();
var
  Page: TInputQueryWizardPage;
begin
  Page := CreateInputQueryPage(wpWelcome,
    'Personal Information', 'Who are you?',
    'Please specify your name and the company for whom you work, then click Next.');

  Page.Add('Prompt 1:', False);
  Page.Add('Prompt 2:', False);
  Page.Add('Prompt 3:', False);
  Page.Add('Prompt 4:', False);
  Page.Add('Prompt 5:', False);

  ReducePromptSpacing(Page, 5, ScaleY(10));
end;

Стандартная раскладка:

enter image description here

Макет с интервалом, уменьшенным на 10 пикселей:

enter image description here

...