Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


1605 / 2272 ツリー ←次へ | 前へ→

【6303】フォームの移動について なとり 05/9/15(木) 17:47 質問[未読]
【6305】Re:フォームの移動について クロ 05/9/16(金) 11:55 発言[未読]
【6308】Re:フォームの移動について なとり 05/9/16(金) 19:10 質問[未読]
【6309】Re:フォームの移動について てっちゃん 05/9/17(土) 9:32 回答[未読]
【6316】Re:フォームの移動について なとり 05/9/20(火) 10:14 質問[未読]
【6318】Re:フォームの移動について てっちゃん 05/9/20(火) 15:43 回答[未読]
【6320】Re:フォームの移動について なとり 05/9/21(水) 10:40 質問[未読]
【6321】Re:フォームの移動について クロ 05/9/21(水) 14:44 発言[未読]
【6325】Re:フォームの移動について なとり 05/9/21(水) 17:17 お礼[未読]

【6303】フォームの移動について
質問  なとり  - 05/9/15(木) 17:47 -

引用なし
パスワード
   いつも拝見させていただいています。
質問をさせていただきたいので、ご存知の方見えましたら、ご教授ください。

現在、複数の画面を作成し、画面遷移を行っています。
(メニュー画面から処理画面に遷移するといった感じです。)

画面の表示は最大化(DoCmd.Maximize)して表示していますが、
画面遷移するタイミングで、最大化される遷移先の画面が一瞬見えてしまいます。
この画面が最大化されるのを見せないように画面遷移を行うことは
できないのでしょうか?

よろしくお願い致します。

【6305】Re:フォームの移動について
発言  クロ  - 05/9/16(金) 11:55 -

引用なし
パスワード
   こんにちは、クロです。

▼なとり さん:
>現在、複数の画面を作成し、画面遷移を行っています。
>(メニュー画面から処理画面に遷移するといった感じです。)

この方法を詳しく書かれたほうがよいかと...

【6308】Re:フォームの移動について
質問  なとり  - 05/9/16(金) 19:10 -

引用なし
パスワード
   ▼クロ さん:
>こんにちは、クロです。
>
>▼なとり さん:
>>現在、複数の画面を作成し、画面遷移を行っています。
>>(メニュー画面から処理画面に遷移するといった感じです。)
>
>この方法を詳しく書かれたほうがよいかと...

こんにちは、クロさん ご指摘ありがとうございます。
そして、説明内容が不足していまして、すみませんでした。

画面遷移の方法を補足いたします。
1.メニュー(A画面)から一覧画面(B画面)を開く
2.処理画面(C画面)を開く
3.C画面を閉じる
4.B画面を閉じる

というような、画面遷移を行っていて、呼ばれたフォーム(全画面)は
"DoCmd.Maximize" を行っています。
(今は"Form_Activate"で行っています。)

上記の1〜4の動作を行うと、
1は、ちょっとだけB画面が大きくなる瞬間が見えます。
2は最大化される瞬間は、ほとんど見えません。(画面がチラつく程度)
3はちょっとだけB画面が大きくなる瞬間が見えます。
4は最悪です。A画面が最大化されるのが、かなり見えます。
(表現が難しかったので、このような記述になりましたが、
これで、伝わるでしょうか?)

原因?は別のフォームが最大化されると、(または非アクティブになると?)
最大化表示が解除され、アクティブになるときに最大化される。
ということだと思っています。


下記はフォームをオープン/クローズするために使用しているコマンド
です。

1)のB画面オープン方法
  DoCmd.OpenForm "B画面", , , acFormEdit

2)のC画面オープン方法
  DoCmd.OpenForm "C画面", , , stLinkCriteria
  ※stLinkCriteriaはC画面で表示するレコードの条件

3)のC画面クローズ方法
  DoCmd.Close acForm, Me.Name
  ※B画面を呼ぶような処理はしていません。

4)のB画面クローズ方法
  DoCmd.Close acForm, Me.Name
  ※A画面を呼ぶような処理はしていません。


最初は、Form_Load時に重たい処理しているせいで、起きているのかと
思っていましたが、戻ってきたときには、Form_Load部分は処理されて
いませんでした。
また、A画面の"Form_Activate"では、なにも処理していません。
プロパティでなにか設定があるのではと、色々といじくってみましたが、
現象は解決できません。

画面遷移の時に最大化されるのを表示しない方法はないものでしょうか?
説明が上手にできないので、ご迷惑をおかけしますが、よろしくお願いします。

【6309】Re:フォームの移動について
回答  てっちゃん  - 05/9/17(土) 9:32 -

