Installation Inno设置-当组合框中的选定值更改时,如何更改标签标题[或其他常规控件]

Installation Inno设置-当组合框中的选定值更改时,如何更改标签标题[或其他常规控件],installation,inno-setup,pascalscript,Installation,Inno Setup,Pascalscript,在组合框中更改语言时(不单击“确定”),我想更改对话框的文本(标签、表单标题、按钮标题) procedure SelectLanguage(); 变量 语言形式:TSetupForm; 取消按钮:TNewButton; OK按钮:TNewButton; LangCombo:TNewComboBox; 选择标签:TNewStaticText; 语言:TStrings; 参数:字符串; 实例:坦德尔; P、 I:整数; S、 L:字符串; 开始 语言:=TStringList.Create(); 语

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

procedure SelectLanguage();
变量
语言形式:TSetupForm;
取消按钮:TNewButton;
OK按钮:TNewButton;
LangCombo:TNewComboBox;
选择标签:TNewStaticText;
语言:TStrings;
参数:字符串;
实例:坦德尔;
P、 I:整数;
S、 L:字符串;
开始
语言:=TStringList.Create();
语言。添加('en=English');
Add('cs='+\$010C+'e'+\$0161+'tina');
LanguageForm:=CreateCustomForm;
LanguageForm.Caption:=设置消息(msgSelectLanguageTitle);
LanguageForm.ClientWidth:=ScaleX(297);
LanguageForm.ClientHeight:=ScaleY(125);
LanguageForm.BorderStyle:=bsDialog;
语言形式。中心;
CancelButton:=TNewButton.Create(LanguageForm);
CancelButton.Parent:=LanguageForm;
CancelButton.Left:=ScaleX(214);
CancelButton.Top:=ScaleY(93);
取消按钮。宽度:=ScaleY(75);
取消按钮高度:=ScaleY(23);
CancelButton.TabOrder:=3;
CancelButton.ModalResult:=mrCancel;
CancelButton.Caption:=设置消息(msgButtonCancel);
OKButton:=TNewButton.Create(LanguageForm);
OKButton.Parent:=LanguageForm;
OK按钮左:=ScaleX(133);
OKButton.Top:=ScaleY(93);
宽度:=ScaleX(75);
确定按钮高度:=ScaleY(23);
OKButton.Caption:=SetupMessage(msgButtonOK);
默认值:=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.高度:=ScaleY(21);
LangCombo.Style:=csDropDownList;
LangCombo.DropDownCount:=16;
LangCombo.TabOrder:=1;
SelectLabel:=TNewStaticText.Create(LanguageForm);
选择Label.Parent:=LanguageForm;
SelectLabel.Left:=ScaleX(16);
选择label.Top:=ScaleY(8);
选择标签宽度:=ScaleX(273);
选择label.Height:=ScaleY(39);
SelectLabel.AutoSize:=False
选择label.Caption:=SetupMessage(msgSelectLanguageLabel);
选择label.TabOrder:=0;
选择label.WordWrap:=True;
对于I:=0到语言。计数-1 do
开始
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);
如果L=ActiveLanguage,则
LangCombo.ItemIndex:=I;
结束;
如果LanguageForm.showmodel=mrOK,则
开始
{ ... }
结束;
结束;
函数InitializeSetup():Boolean;
开始
选择语言();
{ ... }
结束;

西班牙语:第一语言


我选择英语,不更改语言选择器的语言。

您已经有了代码。您只需将
SelectLanguage
函数中的一些局部变量设置为全局变量,这样它们就可以在
LangChange
函数中使用:

var
语言形式:TSetupForm;
选择标签:TNewStaticText;
取消按钮:TNewButton;
程序变更(发送方:TObject);
开始
案例TNEWCOMBOX(发送方)。项目索引
0:{English}
开始
SelectLabel.Caption:=“选择安装过程中使用的语言:”;
取消按钮。标题:=“取消”;
LanguageForm.Caption:=“选择设置语言”;
结束;
1:{捷克}
开始
选择标签。说明:='Zvolte jazyk,kter'+\$FD+'se m'+\$E1+'pou'+\$17E+\$ED+'t b'+\$11B+'hem instalace:';
取消按钮。标题:='Storno';
语言形式。标题:='V'+\$FD+'b'+\$11B+'r jazyka pr'+\$16F+'vodce instalac'+\$ED+'';
结束;
结束;
结束;

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

LanguageForm:TSetupForm;
选择标签:TNewStaticText;
取消按钮:TNewButton;
并分配
LangChange
事件处理程序:

LangCombo.OnChange:=@LangChange;


您可以通过设置项目索引来更改它(请参阅Martin在前面的问题中提供的代码)。如果未单击“确定”,则无法更改语言。“确定”按钮表示您希望使用所选语言-未经用户同意,仅更改语言是不合适的。此外,当问与前一个问题相关的后续问题时,有礼貌地说出来,并链接到前一个问题,以便人们知道你在问什么。给出这个链接可以给人们提供上下文,这样他们就不会回答完全不同的问题(就像这里发生的那样)。