マルチモニタ(デュアルディスプレイ)対象のアプリ作成方法
表題の件について教えていただけないでしょうか。
メインのディスプレイ側にスタッフ用画面、サブのディスプレイに顧客用画面を同時に表示するWindowsアプリを作ろうとしています。
理屈上、サブのディスプレイの開始位置に、顧客用フォームの位置を合わせれば表示されるはずですが、Magicのウィンドウ自体が、起動時、メインのディスプレイのサイズになってしまうため、このフォームが表示されなくなります。
起動時、Magicのウィンドウを、メインのディスプレイのサイズを超えて表示させる方法はありますでしょうか?
-
ご回答ありがとうございます。
二つアプリを立ち上げると、そのアプリ間での連携をとらなければいけなくなります・・・。
単純に、サブディスプレイの領域にまで画面を拡張することができれば、簡単な実装ですむのですが・・・・。
-
ウィンドウをドラッグすれば画面をまたがせることが可能です。
しかし、アプリ起動時には、メインディスプレイのサイズに戻ってしまいます。
-
> 起動時、Magicのウィンドウを、メインのディスプレイのサイズを超えて表示させる方法はありますでしょうか?
該当プログラムをSDI表示する方法ではどうでしょうか?フォーム特性で「ウィンドウタイプ」を「S=SDI」にすれば、メインプログラムのMDIの外に表示させることができます。
-
SDIフォームにして、並行実行モードにして
複数の画面を起動しっぱなしという処理は、ここ数年よく取り入れております。
SDIフォームにすれば
Magicのフォーム(MDI)を飛び出せます。
並行実行にすると、呼び出した側と呼ばれた側とは
親子関係は無くなるみたいな感じです。
的外れな回答ならすみません。 -
ISHIJIMAさん
uniPaaS V1 Plusもフォーム状態IDをセットしたら、
実行版で、フォーム位置や大きさを覚えてくれるのでしょうね。
uniPaaS V1 Plusでは使った事がありませんでした。
ありがとうございました。 -
SDIはTandaさんと回答が被ってしましました。
回答開始時は、Tandaさんの文書はまだ目にしていなかったものですから。 -
ISHIJIMA様
> 開発版で確認していませんか?
> 開発版の実行はフォーム保存はされません。
開発版で確認していました・・・・。
ご指摘ありがとうございます。
実行版で確認いたします。
-
tanda様、nkmt様。
ご回答ありがとうございます。
SDIフォームにするだけでは、メインプログラムのMDIウィンドウの外には出せませんでした。
nkmt様ご指摘の通り、並列実行モードにすると、外に出すことができました。
実は今回は、既存のプログラムを改修してデュアルディスプレイに対応させる予定です。
この方法ですと、nkmt様ご記載の通り、親子関係が切れてしまうためか、データの受渡について、それなりに改修が必要になりそうですね・・・。
外部アプリからウィンドウサイズをむりやり拡張できないか検討し、それが無理ならばこの方法を採りたいと思います。
ありがとうございました。
-
あまり使った事がありませんが、以下はどうでしょうか?Magicウィンドウを最大表示Magic uniPaaSのウィンドウを最大表示します。MDIプログラムで実行した場合、MDIが最大化されます。SDIプログラムで実行した場合、SDIが最大化されます。構文:WinMaximize()パラメータ:なし戻り値:論理値 …… 処理に成功した場合「True」が返ります。但し、片方のディスプレイの範囲で大きくなりそうですね。
-
並行実行で親子関係が切れてしまいますが、こっちの画面を残したまま
片方の操作を終わらせる事なく、画面をこかわるばんこに操作出来ますね。
両者の受け渡しは私の場合は、メモリテーブルを
SHAREDVALSETして
呼出し元の コンテキストに対して、イベント実行して
呼出し元のPGがイベント実行されて、SHAREDVALGETして
データを複数行受け取るといった事をやった事があります。
メモリテーブルではなく、SQLServer、Pervasiveなどでやり取りするのも
いいのでしょうね。 -
> SDIフォームにするだけでは、メインプログラムのMDIウィンドウの外には出せませんでした。
xpaなら問題なく出せるのですが、uniPaaSだからでしょうかね?ハテ?
-
ついさっきそう思ったのですが、今回の構成は
対面ディスプレイにされるのかな?と思いました。
スタッフ様とお客様が向き合って、いろいろお話伺いながら入力などして、お客様側は閲覧のみ、または同時に操作は出来ませんが
タッチモニターでシンプルな画面とか。 -
> XPAだとエラーも出ませんし問題なく表示されますね・・・
そういえばそうでした。uniPaaSからxpaになって感動した記憶があったのを思い出しました。2009年の頃でしたから、もう11年も前のことになりますね。
-
お客様用画面をSDIでサブディスプレイ側に表示出来れば
MDIを最大化する必要も無いのでしょうね。
スタッフ側から、お客様用画面をビュー再表示などする事を予想します。 -
nkmt様。
ご回答ありがとうございます。
ご推察の通り、スタッフ様とお客様が対面される形になります。
ただし、複雑なことは必要なく、かつ、今のプログラムへの改修をすくなく実現したいと思っています。
その点から、おそらく一番てっとりばやそうなのが、現在存在するスタッフ用画面の大きさを大きくして、サブディスプレイ側にはみ出させ、そこにお客様用のコントロールを貼り付ける、という方法です。
ディスプレイをまたいでいるため、見た目上は別画面ですが、一つのフォームです。
このため、質問させていただいた次第です。
-
> そういえばそうでした。uniPaaSからxpaになって感動した記憶があったのを思い出しました。
つまり、xpa以降は同一コンテキスト内でSDIが実現可能になったわけです。
-
津久井様、いいアイディアですね。ありがとうございました。
-
tanda様、ISHIJIMA様。
ご回答ありがとうございます。
xpaだとできるのですね・・・。
過去、マイグレーションは、V8からuniPaaSを経験しており、その際はマイグレーション後のテスト・調整にかなり工数がかかった記憶があります。
uniPaaSからXPA系へのマイグレーションは、この辺りはスムーズにいくものなのでしょうか?
-
津久井さん、今苦労してuniPaaS向けにプログラムを作られても、xpaにすればパラメータ1個で目的が実現されてしまうということもあり得ますね。
-
tanda様。
現時点でかなり大きな稼働中のuniPaaSのプログラムがあります(デュアルディスプレイ非対応)ので、マイグレーションにかかる費用を含めて検討したいと思います。
-
> 過去、マイグレーションは、V8からuniPaaSを経験しており、その際はマイグレーション後のテスト・調整にかなり工数がかかった記憶があります。
V8からuniPaaSへは、レコードメインからイベントドリブン方式に根底から変わった次期でしたから大変だったと思います。Magicがイベントドリブン方式になってから以降は、それほど困難ではないと思います。
-
tanda様、ISHIJIMA様。
ご回答ありがとうございます。
V8からよりは、かなり楽になっていそうですね。
検討させていただきます。
-
私の連載のタイトルが、「 Magic xpa で作るイベントドリブン型プログラム」というネーミングになっているのも、そのためです。
-
かなり前の投稿ですが・・・。
本件、XPAへマイグレーションし、実現することができました。
みなさまありがとうございました。
サインインしてコメントを残してください。
コメント
24件のコメント