「起動メソッド情報」の「取得方法」の選択について

MZ Platformとは 掲示板 MZプラットフォームユーザー会掲示板 「起動メソッド情報」の「取得方法」の選択について

5 件の投稿を閲覧中 - 1 ~ 5 件(全 5 件)
  • 著者
    投稿
  • #7020
    TENTEN
    一般参加者

    お世話になります。 「起動メソッド情報」の「取得方法」の選択について確認させてください。

    https://ssl.monozukuri.org/mzplatform/faq/faq/faq_technical/tutorial/basic/basic_a2.html
    にも同様の質問がありましたが、私も「取得方法」のどれを選べば正解なのか苦慮しています。
    「固定値」「メソッド戻り値」はイメージできましたが、残り4つはアプリケーションビルダー操作説明書 9Pを読んでもピンと来ません。

    回答の『重要なのは、引数として与えるデータをどこから手に入れるかということですが、その方法が2つ以上ある場合には、どれを選んでも差し支えございません』は、その通りなのですが、それには6つある候補のどれが「その方法」に該当するのかを理解しないと判断できないはずです。
    MZを作成されたスタッフの方であれば中の動作から直感的にリンクできるのかもしれませんが、中身が見えないユーザーには難しいです。
    チュートリアルやサンプルを多く解いて慣れれば分かる様になるのかもしれませんが、それだと時間が掛かり過ぎてしまいます。

    前置きが長くなりましたが、コンポーネントリファレンスから「取得方法」を知る手段があれば教えてください。
    「イベント番号/発生条件/内包データ」の右から2つめに書かれてある語句が鍵になるのではと考えていますが、対応が良くわかっていません。

    #7022
    MZPlatformユーザー会
    サイト管理者

    お問い合わせありがとうございます。

    残り4つのうち使用頻度が高い引数の取得方法は「メソッド処理結果」と「イベント内包」です。
    1)「メソッド処理結果」は、同じ発生イベントに繋がる、実行済みの処理の戻り値を引数として取得できます。
    例えば、『[テーブル]のセルの値を取得して、[テキストフィールド]に表示したい』場合、先にセルの値の取得の処理が必要になります。
    「取得方法:メソッド戻り値」では引数を要しないメソッド(例:テキストを取得する getText()など()の中が空欄)の戻り値は取得できますが、メソッド「指定セルの値を取得する getValueAt(int,int)」は引数を必要とするため、先に処理を実行しその戻り値をメソッド処理結果として利用します。
    ——●——[テーブル 指定セルの値を取得する(int,int)」
        ——[テキストフィールド テキストを設定する(String) 取得方法:メソッド処理結果]

    なお、先に処理が完了していても同じイベントの接続先でなければ、戻り値をメソッド処理結果として取得できません。
    また、「取得方法:メソッド戻り値」で取得できる値も先に処理を実行し、メソッド処理結果として利用することもできます。

    (2)「イベント内包」について詳しくは、コンポーネントリファレンスまたはJavadocのページ上部の記載をご覧ください。
    [テーブル]コンポーネントを例にご説明します。
    [テーブル]コンポーネントから発生するイベントは、データ設定イベント、データ更新イベントなどがあります。コンポーネントリファレンスでは「発生条件」、Javadocでは「トリガ」の項にイベントが発生するきっかけが記載されています。コンポーネントリファレンスの「内包データ」、Javadocでは「トリガ」項の右側にある項にイベント内包データの内容が説明されています。

    例えば、データ設定イベントは[テーブル]にデータが設定されたときに発生し、接続先コンポーネントの引数設定で「取得方法:イベント内包、メソッド/値:イベント対象データ」とすると「設定されたテーブルデータ」が引数として利用できることを示しています。

    データ設定ベントでは、内包データは「イベント対象データ」1つですが、データ更新イベントでは「イベント対象データ(更新後のテーブルデータ)」と「更新データ(更新箇所のデータ)」の2種類です。マウスイベントでは内包データはマウスのX座標、Y座標です。

    どんなデータが取得できるかリファレンスを確認していただく手間をお掛けしますが、イベント発生のタイミングで処理が行われ、データが取得できるという利点があります。引数設定時に「イベント内包データ選択」窓で、内包データの簡単な説明を確認することができます。

    (3)「取得方法:コンポーネント」はコンポーネントそのものを指定するもので、引数の型に(Component)と示されている場合に使用します。[帳票]プレビューやダイアログ類を表示するときに位置基準となるコンポーネントを指定したり、[フレーム]などにメソッドでコンポーネントを追加するときなどに使います。

    (4)「取得方法:イベント」はイベントそのものを指定するもので、引数の型として(PFEvent)と示されています。複合コンポーネント内で発生したイベントを上位階層で利用したいときに複合コンポーネントのメソッド「イベントを伝播させる」を接続先メソッドとしますが、そのとき引数の取得方法としてイベントを指定する使い方が一番多いです。

    以上、ご不明な点がございましたら、再度ご連絡いただければ幸いです。
    どうぞよろしくお願い申し上げます。

    #7025
    TENTEN
    一般参加者

    ご回答ありがとうございました。

    ようやく各々の性格が理解できました。

    「メソッド処理結果」についてもう1点教えてください。

    現在、DBを扱うアプリケーションを作成していて「テーブル」コンポーネントと連携させています。

    テーブルのセルの文字列を取り出したい要件があり、試験的に「ボタン」の文字列に反映させてみる事にしました。

    「接続先コンポーネント:ボタン」「取得方法:メソッド戻り値」「メソッド/値:指定セルの表示文字列を取得する」にしようとしたところ、「メソッド選択」リストボックスには12種類しか表示されず、「指定セルの表示文字列を取得する」もありませんでした。
    全部で54あるメソッドの大半が見えない結果となっています。

    接続先コンポーネントを「テーブル」すると54個見えるのですが、今度は文字列を与えたいコンポーネント(ボタン)が指定できません。
    「指定セルの表示文字列を取得する」メソッドを実行させ、「接続先コンポーネント:ボタン」「取得方法:メソッド処理結果」で回収できたのですが、釈然としません。

    なぜ「接続先コンポーネント:ボタン」「取得方法:メソッド戻り値」「メソッド/値:指定セルの表示文字列を取得する」が選べないのでしょう。

    #7028
    MZPlatformユーザー会
    サイト管理者

    ご連絡ありがとうございます。

    引数の設定で、「取得方法:メソッド戻り値」を選択したとき、引数に設定できない型の戻り値を持つメソッドは、完全にではないもののメソッド/値欄に表示される候補から除外されるようになっています。
    例えば[テーブル]「テーブルデータを設定する(PFObjectTable)」の引数に「取得方法:メソッド戻り値」で[テキストフィールド]から「テキストを取得」して設定しようとしても、「テキストを取得する()」はメソッド/値の候補として現れないかと思います。

    [テーブル]のメソッド「指定セルの表示文字列を取得する(int,int)」が、メソッド/値欄の候補に現れない理由は、「取得方法:メソッド戻り値」では戻り値が取得できないメソッド(メソッドの実行に引数(指定行と指定列)が必要)だからです。
    戻り値があるがメソッドの実行に引数が必要なものは、先に実行して「メソッド処理結果」で取得するとお考えください。
    引数が必要のないメソッドの戻り値は「メソッド戻り値」、「メソッド処理結果」どちらも使うことが可能です。

    以上、ご不明な点がございましたら、どうぞ再度ご連絡ください。
    よろしくお願い申し上げます。

    #7032
    TENTEN
    一般参加者

    ご回答ありがとうございます。

    「起動メソッド情報」の「引数」がどこに渡るかを大きく考え違いしていた様です。
    「引数」の行き先は「メソッド」の方で、「メソッド/値」で選んだメソッドではないのは理解していたつもりでしたが、つい後者にも渡せると思い込んでいました。

    両者の違いが完全に理解できました。

5 件の投稿を閲覧中 - 1 ~ 5 件(全 5 件)
  • このトピックに返信するには、ログインしてください。