Microsoft Access 掲示板

開いたファームの前面表示(ただしアンカー設定あり)

8 コメント
views
4 フォロー

お世話になります。

早速ですが、仕様説明させていただきます。

メインフォームから、A〜Cのフォームを開く際の設定で。

親フォーム  子フォーム 孫フォーム
メインフォーム--フォームA-フォームZ
              |--フォームY
      |--フォームB--フォームZ
            |--フォームY
      |--フォームC--フォームZ
           |--フォームY

1.メインフォームの境界線スタイル:ダイアログ
  その他のフォームの境界線スタイル:サイズ変更可(アンカー設定あり)
2.メインフォームから子、孫まで開く可能性があり、開いたフォームを前面に表示したい
  常に最善面表示にしたい訳ではない
3.親から子、孫フォームを開く際は、下記コマンドで実行
  Docmd.OpenForm acForm "フォームA"
  開くフォーム上でアンカー設定をしているので、acDialogオプションが使えない
  開いたフォームから次のフォームを開く可能性があるので、APIのSetForegroundWindowも使い難い?

以上、アドバイスいただけますでしょうか。

けんたろー
作成: 2019/04/16 (火) 14:53:13
通報 ...
1

2.メインフォームから子、孫まで開く可能性があり、開いたフォームを前面に表示したい
  常に最善面表示にしたい訳ではない

子フォーム、孫フォームの「ポップアップ」プロパティを「はい」に設定するのではだめですか。

2
けんたろー 2019/04/16 (火) 15:18:21 a63a9@c4786

ありがとうございます。

子、孫ファームのポップアッププロパティは、「はい」にしております。

そうしていても、メインフォームの裏にかくれてしまいます。

3
hatena 2019/04/16 (火) 15:31:12 修正

メインフォームの「ボップアップ」は「いいえ」になってますか。

メインフォームの「ボップアップ」を「はい」にしたまま、
子フォームがメインフォームの裏に隠れないようにするには、子フォームの「作業ウィンドウ固定」を「はい」にしてください。

4
けんたろー 2019/04/16 (火) 15:32:39 a63a9@c4786

訂正します。

稀に隠れてしまう場合がありますので、
明示的に前面表示にするコーディングをしたいと思ってきます。

5
けんたろー 2019/04/16 (火) 15:33:57 a63a9@c4786

メインフォームのポップアッププロパティも「はい」です。

6
けんたろー 2019/04/16 (火) 15:34:38 a63a9@c4786

「作業ウィンドウ固定」を「はい」ですか。ありがとうございます。

7

別案として、acDialog でダイアログモードで開いたときに、APIで無理やりサイズ変更可能にする方法もあります。
下記でその方法を使ってますのでご参考に。

拡張ズームボックス関数
Shift+F2 または DoCmd.RunCommand acCmdZoomBox で表示されるズームボックスという機能がありますが、開くときにフォントサイズを指定したい、また、ウィンドウのサイズを変更したい。 標準のズームボックスでは既定値のフォントサイズが小さくて見にくい、あるいは、テキスト量が多いとき見にくい、ということで、このような要望がでることがあると思います。 探してみると T'sWareさんの 汎用ZoomBoxクラス というものが...
fc2

纏めると、方法としては、

  1. メインフォーム「ポップアップ」「いいえ」
    子フォーム、孫フォーム「ポップアップ」「はい」

  2. メインフォーム「ポップアップ」「はい」
    子フォーム、孫フォーム「ポップアップ」「はい」、「作業ウィンドウ固定」「はい」

  3. メインフォーム「ポップアップ」「はい」
    子フォーム、孫フォーム ダイアログモード(acDialog)で開く、APIでサイズ変更可能にする

のいずれかになると思います。
それぞれ、動作が異なりますので、動作を確認して、最適な方法を選択してください。

8
けんたろー 2019/04/16 (火) 20:52:05 a63a9@c4786

貴重な情報ありがとうございます。

参考にさせていただきます。