引用なし
パスワード
   ▼なとり さん:
こんにちは

予想ですが、
フォームの「アクティブ時」イベントで[最大化]し、
「非アクティブ時」イベントで[元のサイズに戻す]していませんか?

「非アクティブ時」に[元のサイズに戻す]をしなければ
最大化のまま保持されると思います。

> 1.メニュー(A画面)から一覧画面(B画面)を開く
> 2.処理画面(C画面)を開く
> 3.C画面を閉じる
> 4.B画面を閉じる

この流れでいけば、
A画面を開いた時に(「開く時」イベントで)[最大化]し、
B画面を閉じる時に(「閉じる時」イベントで)[元のサイズに戻す]
すれば良いのではないかと思います。
(「アクティブ時」「非アクティブ時」イベント不要)


予想の上の回答なので、違ってたらごめんなさい。

【6316】Re:フォームの移動について
質問  なとり  - 05/9/20(火) 10:14 -

引用なし
パスワード
   てっちゃん さん ご回答ありがとうございます。
ご連絡が遅くなりましたが、教えていただいたことを
確認してみました。


>この流れでいけば、
>A画面を開いた時に(「開く時」イベントで)[最大化]し、
>B画面を閉じる時に(「閉じる時」イベントで)[元のサイズに戻す]
>すれば良いのではないかと思います。
>(「アクティブ時」「非アクティブ時」イベント不要)
>
>
>予想の上の回答なので、違ってたらごめんなさい。

アクティブ時の最大化をOpen、またはLoad時にしてみたのですが、
開くときは、最大化されているのですが、1度「非アクティブ」になると
最大化が解除されてしまいます。

>B画面を閉じる時に(「閉じる時」イベントで)[元のサイズに戻す]
ここの意味がよくわかりませんでしたので、もう少し教えていただけますか?
B画面を閉じたら、A画面を表示している(アクティブになる)のですが、
ここでいわれている、「元のサイズに戻す」とは、最大化しないときの
画面サイズでしょうか?そうすると、やりたい事と違ってきてしまいます。
自分の理解のしかたが違っているようでしたら、ご指摘ください。
よろしくお願いします。

【6318】Re:フォームの移動について
回答  てっちゃん  - 05/9/20(火) 15:43 -

引用なし
パスワード
   ▼なとり さん:
こんにちは

まず、
>> 予想ですが、
>> フォームの「アクティブ時」イベントで[最大化]し、
>> 「非アクティブ時」イベントで[元のサイズに戻す]していませんか?
この件はどうでしょう?

わたしの回答は、この予想を前提としています。
この予想が違っていたら、殆ど意味を成しません。


とりあえず、「予想が当たっている」として

> アクティブ時の最大化をOpen、またはLoad時にしてみたのですが、
> 開くときは、最大化されているのですが、1度「非アクティブ」になると
> 最大化が解除されてしまいます。
これについても、前回の回答で
>> 「非アクティブ時」に[元のサイズに戻す]をしなければ
>> 最大化のまま保持されると思います。
と書いておりますが、これは試されましたか?


>>B画面を閉じる時に(「閉じる時」イベントで)[元のサイズに戻す]
>ここの意味がよくわかりませんでしたので、もう少し教えていただけますか?
>B画面を閉じたら、A画面を表示している(アクティブになる)のですが、
>ここでいわれている、「元のサイズに戻す」とは、最大化しないときの
>画面サイズでしょうか?

ごめんなさい。B画面ではなく、「A画面を閉じる時」ですね。
そうです。「元のサイズに戻す」とは、最大化しないときの
画面サイズです。

A,B,C全て「最大化」で表示し、閉じた時(データベースウィンドウの時)
最大化しない(元のサイズ)と「予想」しました。

> そうすると、やりたい事と違ってきてしまいます。
やりたい事とは、他の画面に移った時(Activeにした時)、
最大化されるのを見せたくない。と、捕らえておりました。
なので、最大化のまま移っていけば良いのでは、と思い、
>> 「非アクティブ時」に[元のサイズに戻す]をしなければ
>> 最大化のまま保持されると思います。
と回答させていただきました。

しつこいようですが、私が勝手に「予想」した事です。
違うのであれば、そのあたりを(どのようにしたいのか等を)
書かれると良いでしょう。

それでは

【6320】Re:フォームの移動について
質問  なとり  - 05/9/21(水) 10:40 -

引用なし
パスワード
   ▼てっちゃん さん:
ご回答、ご指摘ありがとうございます。

