フォーラムへの返信
-
投稿者投稿
-
MZPlatformユーザー会キーマスター
時間のかかる処理を実行中のときに、ダイアログを表示して操作をブロックするためには、時間のかかる処理を別のスレッドとして実行して、そのあとでモーダルダイアログを表示します。時間のかかる処理が終了したときにダイアログを閉じれば、画面の操作が再度可能になります。
進捗ダイアログは、上記のような使い方をしたときに、全体のどの程度まで処理が進んだかを表示することができるコンポーネントです。例えば、繰り返し処理の全体の回数を最大値として、現在値を更新すれば、進捗状況が表示されます。
つまり、使い方としてはスレッド実行と進捗ダイアログの両方の組み合わせとなりますが、適切なサンプルが配布できていないので、添付していただいたものを改変して使用例のサンプルとしました。添付の内容をご確認いただき、ご不明な点があれば再度お問い合わせください。
添付ファイル:
MZPlatformユーザー会キーマスター確認ですが、サンプルの「勤務時間計算」についてはご覧いただいているでしょうか。場所は、インストールフォルダのAP_DATA\Sampleに含まれています。簡易的な解説PDFはdocs\Sampleにあります。
サンプルをご覧いただくとわかりますが、カレンダーを用いた計算では休日分を自分で引く必要があります。まずはご覧いただき、ご不明な点をお問い合わせください。
なお、日付選択ダイアログの「休日を追加する」は、日付選択ダイアログ上で休日の色で表示するためのものです。
メソッドの引数に文字列で指定してもうまくいかないので、日付入力フィールド等を用いて日付データを指定していただけますでしょうか。残念ながら、リストで指定するメソッドはないので、繰り返しFORを用いるなどで対応をお願いします。
MZPlatformユーザー会キーマスターおそらくですが、MySQLとの接続に必要なJDBCドライバの不具合が原因と思います。
お手数ですが、別バージョンのドライバに置き換えて試してみていただけますでしょうか。JDBCダウンロードページ(https://dev.mysql.com/downloads/connector/j/)より、以下の手順でバージョン5.1.47を入手してお使いください。
(1) このページの「Connector/J 8.0.13 」と書かれている部分の右側の「Looking for previous GA versions? 」をクリックします。
(2) 「Connector/J 5.1.47」に移動しますので、プルダウンメニューから「Platform Independent」を選択し、「Platform Independent (Architecture Independent), ZIP Archive」のDownloadボタンをクリックします。
(3) 表示されたページ最下部の、「No thanks, just start my download.」をクリックすると、ダウンロードが開始されます。以上です。よろしくお願いします。
MZPlatformユーザー会キーマスターファイルが正常にダウンロードできない状態になっておりました。ご迷惑をおかけして申し訳ありません。すでに修正しましたが、同じものをここに添付しておきます。
添付ファイル:
MZPlatformユーザー会キーマスター残念ながら、Windowsのショートカットが指し示す実体のファイル名やフォルダ名は、MZで取得できません。ショートカットが指し示す実体のファイルやフォルダのパス名を直接お使いください。
実体のフォルダ名をファイルコンポーネントに設定すれば、配下に存在するファイル名のリストが取得できると思います。
MZPlatformユーザー会キーマスター帳票の余白ではなく、印刷ダイアログのページ設定のマージンのことですね。
こちらで確認したところ、プリンタの機種によるかもしれませんが、確かに変更できませんでした。
これはプリンタ側の制限だと思います。この場合、帳票の余白を0にすると印刷範囲が少なくなって、ご指摘のように画像が切れますので、むしろ帳票の余白を印刷ダイアログのマージンに合わせた方が良さそうです。- この返信は6年、 2ヶ月前にMZPlatformユーザー会が編集しました。
MZPlatformユーザー会キーマスター帳票編集画面か帳票プレビュー画面にある「用紙設定」ボタンで、上下左右の余白を0に設定できますが、何か他に問題があればお知らせください。
MZPlatformユーザー会キーマスター「外部プログラム通信」コンポーネントの動作は起動対象によって変わってしまうのですが、今回のVBScript実行に関しては実行結果を取得してから次の処理に移ることができません。どうしても実行の指示後、非同期で遅れてデータ生成イベントが発生します。
そのため、繰り返し計算をFORループで単純に実行することができません。上記の動作の仕組みを理解した上で同様の処理を実現する必要があります。一例として、そのサンプルを添付します。回数のカウンタとして整数格納変数と、繰り返しおよびその終了条件として等価演算を使用しました。
ご確認ください。
添付ファイル:
MZPlatformユーザー会キーマスター追加質問の意図と添付ファイルとの関係がわからないので、もう少し説明をお願いします。
まずは添付していただいたサンプルをこちらで実行すると、「未設定」になります。
こちらで修正したものを添付しますが、このように記述すると少し時間が経ってから実行結果が表示されます。このように、外部プログラム通信の「startProgram」の呼び出し後、処理自体は先に進んでフレームが表示されます。それと並行してスクリプトが実行され、完了した時点でデータ生成イベントが発生して出力結果が得られます。元は変数に入れているだけだったのでラベルの表示は変わりませんでしたが、修正後は直接ラベルを書き換えているので、表示が変わります。
上記で成功の状態になったとして、「処理が終わった後」と「処理の途中」が何を指しているかがわかりませんので、説明をお願いします。
添付ファイル:
MZPlatformユーザー会キーマスターこちらがVBScriptになじみがないため、下記の前提に誤りがあればご指摘ください。
「コマンドラインに標準出力」との記述から、WindowsのコマンドプロンプトからVBScriptを実行して、その結果が標準出力で表示される前提でお答えします。
MZ側でこのような出力を受け取るためには、「外部プログラム通信」コンポーネントを使用します。ただし、このコンポーネントは状況に応じて設定を適切に変更しないと正常に動作しないため、もし何らかのサンプルを添付(ZIPファイルとして)していただければこちらでもテストします。
こちらで準備できたVBScriptサンプルからの出力を取り込むMZアプリのサンプルZIPファイルを添付しますので、展開して実行し、下記の手順で操作して動作をご確認ください。
実行後に表示される上側のフィールドにコマンドプロンプトのコマンドcmdが入力されているので、その右側にある「起動」ボタンを押します。
中央のテキストエリアにコマンドプロンプトからの出力が表示されたら、下側のフィールドにVBScriptを実行するコマンドを入力して、その右側の「送信」ボタンを押します。
コマンドは例えば、「cscript //nologo (パス\ファイル名).vbs」という感じに入力します。実行結果が中央のテキストエリアに表示されたら、「出力取込」ボタンを押します。
ダイアログが2回表示されて、1つ目は変数に格納された文字列全体、2つ目はその中から切り出した対象の文字列が表示されます。2つ目の文字列切り出し方法は、実行結果の出力に応じてビルダーで変更する必要があります。
コンポーネントの使い方も、ビルダー上での接続方法をご覧ください。添付ファイル:
-
投稿者投稿