gpt4 book ai didi

inno-setup - 具有三个按钮和三个结果的 Inno Setup MsgBox

转载 作者:行者123 更新时间:2023-12-03 18:08:23 33 4
gpt4 key购买 nike

我正在尝试创建一个 MsgBox三个按钮和三个结果,但我看不到如何创建第三个结果?我目前有以下两个按钮的代码 MsgBox ,它完美地工作:

if ((strExistingInstallPath <> '') and (strExistingVersion = '2.5.3')) then
begin
if SuppressibleMsgBox('Setup has detected that ' + strMyAppName + ' ' + strExistingVersion + '.' + strExistingBuild + ' is installed.' + #13#10 + #13#10 +
'The existing version must be removed before installing or upgrading to ' + strMyAppVersion + '.' + strMyAppBuild + '.' + #13#10 + #13#10 +
'Would you like Setup to uninstall the existing version?',
mbConfirmation, MB_YESNO, IDYES) = IDYES then
begin
Exec(GetUninstallString, '', '', SW_SHOW,
ewWaitUntilTerminated, intResultCode);
Result := True;
end else
begin
MsgBox('The existing version must be removed first.' + #13#10 +
'Setup is unable to continue. Setup will now exit.',
mbError, MB_OK);
Result := False;
end;
end;

如果我更改 MB_YESNOMB_YESNOCANCEL ,我现在得到三个按钮,是、否和取消。但是,由于 if语句分配给 MsgBox ,我正在努力弄清楚如何做 else if IDCANCEL then类型声明。我试图将 MsgBox 返回的 ID 常量分配给一个字符串,然后为等于每个 ID 常量的字符串创建单独的 if 语句,但这很失败。我在这里缺少什么?理想情况下,我希望将三个按钮标记为 Yes、No 和 Silent,以便可以为第三个按钮提供 /silent参数以防止卸载提示。那么,是否也可以重命名按钮?

最佳答案

你可以写多个 if语句,但您必须将返回值存储到变量中并检查该变量值。但正如@Sertac 在他的评论中提到的,你可以使用 case语句,它更好地描述了代码中的目标,例如:

case SuppressibleMsgBox('Text', mbConfirmation, MB_YESNOCANCEL, IDYES) of
IDYES:
begin
{ user pressed Yes }
end;
IDNO:
begin
{ user pressed No }
end;
IDCANCEL:
begin
{ user pressed Cancel }
end;
end;

出于好奇与多个 if声明可能是:

var
MsgResult: Integer;
begin
MsgResult := SuppressibleMsgBox('Text', mbConfirmation, MB_YESNOCANCEL, IDYES);

if MsgResult = IDYES then
begin
{ user pressed Yes }
end
else
if MsgResult = IDNO then
begin
{ user pressed No }
end
else
if MsgResult = IDCANCEL then
begin
{ user pressed Cancel }
end;
end;

关于inno-setup - 具有三个按钮和三个结果的 Inno Setup MsgBox,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25515610/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com