こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

テキストBOXについて

フォーム上にテキストボックスを配置して実行すると
カーソル(入力するための)がきて点滅してしまいます。

そうしなくていい方法はあるのでしょうか?

投稿日時 - 2001-11-14 10:27:06

QNo.168417

すぐに回答ほしいです

質問者が選んだベストアンサー

>その時にひとつも選択されていなくて コマンドボタンを押すとエラーメッセージボックス

ロード時にコマンドボタンの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

投稿日時 - 2001-11-14 12:58:21

このQ&Aは役に立ちましたか?

2人が「このQ&Aが役に立った」と投票しています

回答(11)

ANo.11

またまた追記です。(最近書き忘れが多い・・・)

親になるピクチャボックスのプロパティを
With .Picture1
  .Appearance = 0 '平面
  .BorderStyle = 0 'なし
  .BackColor = &H8000000F 'ここはフォームのバックカラー
  .AutoRedraw = True
End With
とすると、ピクチャボックスがフォームと同化します。

投稿日時 - 2001-11-14 13:50:11

お礼

いろいろと丁寧にありがとうございました。
初めて知ったこといろいろありましたが
とりあえず、みなさんがアドバイスしてくださったことを
いろいろと試してみたいと思います。

投稿日時 - 2001-11-15 11:35:52

ANo.9

訂正です。

「yanmaa」さんの発言
>さらにTAGOSAKU7さん
>~~~~~~
>注意して下さい。

確かにそうですね。。。
Me.Enableの操作は危険でしたね。。。
m(__)m

#7なら大丈夫ですよね?

投稿日時 - 2001-11-14 12:42:53

ANo.8

テキストボックスのプロパティ「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の時だけ有効です。

がんばってください。

投稿日時 - 2001-11-14 12:28:16

お礼

丁寧にありがとうございました。
初めて知ったこといろいろありましたが
とりあえず、みなさんがアドバイスしてくださったことを
いろいろと試してみたいと思います。

がんばります!!

投稿日時 - 2001-11-15 11:37:20

ANo.7

もっと簡単な方法がありました。

以下の手順でフォームのデザイン変更を行うと、各コントロールは使用不可になります。

1.フォームにピクチャボックス(Picture1)を作成


2.フォーカスを当てたくない各コントロールをピクチャボックスに貼り付ける
(既存のフォームに存在する各コントロールを、SHIFTキーを押しながら選択して切り取りを実行、Picture1をクリックして貼り付け)
この時フォーム内に閉じるコマンドボタンがある時は、それはPicture1に貼り付けないでください。

3.Picture1.Enabled = False
とするのです。

4.各コマンドボタンを右クリックで最前面へ移動を選択

5.Picture1のサイズをフォームのサイズにあわせる


以上の手順です。
この方法は、書くコントロールの親をフォームからピクチャボックスに変更し、その親を使用不可にする事により、コントロールの無効を制御できます。

投稿日時 - 2001-11-14 12:21:49

ANo.6

配置した順番については、プロパティのTabIndexの番号順にフォーカスが移動しますので、それに注意すればいいと思います。
オプションボタンのフォーカスの未指定については、
option.value = false を指定します。
初期画面の場合は、Private Sub Form_Activate()
内で指定すればいいです。
サンプルの画面でいろいろ試してみたりしてがんばってください。

投稿日時 - 2001-11-14 12:06:59

お礼

ありがとうございました。
いろいろと試してみたいと思います。

投稿日時 - 2001-11-15 11:38:54

ANo.5

>どのオプションボタンにもカーソルを選択させたくない場合は どのように設定すればよいですか??

方法は二つあります。
1.フォームの使用不可
Me.Enabled=False

2.フォームの内容をピクチャボックスに貼り付け、ピクチャボックスをフォームの中に最前面にする。ユーザー側には全てのコントロールが見えるけど、実際には各コントロールの描かれたピクチャボックスが表示されているわけです。

投稿日時 - 2001-11-14 11:46:00

補足

オプションボタンは3つあって
どれかひとつを選んで次のフォームにいきたいんです。

最初そのオプションボタンがあるフォームがLoadされ
どれも選択されていなくて、ひとつを選択し
コマンドボタンで次のフォームに移りたいんです。

その時にひとつも選択されていなくて
コマンドボタンを押すとエラーメッセージボックス
を出すようにしたんです・・・。

投稿日時 - 2001-11-14 12:33:56

ANo.4

追記です
BorderStyle=1(実線)にすると、なおごまかせます。。。

投稿日時 - 2001-11-14 11:30:33

お礼

ありがとうございます。
そういう使い方もあったんですねぇ。

投稿日時 - 2001-11-14 11:54:25

ANo.3

それなら、テキストボックスではなく、ラベルを使用してみては?
BackColorを白にするだけで、テキストみたいに見えますよ。

投稿日時 - 2001-11-14 11:21:46

ANo.2

カーソルを非表示にする方法なら知ってるのですが・・・
カーソルは表示してあって、点滅させないって事ですよね?

投稿日時 - 2001-11-14 11:05:37

補足

すみません、説明不足でした・・・。

え~っとカーソル非表示ではなく
そこにイベントというか何と言うか・・・

そのテキストボックスにはとある処理をして値だけを表示したいので、
実行する側としては絶対に触らせたくないです。

これでわかりますか??

投稿日時 - 2001-11-14 11:18:16

ANo.1

テキストボックス、オプションボタン、チャックボックス、ボタン、等の配置の場合、配置した順序でカーソルの
位置が決まってきます。テキストボックスとは別に、カーソルを設定したい場合は、SetFocusメソッドを使ってフォーカスを設定すると、はじめのカーソルのフォーカス位置が自由に設定できます。

投稿日時 - 2001-11-14 10:54:30

補足

>テキストボックス、オプションボタン、チャックボックス、ボタン、等の配置の場合、配置した順序でカーソルの 位置が決まってきます。

これは知りませんでした・・・。

あと、オプションボタンを3つ配置しているのですが
たしかに実行すると1番最初に配置したオプションボタンに
カーソルが選択されています。

どのオプションボタンにもカーソルを選択させたくない場合は
どのように設定すればよいですか??

投稿日時 - 2001-11-14 11:19:40

あなたにオススメの質問