フォームをアクティブにするには?

解決


m  2005-05-24 02:18:23  No: 89981

環境は VB6.0 SP4 です。

スプレッドコントロールについての質問です。

①スプレッドの左端(何もない場所)をクリック
②行にいるときにボタンを押す

①と②いずれかの場合に別フォームを呼び出しています。(同じ処理です)

別フォームを開きそのフォームを閉じてメインのフォームへ戻ってきたときに、
フォームは見た目はアクティブになってるのですが(タイトルバーが青色)、①の時だけは一度フォームのどこかをクリックしないとアクティブになりません。(見た目はアクティブ?)
別フォームを閉じて戻ってきたときにSetFocusやAPI等を使って、フォームをアクティブにしているのですが、だめでした。
どうしてでしょうか?


じゃんぬねっと  URL  2005-05-24 02:25:17  No: 89982

「アクティブ」と「最前面」に表示は別です。


Take  2005-05-24 02:45:47  No: 89983

下記とかでは ダメなのでしょうか?

'** サブフォームのボタン押下イベント
Private Sub BtnMenuFrm_Click()
    '** サブフォームを隠す
    Me.Hide
    '** メインフォームを表示する
    FrmMain.Show
End Sub


m  2005-05-24 02:59:25  No: 89984

>「アクティブ」と「最前面」に表示は別です。
これはどういったことでしょうか?

>下記とかでは ダメなのでしょうか?
>
>'** サブフォームのボタン押下イベント
>Private Sub BtnMenuFrm_Click()
>    '** サブフォームを隠す
>    Me.Hide
>    '** メインフォームを表示する
>    FrmMain.Show
>End Sub
このようにしていますが、①の時はだめです。


m  2005-05-24 03:05:41  No: 89985

①のスプレッドの左端というのは

■■■■■■■■
■□□□□□□□    1行目
■□□□□□□□    2行目
■□□□□□□□    3行目
■□□□□□□□    4行目

の行の黒いところのことです。


m  2005-05-24 03:06:47  No: 89986

↑白いところです。(送信したら色が反転した。)


特攻隊長まるるう  2005-05-24 03:14:24  No: 89987

>>「アクティブ」と「最前面」に表示は別です。
>これはどういったことでしょうか?
http://www.google.com/search?hl=ja&q=%E3%83%95%E3%82%A9%E3%82%A2%E3%82%B0%E3%83%A9%E3%82%A6%E3%83%B3%E3%83%89%E3%82%A6%E3%82%A3%E3%83%B3%E3%83%89%E3%82%A6&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=

>別フォームを閉じて戻ってきたときにSetFocusやAPI等を使って、
>フォームをアクティブにしているのですが、だめでした。
こういった現象の場合『アクティブにならない』という結果を
受けて『何かが』悪いんだろうけど、強制的にアクティブにする
…というのではなく、アクティブにならない原因を追求して
その原因を取り除けないか?検討するのが正攻法です。

スプレッドのイベントか何かが邪魔してるんじゃないですか?。


m  2005-05-24 03:30:13  No: 89988

>スプレッドのイベントか何かが邪魔してるんじゃないですか?。
試しにスプレッドのイベントを一つだけにして、やってみました。

Private Sub SprData_Click(ByVal Col As Long, ByVal Row As Long)
    F_SubForm.Show vbModal, Me
End Sub

これだけでも、①の場合は一度別の場所をクリックしないと、反応がありません。
vbModelessでひらくと大丈夫です。F_SubFormにはボタンを一つおいてそのボタンのイベントに Unload Me だけ書いています。


Take  2005-05-24 03:39:50  No: 89989

>F_SubFormにはボタンを一つおいて
>そのボタンのイベントに Unload Me だけ書いています。
  Unload Me
行の下に
  メインフォーム.Show
を追加で如何でしょうか?


特攻隊長まるるう  2005-05-24 03:48:02  No: 89990

>>スプレッドのイベントか何かが邪魔してるんじゃないですか?。
>試しにスプレッドのイベントを一つだけにして、やってみました。
いや、それ無理だから(^^;)コードが書かれてるイベントが一つ
になっただけで、イベントは起こってるし、それに伴うOS側の
処理は健在でしょ?。そーゆー解釈するならボクの書き込みは
あんまり意味無いかな…。忘れてくださいな。


m  2005-05-24 18:19:15  No: 89991

>いや、それ無理だから(^^;)コードが書かれてるイベントが一つ
>になっただけで、イベントは起こってるし、それに伴うOS側の
>処理は健在でしょ?。そーゆー解釈するならボクの書き込みは
>あんまり意味無いかな…。忘れてくださいな。
イベントは起こっているというのは、どういうことですか?


特攻隊長まるるう  2005-05-24 19:32:37  No: 89992

>イベントは起こっているというのは、どういうことですか?
そのまま。起こっているから起こってる。イベントはコントロール
(今回の場合はスプレッド)が自分で起こすものでフォーム側で
どうにかできるものではないです。ちなみに SprData_Click は
正確に言えばイベントではなく、イベントプロシージャ。イベントが
起こった時に実行される関数で、イベントそのものではないです。
ただのプロシージャだからコード上からも普通の自作関数と
同じように呼べます。
自分でイベントを発生させるユーザコントロールを作れば分かるかも?
分からなければヘルプでイベントがどういうものか調べて下さい。

キーワードは書いてあります。調べずに質問や回答しても全く
見当外れの方向に行ってしまいますよ?。


m  2005-05-24 19:41:52  No: 89993

>自分でイベントを発生させるユーザコントロールを作れば分かるかも?
勉強不足ですので、いろいろとやってみたいと思います。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加