- ベストアンサー
テキストBOXについて
フォーム上にテキストボックスを配置して実行すると カーソル(入力するための)がきて点滅してしまいます。 そうしなくていい方法はあるのでしょうか?
- みんなの回答 (11)
- 専門家の回答
質問者が選んだベストアンサー
>その時にひとつも選択されていなくて コマンドボタンを押すとエラーメッセージボックス ロード時にコマンドボタンのEnable=Flaseにしておいて、オプションボタンのクリックイベントが発生したら、コマンドボタンのEnable=Trueにした方が単純だと思いますが・・・・ 言われた通りの仕様であるならば・・・ オプションボタンはコントロール配列ですか? もし違うなら、オプションボタンをコントロール配列にしておくと便利です。。。 オプションボタンの名前を全て同じにしておいてIndexに違う番号を割り当てると、コントロール配列が作成されます。 オプションボタン名=Option1 Private Sub Command1_Click() Dim opBtn As OptionButton Dim blnWork As Boolean Dim getIndex As Integer '各オプションボタンが選択されたかをチェック For Each opBtn In Option1 If opBtn Then blnWork = True getIndex = opBtn.Index Exit For End If Next opBtn If blnWork Then MsgBox "[" & Option1(getIndex).Caption & "] が選択されました" Else MsgBox "だめー" End If End Sub
その他の回答 (10)
- TAGOSAKU7
- ベストアンサー率65% (276/422)
またまた追記です。(最近書き忘れが多い・・・) 親になるピクチャボックスのプロパティを With .Picture1 .Appearance = 0 '平面 .BorderStyle = 0 'なし .BackColor = &H8000000F 'ここはフォームのバックカラー .AutoRedraw = True End With とすると、ピクチャボックスがフォームと同化します。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
訂正です。 「yanmaa」さんの発言 >さらにTAGOSAKU7さん >~~~~~~ >注意して下さい。 確かにそうですね。。。 Me.Enableの操作は危険でしたね。。。 m(__)m #7なら大丈夫ですよね?
- yanmaa
- ベストアンサー率45% (207/457)
テキストボックスのプロパティ「Locked」を「True」にするとユーザはキー入力が不可能になります。但し、マウスカーソルの表示はされます。 あとは「KeyPress」のイベントで「KeyAscii」の値を「0」にするとキー入力をキャンセルできます。 なお値を出すだけならばラベルを使う方が良いでしょう。 さらにTAGOSAKU7さんの「Me.Enabled=False」はフォームに対してすると全てのイベントが取れなくなってしまうので、通常あるイベント中に他のイベントを発生させない為に使うのが本来の使い方ですので Sub 関数orイベント Me.Enabled=False 処理 Me.Enabled=True End Sub と使うのが一般的 そうしないと「閉じる」ボタンすら聞かなくなって停止できないので注意して下さい。 さらに補足 各オブジェクトの「TabIndex」のプロパティ値を変えるとタブキーを押した時のオブジェクトをフォーカス順序を変えれます。0~順に制御(空き番はOK)これが初期のフォーカスにもなりますが、通常SetFocusメソッドを使ってフォーカスを設定します。 但し、SetFocusはEnabled=Trueの時だけ有効です。 がんばってください。
お礼
丁寧にありがとうございました。 初めて知ったこといろいろありましたが とりあえず、みなさんがアドバイスしてくださったことを いろいろと試してみたいと思います。 がんばります!!
- TAGOSAKU7
- ベストアンサー率65% (276/422)
もっと簡単な方法がありました。 以下の手順でフォームのデザイン変更を行うと、各コントロールは使用不可になります。 1.フォームにピクチャボックス(Picture1)を作成 2.フォーカスを当てたくない各コントロールをピクチャボックスに貼り付ける (既存のフォームに存在する各コントロールを、SHIFTキーを押しながら選択して切り取りを実行、Picture1をクリックして貼り付け) この時フォーム内に閉じるコマンドボタンがある時は、それはPicture1に貼り付けないでください。 3.Picture1.Enabled = False とするのです。 4.各コマンドボタンを右クリックで最前面へ移動を選択 5.Picture1のサイズをフォームのサイズにあわせる 以上の手順です。 この方法は、書くコントロールの親をフォームからピクチャボックスに変更し、その親を使用不可にする事により、コントロールの無効を制御できます。
- patak
- ベストアンサー率23% (108/457)
配置した順番については、プロパティのTabIndexの番号順にフォーカスが移動しますので、それに注意すればいいと思います。 オプションボタンのフォーカスの未指定については、 option.value = false を指定します。 初期画面の場合は、Private Sub Form_Activate() 内で指定すればいいです。 サンプルの画面でいろいろ試してみたりしてがんばってください。
お礼
ありがとうございました。 いろいろと試してみたいと思います。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
>どのオプションボタンにもカーソルを選択させたくない場合は どのように設定すればよいですか?? 方法は二つあります。 1.フォームの使用不可 Me.Enabled=False 2.フォームの内容をピクチャボックスに貼り付け、ピクチャボックスをフォームの中に最前面にする。ユーザー側には全てのコントロールが見えるけど、実際には各コントロールの描かれたピクチャボックスが表示されているわけです。
補足
オプションボタンは3つあって どれかひとつを選んで次のフォームにいきたいんです。 最初そのオプションボタンがあるフォームがLoadされ どれも選択されていなくて、ひとつを選択し コマンドボタンで次のフォームに移りたいんです。 その時にひとつも選択されていなくて コマンドボタンを押すとエラーメッセージボックス を出すようにしたんです・・・。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
追記です BorderStyle=1(実線)にすると、なおごまかせます。。。
お礼
ありがとうございます。 そういう使い方もあったんですねぇ。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
それなら、テキストボックスではなく、ラベルを使用してみては? BackColorを白にするだけで、テキストみたいに見えますよ。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
カーソルを非表示にする方法なら知ってるのですが・・・ カーソルは表示してあって、点滅させないって事ですよね?
補足
すみません、説明不足でした・・・。 え~っとカーソル非表示ではなく そこにイベントというか何と言うか・・・ そのテキストボックスにはとある処理をして値だけを表示したいので、 実行する側としては絶対に触らせたくないです。 これでわかりますか??
- patak
- ベストアンサー率23% (108/457)
テキストボックス、オプションボタン、チャックボックス、ボタン、等の配置の場合、配置した順序でカーソルの 位置が決まってきます。テキストボックスとは別に、カーソルを設定したい場合は、SetFocusメソッドを使ってフォーカスを設定すると、はじめのカーソルのフォーカス位置が自由に設定できます。
補足
>テキストボックス、オプションボタン、チャックボックス、ボタン、等の配置の場合、配置した順序でカーソルの 位置が決まってきます。 これは知りませんでした・・・。 あと、オプションボタンを3つ配置しているのですが たしかに実行すると1番最初に配置したオプションボタンに カーソルが選択されています。 どのオプションボタンにもカーソルを選択させたくない場合は どのように設定すればよいですか??
お礼
いろいろと丁寧にありがとうございました。 初めて知ったこといろいろありましたが とりあえず、みなさんがアドバイスしてくださったことを いろいろと試してみたいと思います。