フォーラムへの返信
-
投稿者投稿
-
MZPlatformユーザー会キーマスター
下記回答になります。サンプルアプリのZIPファイルを添付しますので、展開してビルダーで開きながら説明をご覧ください。
複合コンポーネントの中のイベント処理から上の階層に処理を渡すためには、メソッド起動で複合コンポーネントそのものに接続して、「イベントを伝播させる」か「イベント番号を指定してイベントを伝播させる」を起動します。このとき、引数のイベントは取得方法をイベントにします。
複合コンポーネントの中で上記のようなメソッド起動を作成すると、上の階層で複合コンポーネントのイベント処理追加のメニューにそのイベントが表示されるようになります。あとはそのイベント処理を追加して、必要なメソッド起動を作成します。
複合コンポーネント内部でボタンを複数作成して処理を分けたい場合には、ボタンのアクションイベント処理の中で複合コンポーネントの「イベント番号を指定してイベントを伝播させる」を起動し、ボタンごとにイベント番号を割り当てます。上位階層では複合コンポーネントにアクションイベント処理を追加し、メソッド起動に対してイベント番号を設定することでボタンごとの処理を実現できます。この場合は、アクションイベントとイベント番号の組み合わせで処理を渡すので、文字列等を渡すことはできません。(サンプル中のテスト用1が対応)
もし、ボタンの文字列を上位階層に渡したい場合は、ボタンのアクションイベントから直接上位に渡さずに、イベント生成コンポーネント(処理部品>イベント)を使います。イベント生成はすべてのイベントを生成できるので、どのイベントを使うか迷うかもしれませんが、ここではボタンの文字列をデータ生成イベントで上位に渡すことにします。(サンプル中のテスト用2が対応)
ボタンのアクションイベント処理でイベント生成のメソッド「データ生成イベントの発生」を起動し、引数にボタンの文字列を指定します。上位でイベント番号を用いた分岐が必要であれば、番号も指定します。そして、イベント生成のイベント処理で対応するイベント(ここではデータ生成)を追加して、その中で複合コンポーネントの「イベントを伝播させる」を起動します。メソッド起動で発生させたイベントに対応したイベント処理に接続しないと正常に動作しませんのでご注意ください。あとは上位階層で複合コンポーネントにデータ生成イベント処理を追加して、ご希望のメソッド起動を記述します。イベントに含めたボタン文字列は、メソッド起動の引数でイベント内包のイベント対象データとして利用することが可能です。
説明が長くて複雑ですので、何かご不明な点があればお問い合わせください。
添付ファイル:
MZPlatformユーザー会キーマスター実現したい処理については理解できたと思いますので、回答します。実現方法の選択肢が複数ありまして、すべて説明すると逆に難しそうなので、その中の一例としての紹介になります。
まずは、検索結果のテーブルに対する列幅を指定しようとすると、必要な情報は列幅のリストになります。表示したいテーブルの列数がすべて同じであれば、テーブル名と複数の列幅の値で構成されるテーブルを準備しても良いですが、おそらく各テーブルの列数が異なると思いますので、列幅のリストを複数管理する必要があります。もし、各テーブルと列幅リストの組み合わせを順番で対応して良ければ、列幅リストのリストとして管理しても良いですが、各テーブルの名前と列幅リストの組を管理したければ、マップ格納変数を用いる方法があります。
また、そのようなテーブル名と列幅リストの組をどこに保存するかも選択肢が複数あります。もし、それらを作成する処理をアプリケーション内に記述しておいてよければ、添付ファイルのような記述で実現可能です。参考にしていただき、ご不明な点があればお問い合わせください。
添付ファイル:
MZPlatformユーザー会キーマスター残念ながら、現在はこの形式のCSVファイルからの簡単な分類機能はありません。MZを用いた実現の方針としては、CSVファイルから手作業で分類している作業を、地道にMZアプリ上の処理で置き換えることになります。
例えば、手作業ではこのCSVファイルから開始と終了の時刻はどのように抽出するでしょうか。また、機番別の分類とはどのようにするでしょうか。ガントチャート用データを作成するためには、元のCSVデータから項目名・系列名・開始日時・終了日時の列を持つテーブルデータに変換する必要があります。その作業手順を明確化した上で、それをMZアプリ上の処理として実現可能かをご質問ください。
追加情報としては、エクセル連携のサンプルアプリでは、テーブルデータからガントチャート用データへの変換処理が少々複雑で、ご自身で修正することが難しいと思います。もう少しわかりやすいサンプルとして「グラフ化.mzax」がありますので、こちらもご覧ください。こちらのサンプルでは、テーブルデータからガントチャート用データへの変換に複合コンポーネントを使用して、列名指定での分類をするようになっているので、対象となるテーブルデータと列構成が変わっても、理解と修正がしやすいと思います。
MZPlatformユーザー会キーマスターCSVファイルを読み込んでガントチャートを表示する場合、CSVファイルを読み込んでテーブルに設定して、その後にガントチャート用のテーブルに変換してからガントチャートに設定します。まずはこの手順で処理を作成してみてください。
CSVファイルからの読み込みはサンプルのCSV入出力をご覧ください。テーブルからの変換は基本的に派遣管理そのままで大丈夫です。CSVファイルの内容が元のテーブルと異なる構成であれば何らかの操作が必要となりますが、まずはExcel等を用いた手作業でCSVファイルの構成を派遣管理のテーブルに合わせて、それで動作することを確認してから、テーブル構成の操作についてご質問ください。
MZPlatformユーザー会キーマスター以下の手順でスクロールさせることが可能です。
(1) ガントチャートのバー(タスク)をマウス操作したときに、ガントチャートの「getTaskStart(int,int)」、「getTaskEnd(int,int)」により、操作したタスク(選択したタスク)の開始日時、終了日時を取得。
(2) タスク開始日時<ガントチャート表示開始日時であれば、ガントチャートの表示開始日時をタスク開始日時に設定。
(3) ガントチャート表示終了日時(表示開始日時+表示期間)<タスク終了日時であれば、ガントチャートの表示開始日時を(タスク終了日時-表示期間)に設定。ご参考までにサンプルを用意しましたので、ご覧ください。なお、サンプルでは、(3)での計算回数を減らすため、「表示開始日時<(タスク終了日時-表示期間)」の判定を行っています。
添付ファイル:
MZPlatformユーザー会キーマスターテーブルに記入した数値を取り出して計算に使うことは可能です。以下の方法が比較的簡単かと存じます。
(1) 表からIDを検索したタイミングで数値を取得
(2) 取得した数値を整数格納変数あるいは実数格納変数へ設定
(3) 現在は固定値で数字を書き込んでいる引数を、メソッド戻り値に変更し、(2)で使った格納変数の「数値を取得する」を指定今回の件と直接関係するものではありませんが、任意の数式に数値を代入して計算するためのコンポーネントとして「関数電卓」がございます。サンプルを収録しておりますので、ご参考までにご覧いただければと存じます。
MZPlatformユーザー会キーマスター文字列を改行で区切ってリストにするには、文字列格納変数の「部分文字列のリストを取得する(正規表現による分割)(String)」メソッドが便利です。テキストエリアから取得した文字列を文字列格納変数に設定し、引数を固定値「\n」としてこのメソッドを実行してください。(「\n」は改行文字の正規表現です。)
同様のメソッドとして「部分文字列のリストを取得する(文字列による分割)(String)」がございます。こちらと間違えないようにお気を付けください。
MZPlatformユーザー会キーマスターテキストファイル入力のメソッド「read(String,String)」で文字コード名を指定して読み込むという対処法で良いと思いますが、文字コード名の指定は固定値で「ASCII」、「EUC_JP」、「UTF8」等になります。詳細はJavadocをご覧ください。
file:///C:/MZPlatform/3.6/docs/javadoc/jp/go/aist/dmrc/platform/beans/io/PFTextFileReader.html#read-java.lang.String-java.lang.String-
正しい文字コードを指定すれば成功すると思いますが、もしうまくいかない場合はファイルの一部でも添付していただければこちらでも分析できますので、ご検討ください。
なお、ご指摘のように文字コード名の指定に誤りがあった際のエラー表示も「ファイルがみつかりません」となっているようです。こちらは今後修正を検討します。
MZPlatformユーザー会キーマスターデータソース「てすと」をいったん削除し、改めてチュートリアル4ページの手順に従い、名称も「dispatch」として、データソースの登録をやり直してください。データソース名などに日本語を使うと、予測できないエラーが発生することがあります。チュートリアルの中で、英数字で記載している部分を日本語で置き換えることは避けてください。
MZPlatformユーザー会キーマスターデータソースが正しく登録されていない可能性があります。以下の手順に従い、付属のサンプルアプリケーションを用いて、動作を確認してください。
(1) アプリケーションビルダーを起動
(2) AP_DATA\Tutorial\エクセル連携導入(派遣管理)-1.mzaxをロード
(3) 実行し、[接続]ボタンをクリック同じエラーが出る場合には、データソースが正しく登録されていないと考えられます。
チュートリアル4ページの手順に従って「ODBCデータソースアドミニストレータ」を起動し、「dispatch」が登録されているかどうかご確認ください。(添付ファイル)正常に動作する場合には、原因は他にあることになります。エラーメッセージの他、その後ろのテキストフィールドも見えるように画面のコピーを取ってお送りくださいますようお願いします。
-
投稿者投稿