フォーラムへの返信
-
投稿者投稿
-
MZPlatformユーザー会キーマスター
ご連絡ありがとうございます。
ご不便をお掛けいたしますが、Tabキーもやはりフォーカス移動等の役割があるため、ショートカットの設定ができません。また、[テーブル]にフォーカスがあると、フォーカスがテーブル内のオブジェクトに取られてしまい、ショートカットが効かなくなってしまいます。次善の策となりますが、ダイアログ内に他にフォーカスが当たるコンポーネントを配置し、「Ctrl+Tab」キーを押すと、テーブル外にフォーカスが移動します。「Ctrl+Tab」を押してもイベントは発生しませんが、添付したファイルでは[ボタン]と[タイマー]を使い、一定の間隔で[ボタン]がフォーカスを持っているか状態をチェックし、処理を行っています。
ご検討いただき、要望、ご質問等ございましたら、再度ご連絡いただければ幸いです。
よろしくお願い申し上げます。添付ファイル:
MZPlatformユーザー会キーマスターお問い合わせありがとうございます。
申し訳ございませんが、XML形式のファイルをアップロードするとエラーとなってしまいます。
お手数ですが、ZIPファイル形式に一旦圧縮してアップロードしてください。取り急ぎ、考えられることをご説明いたします。
まず、Enterキーには既に役割が割り当てられており、[キーイベントハンドラー]でショートカットを設定することができません。ご不便をお掛けいたしますが、他のキーを使っていただくことになります。また、他のキーを使った場合でも、セルが青く選択された状態でキーを押すと、セルが編集可のときは編集状態になり、値が上手く設定できない可能性があります。セルが編集不可ならばキーを押しても編集状態にはなりませんが、ずっと編集不可では困る場合は「setCellEditable(boolean)」「setAllEditable(boolean)」等を使って、何らかのタイミングで編集可否を切り替える必要があります。
以上ご検討いただき、ご不明な点を再度お問い合せ頂ければ幸いです。
よろしくお願い申し上げます。MZPlatformユーザー会キーマスターお問い合わせありがとうございます。
画面のサイズは[システム情報]のメソッド「画面サイズを取得する()」で取得することができますが、取得されるのは「1280×1024」といった解像度です。タブレットの場合PCよりも小さく表示されるということですが、タブレットの解像度はPCと同じか少し高いぐらいであまり違いがない可能性があります。[フレーム]等各コンポーネントのサイズを変更するのはメソッド「setPreferredSize(Dimension)」で指定することにより可能ですが、文字の大きさなどは別途変える必要があります。また、手動配置の場合は自動で位置調整されません。
画面配置方法を「領域配置」にし、コンポーネントを「center」配置すると、フレームをドラッグして自由に大きさを変更することができます。領域配置で複雑な配置はお勧めしないのですが、特にグラフや画像などを大きくして見たいというときには有効かと思います。[帳票]の印刷プレビュー画面については、大変ご不便をお掛けいたしますが、現在のところボタンの大きさ等を変更することはできません。
一番考えられるのは、差し支えない範囲でタブレットの解像度を下げるか、WindowsOSの場合ディスプレイ設定で「テキスト、アプリ、その他の項目のサイズを変更する」で表示スケールを大きくすることです。手元のPCでは推奨よりもう一段階上のサイズに表示スケールを変更することができました(カスタム比率もできますが推奨されていません)。以上ご検討いただき、ご要望、ご不明な点がございましたら、再度ご連絡くだされば幸いです。
念のためフレームのサイズを変更するサンプルファイルを添付いたします。添付ファイル:
MZPlatformユーザー会キーマスターお問い合せありがとうございます。
[発注依頼]の複合コンポーネントの中に、「画面表示用」と「登録用」の2つのテーブルを作りますが、列名をアルファベットから日本語名に変更するのは「画面表示用」だけで、「登録用」はデータベーステーブルの列名のままにしておきます。P92 までで設定していただいた処理では、「登録」ボタンを押したタイミングで、「画面表示用」のテーブルの行データを「登録用」のテーブルの行にコピーし、データ更新イベントを発生させます。
上位階層の[発注依頼]複合コンポーネントの接続処理の「指定したテーブルに複数行を一括追加する(String,PFObjectTable)」というメソッドは、第一引数にデータベース内のテーブル名を指定し、データベーステーブルの列名と第二引数に設定したテーブルデータの列名が一致した場合データを追加します。
一致する列名が無い場合は空データが追加される結果となります。この部分は少し判りにくくご不便をお掛けいたしますが、ご不明な点がございましたら、再度ご連絡ください。
MZPlatformユーザー会キーマスターお問い合わせありがとうございます。
[ファイル選択]を使わない場合は、ファイルやフォルダの操作ができる[ファイル]コンポーネントを使うと便利かと思います。フォルダ内のファイルのリストも取得可能です。
また、[外部プログラム通信]のメソッド「標準のアプリケーションでファイルを開く(file)」を使うと、PDFも画像もWindows内で関連付けられているアプリケーションで簡単に開くことができます。動作確認のため、サンプルファイルを作成しましたので、ご参考になれば幸いです。
リストをクリックするとファイルが開きます。
画像のときは標準アプリケーションで開かず[イメージビューワー]に設定したい場合は、条件が少し複雑になるので2つのファイルにファイルに分けてあります。
カレントディレクトリは「C:\MZPlatform\3.6_64\docs\tutorial」に設定しています。環境に合わせてご変更ください。ご検討いただき、ご不明な点、ご要望等ございましたら、再度ご連絡いただければ幸いです。
どうぞよろしくお願い申し上げます。MZPlatformユーザー会キーマスターお問い合わせありがとうございます。
(1)[テーブル]から発生するイベントのタイミングはコントロールすることができませんが、マウスプレスした時点でのセル位置は、マウスイベントに内包されるX座標、Y座標を使って知ることができます。[テーブル]のメソッド「getRowIndexByLocationY(int)」と「getRowIndexByLocationX(int)」でセル位置を指定し、指定セルの値を取得することができます。(2)しかし、MZPlatformの[テーブル]には現在のところドロップ機能がありません。
また、マウスクリックが起こったテーブルAから外に出てマウスリリースすると、イベントが取得されないようです。したがって、テーブルBでマウスリリースした位置を知ることは、現在のところ難しいです。念のため(1)のみ処理を追加したファイルを添付いたします。
テーブルAのセルをクリックした後、テーブルBのセルをクリックすると値がペーストされます。しかし、これはマウスイベントを使わなくても実現できるかと思います。他に良い方法があれば、再度ご連絡いたしますが、もしテーブルAの内容が多くなければ、テーブルBの列にテーブルAのデータを選択リストとして設定して、選択できるようにすることも考えられます。
以上、ご要望、ご不明な点等ございましたら、再度ご連絡ください。
ご不便をお掛けいたしますが、よろしくお願い申し上げます。MZPlatformユーザー会キーマスターお問い合わせありがとうございます。
特定の帳票要素の属性をメソッドで設定するには、
(1)まずメソッド「setEditPaperElement(int)」で編集対象の帳票要素を指定します。引数に設定するのは帳票要素の番号で、「帳票編集画面」で要素を選択すると左上に表示されるものです。左側ツリー図での並び順とも合致しています。
(2)次にメソッド「setEditPaperElementBorderWidth(float)」で線幅を指定します。引数は固定値で設定可能です。以上お試しいただき、ご不明な点がございましたら、再度ご連絡いただければ幸いです。
よろしくお願いいたします。MZPlatformユーザー会キーマスターお問い合わせありがとうございます。
ご指摘の通り、このアプリケーションの中ではイベント番号を必要としない「SQL文を実行する(String)」でも正常に動作します。
イベント番号を指定するメソッドを使用している理由としては、一つのアプリケーションの中で実行されるSQL文に区別をつけたい、今後改修、発展したときに必要になる場合があるなどが挙げられます。実行されるSQLはUpdate文とSelect文ですが、Update文は実行後、処理完了イベントが発生し、イベント内包データとして「更新された行数」が取得できます。
Select文は実行後データ生成イベントが発生し、テーブルデータを取得できます。
[サブルーチン(ID17)]が呼び出されると[データベースアクセス]のメソッドも呼び出されUpdate文もSelect文も両方実行されていますが、Update文ではデータ生成イベントは発生しません。仮に、SQLが両方Select文だった場合は、データ生成イベントに繋げてイベント番号1を設定した処理、イベント番号2を設定した処理、それぞれに呼び出されます。
イベント番号を指定しない「SQL文を実行する(String)」の実行による発生イベントは「イベント番号0」という扱いになります。イベント番号を設定していない、または他のイベント番号に加えて番号0を設定している処理が起動されます。まとめますと、SQL文の種類により発生するイベントが違うことが、データ生成イベントの接続処理が呼び出されない大きな理由ですが、仮にデータ生成イベントが発生するSQL文がイベント番号2とともに実行されても、イベント番号1の処理は呼び出されません。イベント番号を指定しないSQL文が実行されても、イベント番号1の処理は呼び出されません。
実は、メソッド「イベント番号を指定してSQL文を実行する(String,int)」を使用した場合でも、イベント番号を設定していない接続処理は起動されます。したがって、このアプリケーション内ではイベント番号は必須ではないのですが、実用のアプリケーションでは[データベースアクセス]で複数のSQL文を実行することが多く、チュートリアルという性質上、このような記載にしております。
以上、ご不明な点がございましたら、どうぞ再度ご連絡ください。
よろしくお願い申し上げます。MZPlatformユーザー会キーマスターお問い合わせありがとうございます。
メソッド「時間軸の表示期間を設定する(int,PFGanttChartTimeUnit)」の第2引数には、時間の単位を設定します。この単位オブジェクトは固定値では設定できませんが、[ガントチャート]から取得できるようになっています。
第2引数の設定で例えば、『取得方法:メソッド戻り値、コンポーネント:ガントチャート、メソッド/値:単位(時)を取得する』とします。ご不明な点がございましたら、再度ご連絡ください。よろしくお願いいたします。
MZPlatformユーザー会キーマスターお問い合せありがとうございます。
一定間隔で文字等が変化する処理には、[タイマー]を使うことになるかと思います。
タイマーの実行間隔は属性情報のDelayとinitialDelay(起動後最初に実行されるまでの間隔)で設定します。既定の間隔は1000msになっています。タイマーが実行されるごとに[任意精度整数(BigInteger)格納変数]の値を1ずつ増やし、[剰余(%)]で2で除算した余りの値を取得すれば、0か1が交互に取得できます。
[イベント生成]コンポーネントはイベント番号と共にイベントを発生させることができるので、上記の値をイベント番号として処理を行うことができます。動作確認のため、簡単なサンプルファイルを作りましたので、どうぞご覧ください。
ラベルの背景色も設定していますが、取得方法:固定値でRGB値または13色の色名「white, lightGray, gray, darkGray, black, red, pink, orange, yellow, green, cyan, blue, magenta」で指定が可能です。ご不明な点がございましたら、再度ご連絡ください。よろしくお願い申し上げます。
-
投稿者投稿