作成した返信
-
著者投稿
-
MZPlatformユーザー会サイト管理者
引数を指定する場合は、通信先プログラムを設定するときの文字列に含めてお試しください。
実行位置の指定については、日本語化されていないメソッドとなりますが「startProgram(boolean,PFObjectList,String)」を用いて、startProgram(true,null,実行位置のパス)と指定します。日本語化されていないメソッドは、起動メソッド情報のダイアログで「全メソッド対象」をチェックすると選択可能です。このメソッドの詳細については、付属のJavadocでPFExternalProgramIFの項目をご覧ください。参考までに、外部プログラム通信を用いてコマンドを実行して結果を表示するサンプルの圧縮ファイルを添付します。
なお、外部プログラムを起動する場合は、お使いの環境と対象とするプログラムによって、正常に動作する場合とそうでない場合がございますので、動作しない場合はお手数ですが指定方法を変えてお試しください。
添付ファイル:
MZPlatformユーザー会サイト管理者補足させていただきます.検討の結果,次回バージョンアップ時に,カレンダーコンポーネントに年内の週番号を取得するメソッド等を追加することといたしました.次回リリースは秋を予定しております.
MZPlatformユーザー会サイト管理者はじめに,大変申し訳ございませんが,「こういうことをしたいのだけど,アルゴリズム=計算手順を教えてください」という質問(一般的ではない処理の作成)にはお答えすることが難しいですので,次回よりお願い致します.例えば「このような計算手順を考えたが,どのコンポーネントまたはメソッドを使えばよいか」「このような処理を作成したがエラーが発生してしまう」と言った質問にはお答えします.少ない人数で対応しておりますので,ご協力をお願い致します.
ご質問の大体の処理はカレンダーコンポーネントを使用することにより実行可能です.
まず,年数の下二桁は,カレンダコンポーネントのメソッド「書式指定によるカレンダー文字列表現の取得」に書式「yy」を指定して実行しますと取得できます.
また,ある曜日の日番号はメソッド「getDayOfWeek」を用いることにより取得できます.
問題の週番号ですが,次のような計算になろうかと思います(間違いがあるかもしれません)
(週番号を知りたい日付+1/1の日番号-1日) – 同年1月1日)/7 +1
この計算手順に従って,カレンダーコンポーネントを用いて日数の計算を行います.上の計算手順での7での割り算は小数点以下切り捨てを想定しておりますが,「除算」コンポーネントでは四捨五入となってしまいますため,「整数(BigInteger)格納変数」に一旦日数を設定し,メソッド「divideThenReplace」を用いて割りますと切り捨てになります.
ご参考のため,当方で作成したアプリケーションを添付いたします.添付ファイル:
MZPlatformユーザー会サイト管理者関連ファイルをダウンロードしてPC上に保存していただき、それからビルダーで開いていただきます。
ご使用のWebブラウザによって多少動作が異なるかもしれませんが、関連ファイルの名前のところをクリックしていただくか、右クリックでメニューを表示するとファイルを保存することができると思いますので、お試しください。
MZPlatformユーザー会サイト管理者テーブルの行ヘッダの開始番号は属性RowHeaderStartDisplayNumberにより設定可能です.設定には,はじめに,アプリケーションビルダーのテーブルコンポーネント上でマウス右クリックし「属性情報設定…」を選択します.表示されたコンポーネント属性情報設定画面で,RowHeaderStartDisplayNumberの欄に1と設定してください.
MZPlatformユーザー会サイト管理者コンボボックスからのイベント発生の件,イベント伝播制御コンポーネントを用いて,イベントの伝播を制御することにより対応可能です.お送りいただいたアプリケーションデータでは,コンボボックスのデータ選択イベントにファンクションコンポーネントが直接接続されておりますが,これら二つのコンポーネントの間に,イベント伝播制御コンポーネントを挿入します.コンボボックスのデータ選択イベントにイベント伝播制御の「受け取ったイベントを発生させる」を定義し,イベント伝播制御のデータ選択イベントに,ファンクションのメソッドを定義します.テキストフィールドのアクションイベント発生時に,イベント伝播制御の「イベント伝播無視モードを設定する」を引数にtrueを設定して実行することにより,コンボボックスからのイベントはイベント伝播制御から伝播しなくなります.処理実行後,同メソッドにfalseを設定して実行することにより,元に戻りイベントが伝播するようになります.詳細は添付のサンプルをご確認ください.
テキストフィールドコンポーネント上でマウスで左ボタンクリックした時には編集状態になり,マウスボタンイベントが発生しません.そのため,大変申し訳ございませんが,現状では左クリック押下のイベントは取得できません.添付ファイル:
MZPlatformユーザー会サイト管理者試してみましたが、こちらではメモリ使用量が増えるという現象は確認できませんでした。
一方で、添付していただいた作成方法でご希望の処理が実現できないのは確かです。
タイマーでも難しいかもしれません。スレッドアロケータを用いたサンプルを添付しますので、この方法で実現できそうかお試しください。
添付ファイル:
MZPlatformユーザー会サイト管理者拡張用のJARファイルとサンプルアプリをまとめたZIPファイルを添付します。
ZIPファイルを展開すると中にJARファイルがありますので、MZのインストールフォルダの下にあるjarsフォルダに配置してください。また、同じくetcフォルダにあるPlatformClassPath.iniをテキストエディタで開いて、先頭行にjars/file20170330.jarと記入して保存してください。それからビルダーを起動して、一緒に含まれているMZアプリを開いてください。上記の作業で誤りがあると、エラーが表示されると思います。
拡張パッチ適用後のビルダー画面でサンプルアプリを開くと、ファイル属性表示のサブルーチンの処理中に、ファイルコンポーネントのgetCreated()メソッドを起動しているところがあります。このメソッドが追加したものです。実際に取得できるかどうか、このMZアプリを実行して、ファイルを選択してみてください。なお、OSによっては作成日時が取得できない場合があるそうですが、その場合はOSとJavaの制限ですので、ご容赦ください。
添付ファイル:
MZPlatformユーザー会サイト管理者解決したのであればよかったです。
ところで、やはり表現に問題があると思うのですが、今回の問題がJDBCと関係ないということはないでしょう。MZはJDBCでOracleに接続しますので、JDBCでの接続方法としてはご報告いただいた内容を設定する必要があったということになります。
もし可能であれば、MZのサンプルアプリでどのように設定したら接続できたか、どのように設定すると失敗したかのご報告をいただければ、他の方々が同様な問題に直面した時に参考になるので助かります。
MZPlatformユーザー会サイト管理者補足ですが、この掲示板に記入したSQL文をコピーペーストして使用すると、シングルクオーテーションが全角文字になってしまって実行時にエラーとなるので、半角に修正してお使いください。
-
著者投稿