初心者のFileMaker pro Q&A (旧掲示板)

みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。

1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)

You are not logged in.

Announcement

新しい掲示板は、こちら:https://fm-aid.com/forum/t/filemaker


#1 2023-07-01 08:25:57

カワ
Guest

デュアルモニタでの初期起動位置

いつも大変お世話になっています。
表題の件質問させてください。

環境
win10  fm19 オンプレミスサーバ利用

現在、インターネットショートカットを利用して、サーバ上のファイルを開いています。
サブモニタで開いて作業したいんですが、必ずメインモニタで開いてしまいます。
シフトやコントロールを押しながらファイルを閉じたり、ウインドウのスナップ機能をオフにしてもうまくいきません。
スタートメニューからファイルメーカーを起動すればサブモニタで開いてくれるのですが、これだと

アプリを開く→ファイル選択

と一手間増えます。ショートカットから開く時のウインドウ位置を変更する方法はあるのでしょうか?
ご教授下さい。

#2 2023-07-01 08:46:12

Shin
Member

Re: デュアルモニタでの初期起動位置

URL を使用してファイルを開く
のことでしょうか。それとも、スナップショットリンクですか。
そのファイルを開いた時のスクリプトで、ウインドウの位置を設定するのが簡単でしょうが。
ただ、もしその位置が表示範囲外だった場合(シングルモニター環境で開くとか)、見えなくなってしまう可能性があります。スクリーン高さ、スクリーン幅をみて分岐させておくことをお勧めします。

Last edited by Shin (2023-07-01 08:54:38)

Offline

#3 2023-07-02 10:48:15

himadanee
Guest

Re: デュアルモニタでの初期起動位置

ショートカット自体でスクリプトを指定できるので、開く位置をスクリプト引数で渡せばアイコンごとに違う位置で開くようにもできますね。

FMS使えないのでローカルファイルでのテストですが、
ショートカットで開いたあとウィンドウを移動して、何か編集作業を行ってから閉じればウィンドウ位置が記憶されるのですが、セカンドモニタ上に記憶すると、位置だけでなくサイズもプライマリの方に最大化して開いてしまうみたいですね。かなり余計なお世話なことをわざわざやっている感じ...
しかし「スクリーン高さ、スクリーン幅」は片方しか認識してないから、しょうがないのかな?
「ウインドウが複数の画面に渡っている場合は、そのウインドウの最も大きな割合を占めている画面が使用されます。」っていうのは、OSが自動的にそういう値を返すんでしょうかね...
先にセカンドモニタ上で別のファイルを開いてアクティブウィンドウにしておいてからショートカットで開くと、スクリプトなしでもセカンドモニタ上で開きました。

#4 2023-07-05 22:54:32

カワ
Guest

Re: デュアルモニタでの初期起動位置

shinさん
URLを使用してファイルを開く
のことです。
使用者によって、サブモニタが左にあったり右にあったりするんですが、このような場合でもウィンドウの移動で上手くいく方法はありますか?後出しで申し訳ありません。

himadaneeさん
私のやり方がわるいのか、サーバとローカルファイルの違いなのか上手くいかず、ファイルオープン時は常に所定?の位置で開かれてしまいます。
ショートカットにスクリプトを指定したファイルに起動時スクリプトが仕込まれていた場合、競合するように思うのですが、このような場合はどちらのスクリプトが優先?先に実行?されるのでしょうか?

#5 2023-07-06 09:34:37

qb_dp
Member

Re: デュアルモニタでの初期起動位置

ユーザーごとに
Get ( ウインドウ左位置 )
Get ( ウインドウ上位置 )
Get ( ウインドウ幅 )
Get ( ウインドウ高さ )
を保存し、ファイルを開くときにウインドウ位置を復元するとか...

セカンダリモニターがない場合、ウインドウが見えなくなる可能性があるので、何か対策をする必要があるかも。

Offline

#6 2023-07-07 10:54:20

himadanee
Guest

Re: デュアルモニタでの初期起動位置

メインモニタで開くのと、右(左)のモニタで開くのと、別々のショートカットを作っておけば簡単です。

