フォーラムへの返信
-
投稿者投稿
-
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)を開いた後、左側のコンポーネント名をクリックすると右側のページにコンポーネントのクラス名や主なメソッドが表示されます。クラス名をクリックするとさらに詳しいメソッドの情報が表示されます。
文書が開けなかったり、必要な情報が見つからないことの方が多い恐れがありますので、どうぞ必要なメソッドがありましたら、再度ご連絡いただければ幸いです。
よろしくお願い申し上げます。MZPlatformユーザー会キーマスターまずは1について、2021年8月31日版のツールキットを前提に説明いたします。
MZ講習資料IoTエッジ編のPDFの中で、P.24-25に入出力テーブルの説明があります。ここでD2ピンがINPUTとなっていることでデジタル入力のモードとなっていますので、D3とD4を手動で同様の状態にしてお試しください。
動作が確認できた後、起動時にその状態に設定したい場合には、P.76の設定ファイルに所定の記載をすることで可能ですので、設定ファイルmzapp.iniもご確認ください。
2と3についてはもう少し詳細をご説明いただかないと回答ができない感じですので、実現したい内容についてご説明いただけますでしょうか。
4はチャタリングかもしれません。そうであれば一般的な電子回路の話なので、こちらでもあまり十分な対応ができません。もし社内に詳しい方がいるようであれば相談した方が良いかもしれません。
MZPlatformユーザー会キーマスターお問い合わせありがとうございます。
[ファイルコンポーネント]のメソッド
「getAllFileNames(String)」または「getSubFileNames(String)」をお使いください。
引数に正規表現を使えます。
「getSubFileNames(String)」の方は直下のファイル名のみ取得し、サブディレクトリの中は取得しません。「getAllFileNames(String)」はサブディレクトリ内のファイル名も取得します。戻り値はリスト型です。ファイル名は絶対パスで取得されます。また、以下の注意点があります。
返却値にディレクトリは含みません。パス名がディレクトリを示さない場合、nullを返します。 配下にファイルが存在しない場合は、空の配列を返します。 正規表現がnullもしくは空文字列の場合はすべてのファイルを返します。戻り値のリストの要素がFileオブジェクトになる「getAllFiles(String)」、「getSubFiles(String)」もあります。
動作確認のため、簡単なサンプルファイルを添付いたしますので、ご参考になれば幸いです。
MZPlatformユーザー会キーマスターご不便をお掛けしております。
ご報告いただいた状況ですが、現在のところ手元で再現できておりません。他のユーザー様からのご報告も今までありませんでした。
保存ダイアログを使用するとき、MZに限らず他のアプリケーションでも、ファイル表示領域の部分をクリックするとフォーカスはファイル名入力フィールドから失われてしまいますが、マウスクリックで再度フォーカスが戻り入力キャレットが表示されます。
また、IMEとの兼ね合いで、入力小窓が別な場所に出てしまい目的の場所に入力できないこともありますが、小窓が表示されることで気づくかと思います。お手隙の際で結構なので、以下の点をご連絡いただけないでしょうか。大変お手数をお掛けして申し訳ございません。
(1)特定のPCのみで発生するか、複数のPCで発生しているか
(2)OS(例:Windows10pro)、MZplatformのバージョン(例3.6_64)
(3)MZアプリ内でフォーカスに関する処理や属性の設定をしているかどうか
(4)不具合発生後にマウスでクリックしたとき、そのフォームにフォーカスは戻っているか
(フォームにフォーカスがある時と無い時で、タイトルバーの色は変わります)
(5)長く(10分ほど)待てば入力できるようになったことはあるか大変ご不便をお掛けいたしますが、どうぞよろしくお願い申し上げます。
MZPlatformユーザー会キーマスターパネルのメソッド「setContainerLayout(int)」で配置方法を指定し、各コンポーネントのメソッド「setLocation(int,int)」で位置を指定することができます。これを[オブジェクトバッファ]で実行します。
また、オブジェクトを生成し都度位置を指定しということもできますが、属性の指定やコンポーネントの数が多ければ、雛形の[パネル]または[ラベル]や[テキストフィールド]を用意し、それを複製して追加していくことも考えられると思います。[コンポーネント格納変数]で「コンポーネントの完全な複製を取得する」ことができます。複製したパネルを追加した場合は、終了時に削除しないとエラーが発生しますので、終了時処理を設定してください。
前回と同様[オブジェクトバッファ」を使ったファイルと[コンポーネント格納変数]を使ったファイルを添付します。[コンポーネント格納変数]でも「起動メソッド名を設定する(String)」、「起動メソッドに引数を追加する(String,Object)」「起動メソッドを実行する()」が可能です。
ご参考になれば幸いです。ご不明な点がございましたら、どうぞ再度ご連絡ください。
MZPlatformユーザー会キーマスター方法は複数あると思いますが、一つはスマート製造ツールキットのIoTエッジ編の機能を用いる方法が考えられます。
本サイトの会員専用ダウンロードページから、
「MZ Platform IoT Toolkit (スマート製造ツールキット/MZ-EX/IoT化用コンテンツ集)」
のZIPファイルをダウンロードし、展開して内容を確認していただけますでしょうか。その中のedgeフォルダにIoTエッジ編の講習資料PDFとサンプルアプリが含まれています。
この内容を試すには自前でArduino等をご準備いただく必要がありますが、サンプルアプリのIoTEdgeAppを起動してArduinoと接続すれば、デジタル入力を取り込むことは可能です。また、デジタル入力の状態変化を適切にルール設定すれば、その結果をデータベースに保存することも可能です。ご不明な点があれば再度お問い合わせください。
MZPlatformユーザー会キーマスターお問い合わせありがとうございます。
確認させていただきたいのですが、[フレーム]や[ダイアログ]等のウインドウを複数使っていて、一方のウインドウを閉じた後で、他のウィンドウの[テキストフィールド]に関して不具合が発生しますか。
それとも、一つのフレーム上で起こる現象でしょうか。また、入力不可になっている状態ではフォーカスは当たっていないかと推測しますが、マウスでクリックすればフォーカスが戻る状況でしょうか。それとも、入力不可になった後は解消することはできないでしょうか。
お気づきの点をもう少し詳しくお聞かせいただければ幸いです。
どうぞよろしくお願いいたします。MZPlatformユーザー会キーマスターお問い合せありがとうございます。方法としては2つあります。
一つは[オブジェクトバッファ]コンポーネントを使う方法です。[オブジェクト生成]で生成したオブジェクトを設定した後、メソッド名を指定して「メソッド起動」を行うことによって、そのコンポーネントクラスのメソッドを実行することができます。例えば[ラベル]コンポーネントを[パネル]に追加する場合には「addComponent」を起動します。
ただし、[オブジェクト生成]で生成したオブジェクトにはコンポーネントIDは自動的には付きませんので、重複しないIDを付けるには工夫が必要です。またあくまでオブジェクトの扱いですので、IDが0のままでも問題ないということになります。
サンプルファイルにパネルにラベルを追加する処理等を追加しましたので、ご参考になれば幸いです。もう一つは[動的アプリケーション構築]コンポーネントを使う方法です。こちらは「コンポーネントを生成する」と自動的にIDが振られ、アプリケーションビルダー編集画面上に生成したコンポーネントが表示されます。また、生成したコンポーネントへのイベントや起動メソッドの設定も可能です。サンプルの「DynamicApplicationSample.mzax」をどうぞご覧ください。
コンポーネント追加後上書き保存すると、[オブジェクト生成]で生成したオブジェクトは残りませんが、[動的アプリケーション構築]で生成したコンポーネントは残るのでお気を付けください。以上ご検討いただき、ご不明な点がございましたら、再度ご連絡いただければ幸いです。
MZPlatformユーザー会キーマスターお問い合せありがとうございます。
Bの方のアプリケーションでは、演算子のボタンを押したタイミングで表示が「0」になってしまいます。演算子のボタンを押すと複合コンポーネントの公開メソッド「××押下処理を呼び出す()」が実行されます.これは[××押下サブルーチン]のアクションイベントが発生し、[算術演算子格納変数]に「演算子を設定する」処理です.
[算術演算子格納変数(ID:33-21)]に「演算子を設定する」処理が行われると、データ設定イベントが発生し、処理が呼び出されますが、今回はこのデータ設定イベントに[KEY:初期化サブルーチン(ID:33-24)]が接続されていたため、「0」になっていました。正しくは[KEY:演算実行サブルーチン(ID33:23)]を接続します。今回はエラーが出ている訳ではないので、『デバッガー』を使っても見つけにくいかと思いますが、怪しい箇所、例えば「××押下処理を呼び出す()」の処理にブレークポイントを設定すると、
段階を追って確認することができます。デバッガーの詳しい使い方については\MZPlatform\3.6_64\docs\manualフォルダの中の『デバッガ操作説明書』をご覧ください。また、右側の接続先コンポーネント上で右クリックし、「接続コンポーネント宣言位置検索」を選ぶと、起動メソッドを 呼び出されている コンポーネントの宣言位置を検索して表示されます。左側コンポーネント上で右クリックして「メソッド起動位置検索」を選ぶと、一覧となってそのコンポーネントのメソッド起動の情報が表示されます。
以上ご参考になれば幸いです。ご不明な点等ございましたら、どうぞ再度ご連絡ください。
MZPlatformユーザー会キーマスターお問い合わせありがとうございます。
[CSV出力]コンポーネントの「属性情報設定」画面を開くと、「Header Enabled」の項目があります。この項目の「true/false」を切り替えることによって、列ヘッダーを出力するかどうか設定することができます。また、メソッド「setHeaderEnabled(boolean)」でも設定が可能です。
以上、ご不明な点がございましたら、再度ご連絡ください。 -
投稿者投稿