プロが教えるわが家の防犯対策術!

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

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

A 回答 (11件中1~10件)

テキストボックス、オプションボタン、チャックボックス、ボタン、等の配置の場合、配置した順序でカーソルの


位置が決まってきます。テキストボックスとは別に、カーソルを設定したい場合は、SetFocusメソッドを使ってフォーカスを設定すると、はじめのカーソルのフォーカス位置が自由に設定できます。

この回答への補足

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

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

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

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

補足日時:2001/11/14 11:19
    • good
    • 0

カーソルを非表示にする方法なら知ってるのですが・・・


カーソルは表示してあって、点滅させないって事ですよね?

この回答への補足

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

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

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

これでわかりますか??

補足日時:2001/11/14 11:18
    • good
    • 0

それなら、テキストボックスではなく、ラベルを使用してみては?


BackColorを白にするだけで、テキストみたいに見えますよ。
    • good
    • 0

追記です


BorderStyle=1(実線)にすると、なおごまかせます。。。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/11/14 11:54

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



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

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

この回答への補足

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

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

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

補足日時:2001/11/14 12:33
    • good
    • 0

配置した順番については、プロパティのTabIndexの番号順にフォーカスが移動しますので、それに注意すればいいと思います。


オプションボタンのフォーカスの未指定については、
option.value = false を指定します。
初期画面の場合は、Private Sub Form_Activate()
内で指定すればいいです。
サンプルの画面でいろいろ試してみたりしてがんばってください。
    • good
    • 0
この回答へのお礼

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

お礼日時:2001/11/15 11:38

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



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

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


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

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

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

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


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

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

がんばってください。
    • good
    • 0
この回答へのお礼

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

がんばります!!

お礼日時:2001/11/15 11:37

訂正です。



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

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

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

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



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

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