第11回:複合コンポーネントを使おう!

複合コンポーネントの使い方

さて、ここまで SQL 文の「Select」「Insert」「Update」「Delete」と基本的な使い方と MZ のコンポーネントの配置をお伝えした。業務を IT 化する際は受注情報や出荷情報、購買手配や入荷処理など、データを登録したり編集したり、参照する事がほとんである。つまりここまでお伝えした事が理解出来ていればシステム構築はこれらの応用であると想像がつくだろう。それは市販のソフトも変わらない。現時点では SelectDelete まで、4つの保存ファイルがある。これらを好きな時に参照して応用出来る様にするのが「複合コンポーネント」である。

この技法のメリット

  • いちいち MZ のコンポーネントを配列して作らなくて良くなる(コピペして運用が可能)
  • Update ファイルが良い例だが、プログラムがダラダラと長い。スッキリ短く構築する事が出来る様になる
  • 視認性が上がり、将来的に修正やバグ取りが楽

今までの作り方は図の様なイメージで一つの階層にコンポーネントがずーっと並ぶ、この為ダラダラと長く構成されてしまう。一方、複合コンポーネントの作り方は一つ下の階層でプログラムを展開するイメージとなり、起点となるコンポーネントだけが上層に存在するやり方で修正が行いやすくなる。

1:MZビルダーを起動し以前作成した「Select.mzax」をロード

2:プログラムの為にコンポーネント用意およびメソッドの設定する。

① コンポーネント追加⇒画面構成部品 ⇒ ボタン ⇒ ボタン追加

② 複合コンポーネント作成 ⇒ コンポーネント追加

③ 複合コンポーネント上でダブルクリック階層の中へ入る(黄色の背景が緑へ変わる)

④ ビルダー上の下側にあるボタン「挿入」を押し「Insert.mzax」選択

⑤ コンポーネント追加⇒処理部品⇒サブルーチン⇒ファンクション追加

⑥ ファンクションコンポーネントをドラッグ&ドロップで一番上へ(正確には複合コンポーネントの次にファンクションとなる)

⑦ ファンクションからイベント追加「処理要求イベント⇒フレームを選択。「フレーム」メソッド設定、メソッド「フレームを表示する()」

⑧ フレームから出ているアクションイベントは削除する

⑨ 左上複合コンポーネント ⇒ 右クリック ⇒ 公開メソッド設定 ⇒ ファンクションへ合わせ右クリック ⇒ 公開メソッド設定 ⇒ ファンクションの呼び出し(0引数)()をダブルクリック、公開メソッド一覧へ移動したら設定



⑩階層を一つ上へ上がる

⑪イベント設定。ボタン⇒アクションイベント⇒複合コンポーネント。「複合コンポーネント」メソッド設定、メソッド「ファンクションの呼び出し(0引数)()

⑫画面編集でボタンコンポーネントを追加し、<ボタン>の名前を「登録」へ変更する

3:動作チェック。実行ボタンを押して画面ボタン(登録)ボタンを押すと以前作成した「Insert」実行画面が現れる。任意でデータを登録し開始ボタンを押すとデータが増える事を再確認する事

4:続いて「Update」実行画面を連結する

①ボタンコンポーネントとリスト格納変数と複合コンポーネントを一つずつ追加(画面編集でボタンを設置する事、名前は<更新>)

②作成した複合コンポーネントの中へ入る

 

③今度は「Update.mzax」ファイルを挿入する

④コンポーネント追加⇒処理部品⇒サブルーチン⇒ファンクション追加、コンポーネントを一番上に移動する

⑤ファンクションからイベント追加「処理要求イベント」⇒赤玉を出す。スグ下にあるテーブルより連なっている「データ選択イベント」にカーソルを合わせ、右クリック⇒「切り取り」を選択。ファンクションから先ほど出した赤玉上で右クリック⇒「貼り付け」を実施。リスト格納~テキストフィールドまでが移行される。

⑥その下にフレームコンポーネントを繋げて、メソッド「フレームを表示する」を設定

⑦リスト格納変数の「リストを設定する」のメソッドを変更。コンポーネント:テーブルからファンクションへ、メソッド/値:第1引数の取得

⑧コピーが終わったので不要なコンポーネントは削除(ボタン・テーブル・テーブル格納変数)

⑨フレームから出ているアクションイベントは削除

⑩公開メソッド設定でファンクションの呼び出し(1引数)(Object)を設定

⑪階層を上がり、イベント設定。ボタン(更新)⇒ アクションイベント ⇒ リスト格納変数メソッド:リストを設定する(PFObjectList)取得方法:メソッド戻り値 コンポーネント:テーブル メソッド/値:getSelectedData

⑫リスト格納変数の下に複合コンポーネントを繋げるメソッド:ファンクションの呼び出し(1引数)取得方法:メソッド戻り値 コンポーネント:リスト格納変数 メソッド/値:リストを取得する

Update の複合コンポーネントの繋いだ様子(⑥と⑦に該当)

5:動作チェック。実行ボタンを押して画面上のテーブルデータを選択し、(更新)ボタンを押すと以前作成した「Update」実行画面が現れる。試しに任意のデータを書き換えて開始ボタンを押すと情報が更新される事を再確認する事

6:最後に「Delete」実行画面を連結する

① ボタンコンポーネントとリスト格納変数と複合コンポーネントを一つずつ追加(画面編集でボタンを設置する事、名前は<削除>)

② 作成した複合コンポーネントの中へ入る

③ 今度は「Delete.mzax」ファイルを挿入する

④ コンポーネント追加 ⇒ 処理部品 ⇒ サブルーチン ⇒ ファンクション追加、コンポーネントを一番上に移動する

⑤ ファンクションから「処理要求イベント」を出し、4「Update」同様、テーブルより連なるコンポーネントを「切り取り」ファンクションへ「貼り付け」を実施。リスト格納~文字列格納変数までが移行される。

⑥ 今度はその下にボタンコンポーネントに連なる「データベースアクセス」以降を全て「切り取り」⑤で実施した「文字列格納変数」の下へ貼り付け」実施

⑦ リスト格納変数の「リストを設定する」のメソッドを変更。コンポーネント:テーブルからファンクションへ、メソッド/値:第1引数の取得

⑧ 同じく不要なコンポーネントは削除(フレーム・ボタン・テーブル・テーブル格納変数)

⑨ フレームから出ているアクションイベントは削除

⑩ 公開メソッド設定でファンクションの呼び出し(

1引数)(Object)を設定

⑪ 階層を上がり、イベント設定。ボタン(削除)⇒ アクションイベント ⇒ リスト格納変数メソッド:リストを設定する(PFObjectList) 取得方法:メソッド戻り値 コンポーネント:テーブル メソッド/値:getSelectedData

⑫ リスト格納変数の下に複合コンポーネントを繋げるメソッド:ファンクションの呼び出し(1引数) 取得方法:メソッド戻り値 コンポーネント:リスト格納変数 メソッド/値:リストを取得する

まとめ

 

複合コンポーネントのプログラム仕方は理解出来ただろうか?今まで長く書いていた内容が同じプログラムでも14行程度で実施出来ている事が認識出来るだろう。将来的には複雑なシステムが構築出来るがそれに伴い、社内で改善や修正が出て来る。その時に製作した当人が理解し易い様にプログラムする事が大切である。ボタンを押した後の処理を複合コンポーネントの中で実施する事により、莫大なシステムだったとしても認識し易く、後々自分が楽になるのでこの方法はマスターして欲しい。今回作成したプログラムは保存して「staff.mzax」ファイルとして認識出来る様にして欲しい。