掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
Frame.visible=False が有効になりません。 (ID:113473)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>もしよろしければ、その辺りも教えていただけますでしょうか? >お手数おかけしてすみません。 うぅんー。確かにちょっと手間ですねぇ。お金をもらえない範囲では この辺が限界です…詳しく調べる気はありません(この問題に関して もう少し範囲の狭い質問がくるか、自分が必要な情報になったら 答える事はあるかもしれませんが…)。 …正直『これ!』といった理由が分かった訳ではありません。 まず…KeyDown イベント、KeyUp イベントについてヘルプで調べてください。 [ヘルプより抜粋] >解説 > >フォーカスが設定されているオブジェクトでは、KeyDown イベントおよび >KeyUp イベントによってすべてのキー操作を検出できます。フォームに >フォーカスが設定できるのは、フォーム上に有効なコントロールが表示 >されていない場合だけです。 つまり、 ・[追加]プロジェクトごと新規作成 ・フォームは新規作成 ・Frame のプロパティは全てデフォルト ・他のコントロールは貼り付けない ・[追加]上の条件の例外としてテキストボックス1個のみ Frame 以外の場所に貼り付ける ・[確認]Form1.KeyPreview = False のまま この状態ではテキストボックスが有効となり Form_KeyDown イベントは 起こらないはずです。 [テスト3] 新しく貼り付けたテキストボックスの KeyDown イベント Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyAdd Then Frame1.Visible = True ' ※ End If If KeyCode = vbKeySubtract Then Frame1.Visible = False ' ※ End If If KeyCode = vbKeyPageUp Then Frame1.Visible = True ' ※ End If If KeyCode = vbKeyPageDown Then Frame1.Visible = False ' ※ End If End Sub だと上手く動きます? …で、 ・フォームは新規作成 ・Frame のプロパティは全てデフォルト ・他のコントロールは貼り付けない で Form_KeyDown イベントが有効なのは、他に有効なコントロールが 無いから…だと思うんですが…。 もう一度言いますが、ボクの環境(Win2000(Sp4)VB6.0(Sp5))では 正常に動きます(T▽T)。…もしかしたら >新しくFormを作ってそこにこのFrame1をそのまま移動させて って書いてるから Frame1 になんか乗ってたりします?? Frame1 も新規貼り付けでやってて…同じ症状なら…OSの違い?…とか ちょっと調べるには手間が掛かる…というかマイクロソフトに聞いて 下さいって話になるかもしれません。 ここで『全体に共通のキーボード処理ルーチンを記述する』場合、 それぞれのコントロールで処理するのは面倒なのでフォームで KeyPreview プロパティを真(True)に設定するわけです。 [ヘルプより抜粋] >メモ > >KeyPreview プロパティが真 (True) に設定されている場合、KeyDown >イベントおよび KeyUp イベントは、フォーム上のコントロールよりも先に、 >フォームによって認識されます。 ここで初めて Form_KeyDown イベントが有効になってくる…はず…なんですが …初心者プログラマさんの環境では [最初の書き込みより抜粋] >としているのですが、最初のTrueは有効になるのに >vbKeyPageDown ThenのあとのFalseが有効にならず、 >それどころか、そのほかのプログラムもストップしてしまいます。 >(エラーにはならないのですが、全ての動きがなくなってしまいます。) >終了することしか出来ません。 …しかも KeyPreview についてご存知ない様子…つまり False のまま。 ということでまだ状況がつかめてないんですよ(^^;)こちらで再現できません。 Xp のマシンで試しても良いんですが…[VB6.0]インストールしてないですし… で、結局、なんでか分からないけど本来取れるはずの無い(?)(←いまいち 情報に自信なし) Form_KeyDown イベントが走ってバグってるのか、有効な コントロールが無くて Form_KeyDown イベントは正常に起こってるけど その後の処理で非表示になったオブジェクト(コントロール?)に制御が 移ってるのか、フォームの制御がなんかのツボにはまって戻ってこないか… …でもそれなら >(やはり"×"をクリックして終わらせるしかない感じになる) これがおかしい。"×"をクリックしても反応しなくなる…なら分かる んですが…。 では Form_KeyDown イベントが起こってないだけ? …それもおかしい。 >※ 印の所に全てブレークポイントを >置いてチェックしてみたところ、ブレークさせた場合は >そのあと進めると、Frame1はVisible=Falseになって、 >画面から消えました。 イベントが起こってなければブレークポイントで止まるわけがない。 わけわかりませんw。で、原因の追求はあきらめて本来の使い方 > フォームのプロパティ KeyPreview = True > で実行したらどうなります? となったわけです。 現状で言える事は『何かがおかしい』w どれが原因かは上にあげたようなことを一つ一つ調べてもらわないと 分かりません。くどいようですがボクの環境(Win2000(Sp4)VB6.0(Sp5)) では正常に動きます(T▽T)。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.