Inno Setup-当combox框中的选定值更改时,如何更改标签标题[或其他常规控件] [英] Inno Setup - How to change a label caption [or other controls in general], when selected value in combox box changes

查看:106
本文介绍了Inno Setup-当combox框中的选定值更改时,如何更改标签标题[或其他常规控件]的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在组合框中更改语言时(不单击确定"),我想更改对话框的文本(标签,标题,按钮标题)

When changing a language in combo box (without clicking ok), I want to change texts of the dialog (label, form caption, button caption)

procedure SelectLanguage();
var
  LanguageForm: TSetupForm;
  CancelButton: TNewButton;
  OKButton: TNewButton;
  LangCombo: TNewComboBox;
  SelectLabel: TNewStaticText;
  Languages: TStrings;
  Params: string;
  Instance: THandle;
  P, I: Integer;
  S, L: string;
begin
  Languages := TStringList.Create();

  Languages.Add('en=English');
  Languages.Add('cs='+#$010C+'e'+#$0161+'tina');

  LanguageForm := CreateCustomForm;

  LanguageForm.Caption := SetupMessage(msgSelectLanguageTitle);
  LanguageForm.ClientWidth := ScaleX(297);
  LanguageForm.ClientHeight := ScaleY(125);
  LanguageForm.BorderStyle := bsDialog;
  LanguageForm.Center;

  CancelButton := TNewButton.Create(LanguageForm);
  CancelButton.Parent := LanguageForm;
  CancelButton.Left := ScaleX(214);
  CancelButton.Top := ScaleY(93);
  CancelButton.Width := ScaleY(75);
  CancelButton.Height := ScaleY(23);
  CancelButton.TabOrder := 3;
  CancelButton.ModalResult := mrCancel;
  CancelButton.Caption := SetupMessage(msgButtonCancel);

  OKButton := TNewButton.Create(LanguageForm);
  OKButton.Parent := LanguageForm;
  OKButton.Left := ScaleX(133);
  OKButton.Top := ScaleY(93);
  OKButton.Width := ScaleX(75);
  OKButton.Height := ScaleY(23);
  OKButton.Caption := SetupMessage(msgButtonOK);
  OKButton.Default := True
  OKButton.ModalResult := mrOK;
  OKButton.TabOrder := 2;

  LangCombo := TNewComboBox.Create(LanguageForm);
  LangCombo.Parent := LanguageForm;
  LangCombo.Left := ScaleX(16);
  LangCombo.Top := ScaleY(56);
  LangCombo.Width := ScaleX(273);
  LangCombo.Height := ScaleY(21);
  LangCombo.Style := csDropDownList;
  LangCombo.DropDownCount := 16;
  LangCombo.TabOrder := 1;

  SelectLabel := TNewStaticText.Create(LanguageForm);
  SelectLabel.Parent := LanguageForm;
  SelectLabel.Left := ScaleX(16);
  SelectLabel.Top := ScaleY(8);
  SelectLabel.Width := ScaleX(273);
  SelectLabel.Height := ScaleY(39);
  SelectLabel.AutoSize := False
  SelectLabel.Caption := SetupMessage(msgSelectLanguageLabel);
  SelectLabel.TabOrder := 0;
  SelectLabel.WordWrap := True;

  for I := 0 to Languages.Count - 1 do
  begin
    P := Pos('=', Languages.Strings[I]);
    L := Copy(Languages.Strings[I], 0, P - 1);
    S := Copy(Languages.Strings[I], P + 1, Length(Languages.Strings[I]) - P);
    LangCombo.Items.Add(S);
    if L = ActiveLanguage then
      LangCombo.ItemIndex := I;
  end;

  if LanguageForm.ShowModal = mrOK then
  begin
    { ... }
  end;
end;

function InitializeSetup(): Boolean;
begin
  SelectLanguage();
  { ... }
end;

西班牙语:第一语言.

我选择英语,并且不更改语言选择器的语言.

I select English and no change the language of the language selector.

推荐答案

您已经有了代码.您只需要在SelectLanguage函数中全局设置一些局部变量,以便可以在LangChange函数中使用它们:

You have the code already. You just need to make some local variables in the SelectLanguage function global, so they can be used in the LangChange function:

var
  LanguageForm: TSetupForm;
  SelectLabel: TNewStaticText;
  CancelButton: TNewButton;

procedure LangChange(Sender : TObject);
begin
  case TNewComboBox(Sender).ItemIndex of
    0: { English }
      begin
        SelectLabel.Caption := 'Select the language to use during the installation:';
        CancelButton.Caption := 'Cancel';
        LanguageForm.Caption := 'Select setup language';
      end;
    1: { Czech }
      begin
        SelectLabel.Caption := 'Zvolte jazyk, kter'+#$FD+' se m'+#$E1+' pou'+#$17E+#$ED+'t b'+#$11B+'hem instalace:';
        CancelButton.Caption := 'Storno';
        LanguageForm.Caption := 'V'+#$FD+'b'+#$11B+'r jazyka pr'+#$16F+'vodce instalac'+#$ED+'';
      end;
  end;
end;


SelectLanguage中,删除以下局部变量的声明:


In the SelectLanguage, remove these the declarations of local variables:

  LanguageForm: TSetupForm;
  SelectLabel: TNewStaticText;
  CancelButton: TNewButton;

并分配LangChange事件处理程序:

  LangCombo.OnChange := @LangChange;



这篇关于Inno Setup-当combox框中的选定值更改时,如何更改标签标题[或其他常规控件]的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