Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

オーナー・フォームにフォームを置く場合は、実際にはフォームのインスタンスが置かれます(インスタンスの詳細は、「2.2 コンポーネントの基本」を参照してください)。つまり、以下のようになります。

  • WRKEMPには、FRMDETAILの参照だけが含まれます。FRMDETAILを編集するには、エディターでFRMDETAILを開く必要があります。

  • FRMDETAILをスタンド・アロン・フォームとして実行できます(ただしその場合、WRKEMPとは通信できません)。他のアプリケーションの他のフォームにも挿入できます。

  • WRKEMP内部で使用し、イベントのコードを記述すると、FRMDETAILのプロパティを上書きできます。このインスタンスに対する変更では、FRMDETAILコンポーネントそのものは変更されません。

  • FRMDETAILの複数のインスタンスを同時に表示できます。同時に複数の社員の詳細を表示できるようにする場合は、このようにする必要があります。詳細は、この章の後半の「2.14.4 複数のFRMDETAILインスタンスの表示」を参照してください。

複数のフォームの操作

フォームを作成したので、両方をエディターで開き、[アウトライン]タブを使用してフォーム間を移動します。

...

EVTROUTINE HANDLING(#MDetails.Click)
   SET COM(#frmdetail) formowner(#com_owner)
   invoke #frmdetail.ShowForm
    set com(#frmdetail) employee(#empno)
ENDROUTINE

これで現在の社員番号がWRKEMPからFRMDETAILに渡されます。

...

EVTROUTINE HANDLING(#MDetails.Click)
   SET COM(#frmdetail) formowner(#com_owner)
   invoke #frmdetail.ShowForm
   set com(#frmdetail) employee(#empno)
   invoke #frmdetail.GetInfo
ENDROUTINE

4d.OKPressedイベントに対応する

...

FRMDETAILでOKボタンが押されるたびにWRKEMPでGetListサブルーチンが実行されます。

2.14.7 マルチフォーム・アプリケーション例のソース・コードも参照してください。

メソッドについて注意すること

例が完成する前は、フォームがメソッドを呼び出せても何の意味もありません。そのため、OKボタンまたはキャンセルボタンのClickイベントにFRMDETAILのCloseFormメソッドを置くことを選択しました。

...