みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
Win7 FMP15使用です(もうすぐWin10 FM18に切り替えます)
現在、事業関係のDBを作成中なのですが、事業概要等を入力するウインドウAと事業参加メンバーの情報を入力するウインドウBと二つに分けて、どちらもが入力時にリファレンスできるようなスタイルにしているのですが、そこで質問です。
ウインドウを開く場合のスクリプトは現在、
新規ウインドウ
レイアウト切替
サイズの変更
だけという簡単なものをボタンで実行させています。当然ですが、押した回数分だけ新規ウインドウが開かれてしまいます。
ウインドウAならAで、1回新規ウインドウから状態にある場合にボタンを押しても新規にウインドウAが作られないようにしたいのですが、うまくできません。
よいお知恵がありましたらお願いいたします
1回新規ウインドウから状態にある場合 → 1回新規ウインドウですでにウインドウAが開いている状態にある場合
「事業概要等を入力するウインドウA」の、ウインドウ名を"ウインドウA"とした場合、以下で ウインドウ "ウインドウA" が有るかどうか確認出来ます。
変数を設定 [$Result; 値: FilterValues ( WindowNames ; "ウインドウA" )]
Offline
ウインドウAが開いている場合はスクリプトを実行しない。
なら、
スクリプトの最初でこれを判定すればいいのでは。
変数は特に必要としないでしょう。
Offline
スクリプトの先頭で
If [ IsEmpty ( FilterValue ( WindowNames ; "ウインドウA” ) ) ]
新規ウインドウ [ スタイル: ドキュメント : 「ウインドウA」(ウインドウA) ]
Else
ウインドウを選択 [ 名前: "ウインドウA" ; 現在のファイル ]
End If
みたいな感じですかね?
レイアウト切り替え時にウインドウ名を設定するのを忘れないように、例えばOnLayoutEnterから必ずレイアウト初期化スクリプトを実行し、
ウインドウタイトルの設定を実行、のようにルール(開発ポリシー)を決めておくと良いと思います。
(ボタンスクリプトの中でも設定できますが、漏れやすい)
Last edited by koeda (2019-10-28 13:12:16)
Offline
下のような汎用スクリプトを作って、ユーザーに表示するレイアウトはほぼ全てこのスクリプトで切り替えるようにしています。
実際には前回表示していた位置サイズを読み込んだりする機能も付けていますが、ここでは割愛。
全ての変数は省略可能です。
「ウインドウを選択」も、空指定するとエラーにならないんですよね。
エラー処理 [オン]
ウインドウの固定
変数を設定 [$window ; 値: "ウインドウ名"]
変数を設定 [$layout ; 値: "レイアウト名"]
変数を設定 [$style ; 値: ""]
変数を設定 [$top ; 値: ""]
変数を設定 [$left ; 値: ""]
変数を設定 [$width ; 値: ""]
変数を設定 [$height ; 値: ""]
ウインドウを選択[名前: $window ; 現在のファイル]
# エラー112 ウインドウが見つかりません
If[Get(最終エラー) = 112]
If[$style = "float"]
新規ウインドウ[スタイル:フローティングドキュメント; 名前:$window; 高さ:$height; 横幅:$width; 上:$top; 左:$left ]
Else If[$style = "dialog"]
新規ウインドウ[スタイル:ダイアログ; 名前:$window; 高さ:$height; 横幅:$width; 上:$top; 左:$left ]
Else
新規ウインドウ[スタイル:ドキュメント; 名前:$window; 高さ:$height; 横幅:$width; 上:$top; 左:$left ]
End If
End If
If[not IsEmpty($layout)]
レイアウト切り替え[$layout]
End If
Offline
みなさま
みなさま、ご意見等いろいろありがとうございます
とりあえず、先のスクリプト実行の前に、
エラー処理オン
ウインドウを閉じる[ウインドウA]
と追加して、ウインドウAが開かれていようがいまいが一回ウインドウを閉じてもう一度新規に立ち上げるという乱暴なやり方を編み出してみました。
なんとなくこれでいけそうではあるのですが、みなさまのご意見のようなスマートな方法のがよさそうですね。
検討させていただきます
ウィンドウが⑴個だけの時に、意図しない動きになるかも。
Offline
みなさま
自分で編み出しました乱暴極まりないやりかたをしばらくためしておりましたが、今までのところ不具合なく動いているようですので、当面はこのままで行きたいと思います。
いろいろありがとうございました
ユーザーに、新規ウィンドウが開いた事を明確に意識させるべきでは。新規ウィンドウの位置をずらしておくといいでしょう。
または、タブコントロールを使って、表示を変更してみる、という方法も合理的かも。
Offline
ありがとうございます
ご指摘のとおりですね。
サイズを変えていますのでわかるといえばわかるのですが、表示位置をずらしてみます。
基本、どちらのレイアウトないの情報も同時にリファレンスできるようにということが目的でございますのでそのほうが便利でもありますね。
Pages: 1
[ Generated in 0.013 seconds, 10 queries executed - Memory usage: 521.44 KiB (Peak: 525.98 KiB) ]