Delphi 实际参数太多(消息对话)

Delphi 实际参数太多(消息对话),delphi,kylix,Delphi,Kylix,我继承了一个有很多问题的程序。最新的警告是实际参数太多: if MessageDlgPos('IS THIS CORRECT? ' , mtConfirmation, **[mbyes, mbno], 0, 400, 450, mbno) = mrno then begin** edtPstvEmplyNmbr.SetFocus; xitFlg:= True; 粗体部分是错误突出显示的地方 注意:该程序可以运行,但不能在我的机器上运行。它是在clx(kylix)环境中使

我继承了一个有很多问题的程序。最新的警告是实际参数太多:

  if MessageDlgPos('IS THIS CORRECT? ' , mtConfirmation,
  **[mbyes, mbno], 0, 400, 450, mbno) = mrno then begin**
    edtPstvEmplyNmbr.SetFocus;
    xitFlg:= True;
粗体部分是错误突出显示的地方


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

Delphi的VCL和Kylix的CLX并不完全兼容。特别是,一些类似于命名函数的函数采用不同数量的参数,这是您第一手了解到的

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

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


如果您使用的是六参数版本,那么您可能只需删除最后一个参数,然后处理默认按钮可能不是您想要的按钮这一事实。另一种选择是调用,这将允许您指定默认按钮,而不能指定窗口位置。

将光标放在括号内,然后按Ctrl+Shift+Space。IDE将显示您可以使用的任何可能的参数组合。在我看来,klx环境的MessageDlgPos重载版本与vcl不同,因此您必须检查所需的功能是否仍然存在。Jerry,尝试添加clx标记,但我的升级不够。Roald,我会在有空闲时间尝试您的技术并发布结果。Roald,尝试了Ctrl+Shift+Space。“由于源代码中有错误,无法调用代码参数”。Rob,您是对的。我在Dialogs.pas中只有6个参数。感谢您的帮助+1事实上,我知道它必须是Delphi 7兼容性,您在解释它时做得非常好。