生成したオブジェクトにコンポーネントを追加する

MZ Platformとは 掲示板 MZプラットフォームユーザー会掲示板 生成したオブジェクトにコンポーネントを追加する

10 件の投稿を閲覧中 - 1 ~ 10 件(全 12 件)
  • 著者
    投稿
  • #6635
    伊予研究会
    一般参加者

    サンプルのタブ.mzaxを参考にしています。
    「タブの追加」ボタンを押した後、新しく生成されたパネルにラベルを追加したい。
    新しく生成されるパネルはID0で追加されます。
    Q1. このパネルのIDを変更することは可能でしょうか。
    Q2. 追加したパネルを指定して、ラベルの追加はできるのでしょうか。
    よろしくお願いいたします。

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

    お問い合せありがとうございます。方法としては2つあります。

    一つは[オブジェクトバッファ]コンポーネントを使う方法です。[オブジェクト生成]で生成したオブジェクトを設定した後、メソッド名を指定して「メソッド起動」を行うことによって、そのコンポーネントクラスのメソッドを実行することができます。例えば[ラベル]コンポーネントを[パネル]に追加する場合には「addComponent」を起動します。
    ただし、[オブジェクト生成]で生成したオブジェクトにはコンポーネントIDは自動的には付きませんので、重複しないIDを付けるには工夫が必要です。またあくまでオブジェクトの扱いですので、IDが0のままでも問題ないということになります。
    サンプルファイルにパネルにラベルを追加する処理等を追加しましたので、ご参考になれば幸いです。

    もう一つは[動的アプリケーション構築]コンポーネントを使う方法です。こちらは「コンポーネントを生成する」と自動的にIDが振られ、アプリケーションビルダー編集画面上に生成したコンポーネントが表示されます。また、生成したコンポーネントへのイベントや起動メソッドの設定も可能です。サンプルの「DynamicApplicationSample.mzax」をどうぞご覧ください。
    コンポーネント追加後上書き保存すると、[オブジェクト生成]で生成したオブジェクトは残りませんが、[動的アプリケーション構築]で生成したコンポーネントは残るのでお気を付けください。

    以上ご検討いただき、ご不明な点がございましたら、再度ご連絡いただければ幸いです。

    #6640
    伊予研究会
    一般参加者

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

     ラベルの他にテキストフィールドなどのコンポーネントも追加したいので、追加したラベルを適切な位置に配置することは可能でしょうか。
     またコンポーネントを追加したタイミングで配置を決めるのであれば、IDが0のままでも問題ありません。

    よろしくお願いいたします。

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

    パネルのメソッド「setContainerLayout(int)」で配置方法を指定し、各コンポーネントのメソッド「setLocation(int,int)」で位置を指定することができます。これを[オブジェクトバッファ]で実行します。

    また、オブジェクトを生成し都度位置を指定しということもできますが、属性の指定やコンポーネントの数が多ければ、雛形の[パネル]または[ラベル]や[テキストフィールド]を用意し、それを複製して追加していくことも考えられると思います。[コンポーネント格納変数]で「コンポーネントの完全な複製を取得する」ことができます。複製したパネルを追加した場合は、終了時に削除しないとエラーが発生しますので、終了時処理を設定してください。

    前回と同様[オブジェクトバッファ」を使ったファイルと[コンポーネント格納変数]を使ったファイルを添付します。[コンポーネント格納変数]でも「起動メソッド名を設定する(String)」、「起動メソッドに引数を追加する(String,Object)」「起動メソッドを実行する()」が可能です。

    ご参考になれば幸いです。ご不明な点がございましたら、どうぞ再度ご連絡ください。

    #6646
    伊予研究会
    一般参加者

    サンプルは大変参考になりました。。
    毎日と、毎週、毎月入力する項目があり、時期が来た時に自動でタブを追加するプログラムを考えておりました。タブ2の雛形パネルの方法を知り、コンポーネントが多い場合こちらの方が適しているようですので採用させていただきます。
    この度は、ありがとうございました。

    #6653
    伊予研究会
    一般参加者

    GUIコンポーネントの場合についてご教示ください。

    タブ改変2にGUIコンポーネント(ID7)を追加しました(ブレイクポイントを入れています)。これにパネルを追加し、その中にコンボボックスを2つ配置しました。
    コンボボックス2つ目の項目を追加したり、設定した項目を取得したいと考えております。
    コンポーネント格納変数まで追加はできたようですが、そのあと公開メソッドとの関係が分かりません。ボタンID6の最後3つのメソッドです(ここにもブレイクポイントを入れています)。

    よろしくお願いいたします。

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

    ご連絡ありがとうございます。
    [複合コンポ―ネント]を使う場合は[コンポーネント格納変数]のメソッド「条件指定で下位のコンポーネントを取得する(String,String)」が便利です。引数1にはクラス名、引数2にはコンポーネントkeyを指定します。[アプリケーション]あるいは[複合コンポーネント]を対象にこのメソッドでコンポーネントオブジェクトが取得できます。

    [コンポーネント格納変数]に目的のコンポーネントを設定すれば、メソッドの公開は必要ありません。また、[コンポーネント格納変数]に複合コンポーネントを設定しメソッドを公開しても、階層下のコンポ―ネントのメソッドは取得できません。

    お送りいただいたファイルを変更してみましたので、ご参考になれば幸いです。

    さて、メソッドの引数の設定や条件指定の際、「String」「int」「boolean」といった基本的な型以外は完全なクラス名で指定しなければならず、引数やコンポーネントのクラス名を知る必要があります。
    C:\MZPlatform\3.6_64\components\index.htmlから『コンポーネントリファレンス』で確認できるのですが、表示する文書がXML形式となっており、以前はブラウザー簡単に表示できたのものの現在GoogleChromeでは表示できず、MicrosoftEdgeで表示するには設定をしなければなりません。
    表示するにはMicrosoftEdgeの「設定」>「既定のブラウザ」>「Internet Explorer モードでサイトの再読み込みを許可」の設定をし、文書を開いた後「Internet Explorerモードで再読み込みする」をクリックします。
    こちらの「e-Gov電子申請」サイト(https://shinsei.e-gov.go.jp/contents/help/faq/document.html)の『Q. Internet Explorerのブラウザ以外で、XMLファイル形式の公文書ファイルを開く方法を教えてください。』がご参考になるかと思います。

    『コンポーネントリファレンス』(index.html)を開いた後、左側のコンポーネント名をクリックすると右側のページにコンポーネントのクラス名や主なメソッドが表示されます。クラス名をクリックするとさらに詳しいメソッドの情報が表示されます。
    文書が開けなかったり、必要な情報が見つからないことの方が多い恐れがありますので、どうぞ必要なメソッドがありましたら、再度ご連絡いただければ幸いです。
    よろしくお願い申し上げます。

    #6660
    伊予研究会
    一般参加者

    大変分かりやすいサンプルをご提示いただき、ありがとうございました。

    コンポーネントのクラスを調べる件について、2点お尋ねします。
    1. C:\MZPlatform\3.6_64\components\index.htmlから開きましたが、左側のコンポーネントをクリックしてリロードすると、添付ファイルのようになります。
    C:\MZPlatform\3.6_64\docs\コンポーネント別記述先ドキュメント対応表.htmlの左側コンポーネントを選択して情報に表示されるクラスと同じでしょうか。

    2. ボタンID9 の上から5番目のイベントに「getComponentList」がありますが、1.で表示される中には見つかりません。これを探す方法はございますでしょうか。

    よろしくお願いいたします。

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

    ご連絡ありがとうございます。
    お送りいただいた画像のような状態になってしまった場合は、もう一度左側のコンポーネント名をクリックしてください。そうすると添付の画像の1番のような表示になるかと思います。
    メソッドを調べる場合にはクラス名をクリックしてください。
    画像2番のような画面が別タブで表示されます。各コンポーネントで使用できるメソッド名は下の方にスクロールすると出てきます(画像3)。詳しく見る場合はメソッド名をクリックします(画像4)。
    以上、お試しいただいても上手く表示されない場合は、どうぞ再度ご連絡ください。

    #6664
    伊予研究会
    一般参加者

    ご回答ありがとうございます。
     Microsoft Edgeの設定も行って試してみましたが、#6660の添付写真から左の枠のコンポーネントをクリックすると、右側の枠が真っ白になります。再読み込みすれば、写真のように戻りました。
     それからgetComponentListはコンポーネントにあると思い違いをしていました。パネルのクラスでした。

    取り急ぎ、ご連絡まで。

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