みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
みなさん、こんにちは。
Ver13、Windowsです。
一つのウィンドウのみが最大化されている(FileMakerそのもののウィンドウは最大化ではありません)状態で開いています。その時にボタンをクリックすると新規ウィンドウが開くスクリプトを仕込んでいます。中味は下記の通りです。
http://nice-guy.org/fm/newwindow.jpg
改行入りスクリプト引数で
1.使用するレイアウト名
2.ウィンドウ名
を与えています。
まず、そのウィンドウを閉じてモーダルで位置を指定して開くという感じです。
さて、この時に、新規ウィンドウを開いたとき、元のウィンドウのサイズと位置が変わってしまいます。元の最大化ままの状態でいて欲しいのですが、どのようにしたら良いか教えてください。よろしくお願いします。
Offline
最大化できるウィンドウは1つだけなので、元の最大化ままの状態にしたら新規で開くウィンドウは表示できません。
ダイアログっぽいだけでMDIを使ってるのでどうしようもない。
FileMakerのMDIの限界です。
代用するなら、Get ( ウインドウデスクトップ高さ ) - $margin などを使い、非最大化且つ最大のサイズを設定します。
$marginには、環境に合わせた数値、Windows8の標準GUIであれば4などを指定します。
この代用では、アプリケーションウインドウのサイズ変更には追随しないので、
トリガ等で随時実行してやる必要がありますが、
OnLayoutSizeChangeイベントは、アプリケーションウインドウのりサイズで発生しないため使えません。
Layouterさん、hondaさん、回答ありがとうございました。なるほどね、限界なのですね。
honda さんの方法を使わせていただきます。
まず、Windows専用で使います。また、V13なのでXPは使いません。Windows7の時も$marginの値は4でいいのですか?
スクリプトとしては、新規ウィンドウを開く前に今のウインドウサイズを
Get ( ウインドウデスクトップ高さ ) - $margin
Get ( ウインドウデスクトップ幅 ) - $margin
とすればいいのですね?
新規ウィンドウはフィールドピッカーのようなものなのです。
このウィンドウを閉じる際に、またウィンドウを最大化すればいいと言うことですね?
Offline
ウインドウが複数表示されるタイミングで最大化が解除されるので、
仰るようにピッカー用のウインドウを表示する時だけサイズ調整すれば、
確かに最大化時との変化は最小にできます。
しかし結局サイズが変わってしまうことは同じですから、対応は2通りです。
・上述のスクリプトを常に作動させ、最大化の代わりとする
・ピッカー表示時のみ作動させ、サイズの差を押さえる
ピッカーの使用頻度が低いなら、後者で充分かも知れません。
頻度が高いか、今後同様のウインドウを多用するなら、
端から前者で統一しておいた方が、見苦しくないかも知れません。
なお、マージンは不要なスクロールバーの表示を抑制するためのもので、
お使いのGUI環境によっても変わりうるので、適当に調整します。
ちょっと古い手法だけど、元ウィンドウのレイアウトを複製し、すべてのフィールド入力を禁止しておきます。
その上に、ダイアログ風のオブジェクトを配置し、その中にポータルなどでピッカを作り込みます。
ちょっと面倒な方法ですが、ウィンドウの処理としては簡単です。
Offline
honda さん、回答ありがとうございました。今回は、フィールドピッカーのようなウィンドウは余り使わないので、後者の方法で対応します。
Shin さん、回答ありがとうございました。
なんと、驚く方法です。でも作る手間が大変ですね。前述したようにhondaさんの方法で対応します。
皆様、どうもありがとうございました。
Offline
FM13なら、ポップオーバーボタンをダイアログの代わりに使うこともできます。
Offline
wader さん、回答ありがとうございます。そういう手もありましたね。
Offline
Pages: 1
[ Generated in 0.006 seconds, 8 queries executed - Memory usage: 517.25 KiB (Peak: 522.16 KiB) ]