フォーラムへの返信
-
投稿者投稿
-
MZPlatformユーザー会キーマスター
JARファイルを直接添付できなかったので、圧縮したZIPファイルを添付します。
展開してお使いください。添付ファイル:
MZPlatformユーザー会キーマスター残念ながら、現在はファイルの書き出しでxlsファイルとxlsxファイル以外の形式を指定するとエラーが発生します。ただ、読み込みではxlsmファイルを指定しても正常に読み込まれる状態です。
xlsmファイルを開いた時にxlsmファイルとして書き出しができるようにコンポーネントの処理を修正してみたところ、書き出しには成功しましたが、実際にマクロを含んだファイルで成功するかはまだわかりません。
もし添付のJARファイルを組み込んでテストしていただき、実際のxlsmファイルに書き出してみて問題がないかご確認いただければ、次期バージョンで反映したいと思います。可能であればご協力いただき、結果をお知らせいただけると助かります。
テストの方法は、添付のJARファイルをお使いのMZ Platformインストールフォルダの中にあるjarsフォルダに配置していただき、同じくetcフォルダにあるPlatformClassPath.iniファイルをテキストエディタで編集してファイルの先頭行に「jars/excelfile20170515.jar」を追加します。コンソールありのビルダーやローダーで実行して、この行がコンソールに出力されていれば修正が反映された状態です。修正が反映された状態で所定のアプリケーションを実行し、xlsmファイルを読み込んで書き出し、書き出しができたかどうかをご確認ください。また、そのxlsmファイルがマクロも含めて問題ないことをご確認ください。
以上、お手数をおかけしますが、よろしくお願いします。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の制限ですので、ご容赦ください。
添付ファイル:
-
投稿者投稿