【问题标题】:Too Many Actual Parameters (Message Dialogue)实际参数过多(消息对话框)
【发布时间】:2013-01-03 20:27:24
【问题描述】:

我继承了一个存在许多问题的程序。最新的一个是实际参数过多警告:

  if MessageDlgPos('IS THIS CORRECT? ' , mtConfirmation,
  **[mbyes, mbno], 0, 400, 450, mbno) = mrno then begin**
    edtPstvEmplyNmbr.SetFocus;
    xitFlg:= True;

粗体部分是错误突出显示的位置。

注意:程序可以工作,只是不在我的机器上。它是使用相同版本的 Delphi (7) 开发的,但在 clx (kylix) 环境中。我想我(可能)已经解决了 clx 和 vcl (我当前的环境)之间的所有不兼容问题,但可能是我缺少一个生成此错误的组件。我会尽力澄清任何问题,但请记住,我开发 Delphi 才几个月。

【问题讨论】:

  • 将光标放在括号内,然后按 Ctrl+Shift+Space。 IDE 将显示您可以使用的任何可能的参数组合。在我看来,klx 环境的 MessageDlgPos 重载版本与 vcl 不同,因此您必须检查所需的功能是否仍然存在。
  • Jerry,尝试添加 clx 标签,但我的等级还不够。
  • Roald,我会在有空的时候试试你的技巧并发布结果。
  • Roald,试过 Ctrl+Shift+Space。 “由于源代码错误,无法调用代码参数”。

标签: delphi kylix


【解决方案1】:

Delphi 的 VCL 和 Kylix 的 CLX 不完全兼容。特别是,一些名称相似的函数采用不同数量的参数,正如您亲身了解的那样。

现代 版本的 Delphi 支持您尝试调用的 MessageDlgPos 版本,但很明显 Delphi 7 不支持。 可能发生的事情是,当 VCL 版本只有六个参数时,CLX 引入了七参数重载,然后后来的 Delphi 版本将 CLX 版本移植回 VCL。请记住,Delphi 7 已有十多年的历史了。

要查看可以使用的函数版本,请查看 Dialogs.pas

如果您有六参数版本,您可能可以简单地删除最后一个参数,然后处理默认按钮可能不是您想要的事实。另一种方法是调用MessageBox,它可以让您指定默认按钮,但不能指定窗口位置。

【讨论】:

  • 罗伯,你是对的。我在 Dialogs.pas 中只有 6 个参数。感谢您的帮助
  • +1 确实,我知道它必须与 Delphi 7 兼容,你解释得很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-12
  • 1970-01-01
  • 2011-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多