新規プロセスで実行したフォーム上でカット&ペーストなどの操作をするためには,プロセス(SET MENU BAR
)またはフォーム(「連結メニューバー」プロパティ)のメニューバーで「編集」メニューがアクティブにされている必要があります。
メニューバーで「編集」メニューがアクティブにされていれば,フォーム上でカット&ペーストなどの操作ができるようになります。その場合,フォームオブジェクトのOn Data Change
イベントも実行されることになりますが,カットまたはペーストの直後ではなく,カットまたはペーストの直前にOn Data Change
が発生する点に注意してください。これは,メニューアクション全般に共通のルールとして「入力を確定してからアクションを実行する」という順序でデータが処理されるためです。
On Data Change
は,通常,キーストロークで入力が確定した直後に発生するイベントです。On Data Change
に入力値(変数やフィールド)を処理するようなコードが記述されている場合,カットまたはペーストで入力を完了したときにだけ「ひとつ前の」値が処理されることになってしまうので,特に注意が必要です。
コピー&ペースト操作をOn Data Change
イベントで通常のタイプ入力と同格に扱いたいのであれば,メニューエディターで編集アクションの「イベントを発生させない」オプションを有効にすることができます。そうすれば,コピー&ペースト操作だけではOn Data Change
が発生しなくなり,通常のタイプ入力と同じく,入力が確定したタイミングでOn Data Change
が発生するようになります。
デザインリファレンス > メニューとメニューバー > メニューアクションを指定する
ユーザーモードで表示される編集メニューは,「イベントを発生させない」オプションが有効にされていますが,メニューエディターで作成した編集メニューはオプションが有効にされていません。開発者は,フォームエディターかユーザーモードでフォームを検証することが多いので,コピー&ペースト操作でデータ入力を完了した場合にだけ問題が発生することに気づかないことがあります。On Data Change
に入力データを処理するコードが記述されているのであれば,念のため,メニューエディターで編集アクションの「イベントを発生させない」オプションが有効にされているかどうか,確認しておくと良いでしょう。