v18対応版」を制作していたらコマンドの仕様変更に気づいたので報告する。Eventフォームイベントコマンドの仕様が変わった。以前は次のように記述していた。caseこのコードをv18にペーストして実行すると、次のようなエラーになる。関数の結果が式と一致しません。定数のタイプが無効です。変数のタイプが異なるため比較できません。ランゲージリファレンスを見ると、v18では戻り値がオブジェクト型になっていた。https://doc.4d.com/4Dv18/4D/18.4/FORM-Event.301-5233147.ja.htmlv15とかv17のプロジェクトをv18に変換すると、次のようなコードに変換される。Event」が新しく追加された、ということらしい。従来取得していた整数型のイベントコードは「code」というフィールドに格納されている。コードしか返さなかったを、イベントのトリガーとなったオブジェクト名も返すようだ。これまでイベントハンドラはオブジェクトメソッドに書いていたが、フォームメソッドにまとめて書いて、「もしこのオブジェクト名だったら」という記述ができるようになったってことかな。発生したcodeだけを必要とする場合はどちらのコマンドを使っても同じみたいだけど、オブジェクト型を使ってドット表記を参照する方が流行りっぽくてかっこいいかもしれない、とか色々考えて次のようにした。case修正ついでに一旦ローカル変数に取得するようにした。これでデバッグしやすくなる。Eventが実行されてしまい、気づかれるほどではないにしても性能的によろしくないので。SETUP廃止になった。プロジェクトをv18に変換すると、次のようなコードに変換されている。settingsを使う、とランゲージリファレンスに書いてある。SETUP」は、印刷ダイアログを表示することなく、用紙とか印刷設定を前回と同様またはいつも決まった所定のセッティングで印刷したいときに使うコマンドであった。ユーザが毎回印刷設定ダイアログで設定してから印刷する場合は不要だが、印刷設定ダイアログを出さずに印刷したり、前の設定を覚えておいて欲しい場合に実装することになる。v18ではまだそのような仕様を使う状況に遭遇していないので、使うことになったらまた報告する。