サブフォームを使用した画面の動き
- このフォーラムに新しいトピックを立てることはできません
- このフォーラムではゲスト投稿が禁止されています
ara
投稿数: 122
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
いつも大変参考にさせていただいています。
今回、v10からxpaにマイグレーションしたシステムの中で、
サブフォームを用いている画面の動きが、同じようにならずに悩んでいます。
まずPGの構造を説明いたします。(うまく書けないかもしれませんが)
一般的なオンラインPG「A」からサブフォームを使用しているオンラインPG「B」をコールしています。(Bの画面は、スクリーンモードで作成した画面の中に、ラインモードで作成した画面をサブフォームで呼んで表示しています。)
この「B」の画面をコールして、さらに「B」からさらにオンラインPG「C」をコールして、B画面と重なるようにしてCの画面を表示させています。(「A」のPGで、あるボタンをクリックしたら「B」をコールし、さらに「B」のレコード前処理で「C」をコールするという一連の動きにしています。)
「B」の画面でサブフォームとして表示させている内容は、「B」で読み込んだレコードに対する明細データにあたるレコードです。
「C」の画面を表示した時には、このサブフォームの内容も表示させておきたいからだと思いますが、「B」のPGのレコード前処理でも、サブフォームのPGをコールしています。
表示はこれで上手くできています。問題はこれらの画面を閉じた時です。
まず「C」の画面を閉じます。画面には「B」の画面が残るわけですが、この時にサブフォームの領域が全く何も利かない状態になります。(フォーカスが当たらない。クリックしても反応しない。)
V10ではこのような動きにはならず、「C」の画面を閉じれば「B」画面のサブフォームで表示させている項目にもフォーカスが当たりました。
xpaでも同じ動きを再現したいのですが、原因がよくわかりません。
サブフォームもあまり慣れておらず、これが問題かのように書きましたが、果たしてそうなのかも定かでない状況です。
なおxpaのバージョンは「2.4c PT1」を使用しています。
うまく表現できないので歯がゆいのですが、何かご指摘などいただければと思い投稿させていただきました。
よろしくお願い致します。
今回、v10からxpaにマイグレーションしたシステムの中で、
サブフォームを用いている画面の動きが、同じようにならずに悩んでいます。
まずPGの構造を説明いたします。(うまく書けないかもしれませんが)
一般的なオンラインPG「A」からサブフォームを使用しているオンラインPG「B」をコールしています。(Bの画面は、スクリーンモードで作成した画面の中に、ラインモードで作成した画面をサブフォームで呼んで表示しています。)
この「B」の画面をコールして、さらに「B」からさらにオンラインPG「C」をコールして、B画面と重なるようにしてCの画面を表示させています。(「A」のPGで、あるボタンをクリックしたら「B」をコールし、さらに「B」のレコード前処理で「C」をコールするという一連の動きにしています。)
「B」の画面でサブフォームとして表示させている内容は、「B」で読み込んだレコードに対する明細データにあたるレコードです。
「C」の画面を表示した時には、このサブフォームの内容も表示させておきたいからだと思いますが、「B」のPGのレコード前処理でも、サブフォームのPGをコールしています。
表示はこれで上手くできています。問題はこれらの画面を閉じた時です。
まず「C」の画面を閉じます。画面には「B」の画面が残るわけですが、この時にサブフォームの領域が全く何も利かない状態になります。(フォーカスが当たらない。クリックしても反応しない。)
V10ではこのような動きにはならず、「C」の画面を閉じれば「B」画面のサブフォームで表示させている項目にもフォーカスが当たりました。
xpaでも同じ動きを再現したいのですが、原因がよくわかりません。
サブフォームもあまり慣れておらず、これが問題かのように書きましたが、果たしてそうなのかも定かでない状況です。
なおxpaのバージョンは「2.4c PT1」を使用しています。
うまく表現できないので歯がゆいのですが、何かご指摘などいただければと思い投稿させていただきました。
よろしくお願い致します。
投票数:0
平均点:0.00
Tanda
投稿数: 2151
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
araさん、
プログラムを見ていないので詳細は分かりませんが、Bのプログラム
のレコード前処理でCを読んでいる特別な理由は何かありますか?
もしなければ、BからCを呼ぶのはコールプログラムではなく、サブ
フォームコントロールを使ってみてはいかがでしょうか?
プログラムを見ていないので詳細は分かりませんが、Bのプログラム
のレコード前処理でCを読んでいる特別な理由は何かありますか?
もしなければ、BからCを呼ぶのはコールプログラムではなく、サブ
フォームコントロールを使ってみてはいかがでしょうか?
投票数:0
平均点:0.00
ara
投稿数: 122
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
Tanda様
年が明けてからの返信となりました。
明けましておめでとうございます。
本年もよろしくお願い致します。
「B」のプログラムのレコード前で「C」を呼んでいる理由は下記の通りです。
本来はBの画面領域上に表示させているサブフォーム(ラインモード表示)の内容を見て、該当データをダブルクリックしたら、「C」の画面が別Windowsで表示されるという動きにしています。(「C」のPGはレコード詳細を表示させるイメージです。)
もともとがこういう動きが基本のPGだったのですが、後から「A」というPGが追加され、「A」を基本に画面起動させた場合は、「Aから「B」画面に切り替わり、さらに切り替わった「B」画面の上に別Windowsで「C」の画面を表示させるという仕様になり、「B」のレコード前処理で「C」を呼ぶという作りになっています。
私もこのあたりが一番ネックに考えておりまして、次のようなことができればこの問題が解決できるのでは‥と思うところを以下に書きたいと思います。
おそらく、サブフォームはレコード前処理通過後に表示されると思っています。それで間違いなければ、サブフォームが表示されたレコード前処理の直後に、「C」のPGを呼ぶことができれば問題解消できそうです。
ただレコード前処理の直後って、どのように指示するのかがわかりません。
レコード前処理が終わって、「B」PGのフォームに最初にカーソルがパーキングする"直前"に「C」を呼ぶことは可能でしょうか?
年が明けてからの返信となりました。
明けましておめでとうございます。
本年もよろしくお願い致します。
「B」のプログラムのレコード前で「C」を呼んでいる理由は下記の通りです。
本来はBの画面領域上に表示させているサブフォーム(ラインモード表示)の内容を見て、該当データをダブルクリックしたら、「C」の画面が別Windowsで表示されるという動きにしています。(「C」のPGはレコード詳細を表示させるイメージです。)
もともとがこういう動きが基本のPGだったのですが、後から「A」というPGが追加され、「A」を基本に画面起動させた場合は、「Aから「B」画面に切り替わり、さらに切り替わった「B」画面の上に別Windowsで「C」の画面を表示させるという仕様になり、「B」のレコード前処理で「C」を呼ぶという作りになっています。
私もこのあたりが一番ネックに考えておりまして、次のようなことができればこの問題が解決できるのでは‥と思うところを以下に書きたいと思います。
おそらく、サブフォームはレコード前処理通過後に表示されると思っています。それで間違いなければ、サブフォームが表示されたレコード前処理の直後に、「C」のPGを呼ぶことができれば問題解消できそうです。
ただレコード前処理の直後って、どのように指示するのかがわかりません。
レコード前処理が終わって、「B」PGのフォームに最初にカーソルがパーキングする"直前"に「C」を呼ぶことは可能でしょうか?
投票数:0
平均点:0.00
ara
投稿数: 122
![一人前 一人前](../../uploads/rank3dbf8ea81e642.gif)
「B」のレコード前処理での「C」の呼び出しの部分を以下のように変更してみて、なんとか思うような動きを実現できたみたいです。
・ユーザイベントを作成する。
・レコード前処理ではコールコマンドの代わりにイベント実行コマンド(ウェイト:No)で上記のユーザイベントを実行する。
・ユーザイベントのハンドラ内で、「C」PGをコールコマンドで呼び出す。
こういうやり方がよいのかどうかわかりませんが、もう少しテストしてみてこれで問題なければ、OKということにしようと思います。
気になるような箇所あれば是非ご指摘願います。
・ユーザイベントを作成する。
・レコード前処理ではコールコマンドの代わりにイベント実行コマンド(ウェイト:No)で上記のユーザイベントを実行する。
・ユーザイベントのハンドラ内で、「C」PGをコールコマンドで呼び出す。
こういうやり方がよいのかどうかわかりませんが、もう少しテストしてみてこれで問題なければ、OKということにしようと思います。
気になるような箇所あれば是非ご指摘願います。
投票数:1
平均点:10.00
Tanda
投稿数: 2151
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
araさん、
最初にカーソルがパークする直前であれば、最初のコントロールの
コントロール前処理でいいはずです。
でも、代案でうまくいっているのであれば、それでもいいかもしれ
ませんね。
最初にカーソルがパークする直前であれば、最初のコントロールの
コントロール前処理でいいはずです。
でも、代案でうまくいっているのであれば、それでもいいかもしれ
ませんね。
投票数:0
平均点:0.00
ISHIJIMA
居住地: 静岡県
投稿数: 1827
![長老 長老](../../uploads/rank3dbf8eb1a72e7.gif)
サブフォームを利用するのであればコールはあまり使用しません。
コールで呼んだりすると変な動きになる事が多いと思います。
CLRLGOTOで必要なところに移動したりします。
サンプルプログラムのオンラインサンプルを一度確認されてみてはいかがでしょうか
コールで呼んだりすると変な動きになる事が多いと思います。
CLRLGOTOで必要なところに移動したりします。
サンプルプログラムのオンラインサンプルを一度確認されてみてはいかがでしょうか
投票数:0
平均点:0.00