【发布时间】:2014-08-26 21:42:19
【问题描述】:
我正在尝试创建一个带有三个按钮和三个结果的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,我现在会得到三个按钮,Yes、No 和 Cancel。然而,由于if 语句被分配给MsgBox,我正在努力研究如何执行else if IDCANCEL then 类型的语句。我试图将 MsgBox 返回的 ID 常量分配给一个字符串,然后为字符串创建单独的 if 语句,使其等于每个 ID 常量,但这失败了。我在这里想念什么?理想情况下,我希望将三个按钮标记为 Yes、No 和 Silent,以便可以为第三个按钮指定 /silent参数以防止卸载提示。那么,是否也可以重命名按钮?
【问题讨论】:
-
MsgBox 返回一个整数,您可以在返回时使用“大小写”。
-
那是我的问题。我没有意识到 MsgBox 返回了一个整数。 ID 常量看起来像字符串!