Visual BASICで Mainフォームからある操作をしたときに、子フォーム(グリッド)を 「子フォーム名.show」 の命令で表示させています。
その子フォームを閉じたくないのに、Mainフォームをマウスでクリックすると子フォームが閉じてしまいます。
べつに、Mainフォームのマウスダウンイベントで子フォームを閉じる命令は記述していないのですが。
また、「子フォーム名.show」と「子フォーム名.visual=true」とではなにが違うのですか?
分かる方がおられましたが教えてください。

A 回答 (3件)

まず、Visual=TrueではなくてVisible=Trueです。


これについてはヘルプのVisibleプロパティ項に下記の記載があります。
「フォームの Show メソッドまたは Hide メソッドを使うことは、フォームの Visible プロパティをコードで真 (True) または偽 (False) に設定することと同じです。」
という事なので素直に
Show = (Visible = True)
Hide = (Visible = False)
と考えましょう。

また、子フォーム表示中に親フォームをクリック出来る
という事は、間違い無く、モードレスウィンドウで
表示させていると思われますが、このとき親フォームを
クリックして子フォームが閉じられることは絶対に
ありません。したがって、イベントプロシージャに
Unloadが記述されている可能性大です。
MouseDownイベントだけではなく、
子フォームのClick、Activateイベント
あるいは子フォームのLostFocusイベントなども
調査する必要があるのではないでしょうか?
シングルステップでデバックしてみてはいかがでしょうか。
    • good
    • 0
この回答へのお礼

詳しい解説、ありがとうございました。 Visible と Show の関係が似ていてよく分からなかったのでが、これで明快になりました。
今後ともよろしくお願いします。

お礼日時:2001/04/19 23:20

Mainフォームがアクティブになっているだけで、子フォームは


閉じられていないのではないでしょうか?

子フォーム名.Show vbModeless, Me

とすれば、親フォームより後ろになることはありません。

まあ、親フォームを触らせないようにするのなら、

子フォーム名.Show vbModal

でもよいですが・・・。
    • good
    • 0
この回答へのお礼

ご教示ありがとうございました。なるほど、子フォームは消えてはいず、下に隠れていました。子フォーム名.Show vbModeless, Me として解決しました。
今後ともよろしくお願いします。

お礼日時:2001/04/19 23:12

要するに親フォームから呼び出された子フォームが表示されている間は親フォームの操作ができないようになればいいのですよね?


子フォームを開くときに
「子フォーム名.show 1」
と記述してください。
そうすると子フォームが表示されている間は親フォームの操作は行えなくなるので、勝手に消えちゃうことはなくなりますよ。

showとVisual=Trueは表示する処理と見えないように表示しているものを見えるようにすると言うような違いがあるのではないでしょうか。
だからVisual=falseの状態でshowとしても表示されないと思います。
    • good
    • 0
この回答へのお礼

ご教示ありがとうございました。子フォームは消えてはいず、下に隠れていました。「子フォーム名.show 1」 とすると、不用意にメインフォームに戻らなくできることが確かめられました。これは使えそうです。今後ともよろしくお願いします。

お礼日時:2001/04/19 23:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード


人気Q&Aランキング

おすすめ情報