4

多くの問題があるプログラムを継承しました。最新のものは、実際のパラメータが多すぎるという警告です。

  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を開発してから数か月しか経っていないことを忘れないでください。

4

1 に答える 1

5

DelphiのVCLとKylixのCLXは完全には互換性がありません。特に、あなたが直接学んだように、いくつかの同じ名前の関数は異なる数のパラメーターを取ります。

Delphiの最新バージョンは、MessageDlgPos呼び出しようとしているバージョンをサポートしていますが、Delphi7がサポートしていないことは明らかです。おそらく起こったことは、VCLバージョンに6つの引数しかないときに、CLXが7つの引数のオーバーロードを導入し、その後のDelphiバージョンがCLXバージョンをVCLに移植したことです。Delphi7は10年以上前のものであることに注意してください。

使用できる関数のバージョンを確認するには、Dialogs.pasを参照してください。

6引数バージョンを使用している場合は、最後のパラメーターを削除するだけで、デフォルトのボタンが希望どおりにならない可能性があるという事実に対処できる場合があります。もう1つの方法は、を呼び出すMessageBoxことです。これにより、ウィンドウの位置を指定できる代わりに、デフォルトのボタンを指定できます。

于 2013-01-03T21:34:58.197 に答える