起動時スクリプトとの優先順は、ヘルプを見たけど明記されてないようですね。
実験した限りでは、onFirstWindowOpenは「最初のウィンドウが開いたとき」なので、先に実行されました。
ウィンドウの位置を変えるスクリプトを呼び出すので、ウィンドウがないうちに実行されても意味がないので、それはいいのですが
起動スクリプトには引数を渡せないので、移動した位置で実行したいならショートカットで指定するのは無理ですね。

実験中、ウィンドウを2つのモニタにまたがって開いてたら、「ファイルオプション」のウィンドウはセカンドに出るのにその先のトリガスクリプトの選択はプライマリに出たり、なんか今一な動作でした...

#7 2023-07-07 11:26:54

himadanee
Guest

Re: デュアルモニタでの初期起動位置

使ったことなかったのですが、URLで開くときにオプションが指定できるようになってました。
https://help.claris.com/ja/pro-help/con … ripts.html
説明を読んでも今一理解し切れてないのですが、「終了(2)」を使うと、onFirstWindowOpenのスクリプトを実行せずにショートカットで指定したスクリプトを実行できました。
まとめると、
OnFirstWindowOpenのスクリプト
テスト用なので「カスタムダイアログを表示」だけ
ショートカットで呼び出すスクリプト(SetLeft)
ウィンドウの移動「上:0 ; 左:Get(スクリプト引数)」(引数を複数にしてサイズ指定なども可能でしょう)
スクリプト実行「OnFirstWindowOpenのスクリプト」
全スクリプト終了(特に関係ない?)

ショートカットは、
fmp19://~/filename?script=setLeft&param=1000&option=2
(シングルモニタで横1920の半分ぐらい1000を指定してテスト、2000にすれば完全に右側のモニタ内に表示、-1800とかで左のモニタ)

※ウィンドウが表示されてから移動するので、メインモニタに最初にウィンドウが見える。
※カスタムダイアログの位置は別途記憶していて、その位置は指定できない。マルチモニタでは使わない方が無難。
※onFirstWindowOpenのスクリプトを実行せずに開ける、のが何かの抜け道にならないか考慮が必要。ショートカットでスクリプト指定して開くにはfmurlscriptのアクセス権が必要なわけですが、そのアクセス権を許可する場合の考慮事項ってことですね。

ウィンドウのデフォルト位置を再現するだけなのにややこしすぎですね...

#8 2023-07-09 06:51:20

カワ
Guest

Re: デュアルモニタでの初期起動位置

qb_dpさん。himadaneeさん。
ありがとうございます。
教えていただいた方法で上手くいきましたが、新たな問題が。
カスタムダイアログを多用しているのですが、himadaneeさんに教えていただいたとおり、カスタムダイアログ表示位置は別途記憶されるという仕様を確認しました。実はメインモニタはリモートデスクトップが全画面表示されてるいるのが基本状態で、この状態ではカスタムダイアログが隠れてしまい、あたかもフリーズしたかのように見えてしまいます。

カードウインドウでカスタムダイアログを代用すればこの現象は回避できそうですが、そうなるとスクリプトの構造やらレイアウトを再考する必要が有りそうです。

このような構造の場合、カスタムダイアログ(カードウインドウ)表示の前後でスクリプトは分離されてしまうのか、また、カスタムダイアログはグローバル変数等を利用して、汎用品にするのか、専用のものを作るべきなのかどちらが良いでしょうか?
起動スクリプトを発火させないことに関しては、ショートカットのスクリプトで起動スクリプトを指定し、引数で分岐させれば上手くいきました。

#9 2023-07-09 11:17:48

himadanee
Guest

Re: デュアルモニタでの初期起動位置

「リモートデスクトップが全画面表示」こっちはアプリケーションのウィンドウ内の操作しかしないので、こっちをサブモニタにした方が、使いやすいかも?
(私はそうやってました)
どっちをメインにするかはWindowsの設定で変えられます。

Registered users online in this topic: 0, guests: 1
[Bot] ClaudeBot

Board footer

Powered by FluxBB
Modified by Visman

[ Generated in 0.007 seconds, 7 queries executed - Memory usage: 584.99 KiB (Peak: 601.9 KiB) ]