Q78:アプリケーション起動時にフレームが表示される件について
Q78-1:
アプリケーションビルダーやローダーで、開発したアプリケーションをロードした時や、アプリケーションを実行したときに、開始時点では表示されないフレームが、最小化された状態で表示されるときがあります。この状態になると、アプリケーションを操作してそのフレームを表示する動作を起こさないと、消すことも出来ません。この現象はどういった原因から発生するのでしょうか?
A78-1:
お問い合わせ件につきましては、当方で把握していない不具合の可能性がございます。検討及び分析することが可能かもしれませんので、もう少し詳細な情報を教えて頂けませんでしょうか。
・MZ Platformのバージョン
・JREのバージョン
・MZ Platformを動作させているOS
また、アプリケーションビルダー(コンソール)等で起動した際に、コンソール画面に例外が表示されている場合には、その画面コピーとログファイル、もし差し支えなければ、ご報告いただいた不具合を再現可能なアプリケーションファイルをお送りいただけますと、大変助かります。
Q78-2:
MZPlatformのバージョン:2.4
JREのバージョン:jre6
MZPlatformを動作させているPC:WindowsXP
メールサーバの都合で、アプリケーションのサイズが大きいため送付することが出来ませんでした。問題が発生したアプリケーションは18.5M、発生していないアプリケーションでは14.3Mと、保存時の容量が違うため、もしかしたら、保存に失敗していたために発生したのかもしれません。
A78-2:
ご回答いただきました情報のみでは原因を特定できませんが、ご察しのように、何かの原因でアプリケーションデータの保存に失敗していることが原因であるかもしれません。
ログもしくはコンソール画面に何かしらのエラーが出力されているかもしれません。
ファイルサイズが大きいようですが、もし、現在XML形式(拡張子mzax)にてアプリケーションを保存されている場合には、バイナリ形式(拡張子mzas)での保存に変更しますとファイルサイズが小さくなり、ご提示のような問題の解決に有効な場合があります。
XML形式の方がJREのバージョンの違いに対応し易く、当方ではXML形式(mzax)を基本に考えておりますが、一つのバージョンのJREをお使いの場合でアプリケーションのサイズが大きくなってしまう場合には、ファイルサイズが小さくなり保存およびロード時間が短くなるバイナリ形式をお勧めしております。
また、これとは別に、ファイルサイズを小さくする目的で、可能な場合にはアプリケーションを分割することも有効であるかもしれません。
追加で情報がございましたらご連絡いただけますと幸いです。
Q78-3:
問題が発生するアプリケーションと同じ日時に保存した、バイナリ形式のアプリケーションを送付します。このアプリケーションは、最初に表示されるフレームで、MySQLのpro_conデータベースへ接続して、その後各種検索集計機能を行うようになっています。「検索処理の作業時間集計」機能の「作番毎の作業時間集計とグラフ化」と「機械グループ毎の作業時間集計とグラフ化」を表示しようとしたときに、最小化された状態で表示されます。XML形式の場合、アプリケーションを起動させた時点で、フレームが最小化された状態で表示されます。
A78-3:
アプリケーションファイルをお送りくださいまして有難うございます。
今のところ当方では状況を再現できておりません。
一般的なことで申し訳ございませんが、まずは、以下の点をご確認頂けませんでしょうか。
1.該当のフレームを最小化した状態で、アプリケーションを保存しておりませんでしょうか。この場合、ご報告いただきましたような現象が生じることが確認されております。
この現象は、Javaの問題である可能性が高くMZPlatformの修正による対応は難しいですが、お作りになったアプリケーションにおいて該当のフレームを通常表示した後に上書き保存していただければ、直る可能性が高いです。
再度、ご確認いただき、お試しくださいますようお願い致します。
補足ですが、通常この場合フレームの属性ExtendedStateの値が1になるはずですが、お送りいただいたアプリケーションにはそのようなフレームがございませんでしたので、これに該当しないかもしれません。
2.上記1に該当しない場合、不具合が有るアプリケーションと無いアプリケーションとを比較し、違いがどこにあるのか、ご確認をお願い致します。
3.また、不具合が有るアプリケーションはデータが増えているとのことですが、単に実行中のデータの消し忘れの差異かもしれませんのでご確認ください。
4.不具合とは直接関係ないですが、お送りいただきましたアプリケーションでは、アプリケーションの終了処理が適切に定義されていないようです。
例えばメインのフレームを閉じた際などに、「アプリケーション」コンポーネントのメソッド「アプリケーションを終了する」を起動するようにしてください。これを行わなければ、「アプリケーション」コンポーネントのアプリケーション終了イベントに定義されている処理は実行されません。
ローダーで実行した場合には、javaのプロセスが残ってしまいます。
ご連絡:
>1.該当のフレームを最小化した状態で、アプリケーションを保存しておりませんでしょうか。この場合、ご報告いただきましたような現象が生じることが確認されております。
この現象は、Javaの問題である可能性が高くMZPlatformの修正による対応は難しいですが、お作りになったアプリケーションにおいて該当のフレームを通常表示した後に上書き保存していただければ、直る可能性が高いです。
これに関しては、最小化した状態での保存はしていませんので、無いと思います。
ただし、該当のフレームを通常表示した後に上書き保存すると、この問題が発生しなくなりました。
> 2.上記1に該当しない場合、不具合が有るアプリケーションと無いアプリケーションとを比較し、違いがどこにあるのか、ご確認をお願い致します。
> 3.また、不具合が有るアプリケーションはデータが増えているとのことですが、単に実行中のデータの消し忘れの差異かもしれませんのでご確認ください。
不具合があるアプリケーションと無いアプリケーションを比較したのですが、基本的な内容は同じであるため、保存時のエラーが原因ではないかと思います。
実行中データ、例えば検索結果等がそのまま残っている状態で保存したため、データが増えているということでしたら、単にそれが原因かもしれません。
> 4.不具合とは直接関係ないですが、お送りいただきましたアプリケーションでは、アプリケーションの終了処理が適切に定義されていないようです。
例えばメインのフレームを閉じた際などに、「アプリケーション」コンポーネントのメソッド「アプリケーションを終了する」を起動するようにしてください。これを行わなければ、「アプリケーション」コンポーネントのアプリケーション終了イベントに定義されている処理は実行されません。
ローダーで実行した場合には、javaのプロセスが残ってしまいます。
ご指摘ありがとうございます。
おかげで終了したはずなのに、データベースに接続されたままになっている時がある原因が判明しました。
以上の点を踏まえると、やはりアプリケーション実行中であったため、正しく保存できなかったのが原因ではないかと思います。