>>> フォームの「アクティブ時」イベントで[最大化]し、
>>> 「非アクティブ時」イベントで[元のサイズに戻す]していませんか?
>この件はどうでしょう?

フォームのイベントは「開く時」、「読込み時」、「アクティブ時」の
3ヵ所のみで、「非アクティブ時」の処理はなにも行っていません。


>> アクティブ時の最大化をOpen、またはLoad時にしてみたのですが、
>> 開くときは、最大化されているのですが、1度「非アクティブ」になると
>> 最大化が解除されてしまいます。
>これについても、前回の回答で
>>> 「非アクティブ時」に[元のサイズに戻す]をしなければ
>>> 最大化のまま保持されると思います。
>と書いておりますが、これは試されましたか?

はい。(わざと元に戻す処理をいれてみたり、その処理を消してみたり)
何度か試しているのですが、やはり、非アクティブになると、
フォームの最大化が解除されているようで、アクティブになったときに
画面が最大化されるのが見えてしまいます。
プロパティの設定でしょうか?
プロパティの設定がどのように反映されるのか、すべては把握していないので
今から再確認してみます。

>やりたい事とは、他の画面に移った時(Activeにした時)、
>最大化されるのを見せたくない。と、捕らえておりました。
>なので、最大化のまま移っていけば良いのでは、と思い、
>>> 「非アクティブ時」に[元のサイズに戻す]をしなければ
>>> 最大化のまま保持されると思います。
>と回答させていただきました。
>しつこいようですが、私が勝手に「予想」した事です。
>違うのであれば、そのあたりを(どのようにしたいのか等を)
>書かれると良いでしょう。

やりたい事は、てっちゃん さんがいわれている通りです。
画面が遷移する(非アクティブからアクティブになる)時に画面が
最大化されるのを見せたくない。ということです。
てっちゃん さんがいわれるように、非アクティブになったときでも
フォームが最大化のまま保持されれば、問題は解決すると思っていますが、
それが、今できていません。
てっちゃん さんの方では、最大化のまま保持できている(できていた)
ようですので、プロパティでそういった設定があるか、調べてみます。
(何度かプロパティは変更しているので、期待できませんが。)

もし、最大化のまま保持する方法(処理)をご存知でしたら、
ご教授いただけますでしょうか?よろしくお願い致します。

【6321】Re:フォームの移動について
発言  クロ  - 05/9/21(水) 14:44 -

引用なし
パスワード
   てっちゃんさんがレスされているようなのですが、
横レス失礼します

最初のフォームの開く時のイベントで
DoCmd.Maximize
したら後は何もしなくても、他のフォーム(その他オブジェクトを含む)は
ずっと最大化してままではないでしょうか?

戻したいところで
DoCmd.Restore
だけで言いような気がしますが、どうでしょう?

【6325】Re:フォームの移動について
お礼  なとり  - 05/9/21(水) 17:17 -

引用なし
パスワード
   クロ さん
ご回答ありがとうございます。

>最初のフォームの開く時のイベントで
>DoCmd.Maximize
>したら後は何もしなくても、他のフォーム(その他オブジェクトを含む)は
>ずっと最大化してままではないでしょうか?
>
>戻したいところで
>DoCmd.Restore
>だけで言いような気がしますが、どうでしょう?

てっちゃんさん、クロさん いろいろとありがとうございます。
画面のプロパティの設定がまずかったようで、
プロパティの設定を変更して、解決できました。

当方で調べていたら、下記の事がわかりましたので、ご報告いたします。

原因は、フォームのプロパティで「最小化/最大化ボタン」の設定が
「なし」になっていたためでした。この設定を"最小化/最大化ボタン"と
したところ、てっちゃんさん、クロさんが言われていた様に最大化された
まま画面遷移を行うことができるようになりました。


プロパティの設定変更前のフォームについてですが、
てっちゃんさん、クロさんが言われていた様に"DoCmd.Maximize"を行うと、
別画面のサイズも最大化の時のままのようでした。
「ようでした」というのは、非アクティブになってもサイズは
最大化したときと同じようですが、非アクティブの時は最大化が解除され、
最大化されたときのサイズのまま、斜め下にずれている状態でした。

それが、アクティブになると「アクティブ時」の処理で"DoCmd.Maximize"
を行っているため、フォームがACCESSの枠に収まるように
最大化されるという感じでした。
その画面が最大化されるのをなんとかしたかったのですが、おかげさまで
解決できました。

こちらのわかりづらい質問、説明不足のなかを回答していただき本当にありがとうございました。
また、ご迷惑をおかけしてすみませんでした。

1605 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078242
(SS)C-BOARD v3.8 is Free