加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

inno-setup – Inno设置MsgBox有三个按钮和三个结果

发布时间:2020-12-15 09:21:06 所属栏目:大数据 来源:网络整理
导读:我正在尝试使用三个按钮和三个结果创建一个MsgBox,但我无法看到如何创建第三个结果?我目前有一个两个按钮MsgBox的代码,它完美地工作: if ((strExistingInstallPath '') and (strExistingVersion = '2.5.3')) thenbegin if SuppressibleMsgBox('Setup has d
我正在尝试使用三个按钮和三个结果创建一个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_YESNO更改为MB_YESNOCANCEL,我现在会得到三个按钮,是,否和取消.但是,由于if语句被分配给MsgBox,我很难弄清楚如果IDCANCEL然后键入语句如何做一个else.我试图将MsgBox返回的ID常量分配给一个字符串,然后为该字符串创建单独的if语句,使其等于每个ID常量,但这很难失败.我在这里错过了什么?理想情况下,我希望将三个按钮标记为Yes,No和Silent,以便第三个按钮可以被赋予/ silent参数以防止卸载提示.那么,是否可以重命名按钮?

解决方法

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

case SuppressibleMsgBox('Text',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',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;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读