- ベストアンサー
テキストボックスのフォーカスについて
テキストボックスの設定としては、右揃えにしてフォーカスが常に一番右に表示させていたいのですが、常に一番右に表示させる方法がわかりません。 なので、分かる方教えていただけないでしょうか? 一番右というのはテキストボックスに数字などが入力されてもフォーカスは常に入力された数字の右側にフォーカスがあるということです。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。ベタですがこんな感じ? Private Sub Text1_GotFocus() Text1.SelStart = Len(Text1.Text) + 1 End Sub ' Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = 37 Then KeyCode = 0 Text1.SelStart = Len(Text1.Text) + 1 End Sub ' // マウス操作でカーソルも移動させたくないなら Private Sub Text1_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) Text1.SelStart = Len(Text1.Text) + 1 End Sub
その他の回答 (6)
- KenKen_SP
- ベストアンサー率62% (785/1258)
> テキストボックスに対してキーボードから小数点を打つとカーソルが > 数字の左に行ってしまい、一番右に行ってくれません・・・ すみませんが、どういう状況か理解できません。当方では、小数点の 入力も特にカーソルが数字の左に行く(?)という現象は確認できません。 #5 ご回答で気づいたのですが、電卓を作ってたのですね。 現状作成中のものから別案になってしまいますが、私なら数字表示に ラベルを使います。そして、フォームの KeyPreview プロパティーを True にします。カーソルの位置やコントロールのフォーカスを気に する必要はありません。 非常に大雑把ですがこんな感じです。試してみて下さい。 前提: フォームに Label1 を配置 Private Sub Form_Load() ' // KeyPressなどのキーイベントをすべてフォームが受け取るようにする Me.KeyPreview = True ' // 結果表示用ラベルの外観をテキストボックス風に With Label1 .Caption = "" .Alignment = 1 .BackColor = RGB(255, 255, 255) .BorderStyle = 1 End With End Sub Private Sub Form_KeyPress(KeyAscii As Integer) Dim s As String s = Chr$(KeyAscii) Select Case True Case s = Chr$(8) ' // BackSpace On Error Resume Next Label1.Caption = Left$(Label1.Caption, Len(Label1.Caption) - 1) On Error GoTo 0 Case s Like "[0-9]" Label1.Caption = Label1.Caption & s Case s = "." ' // 小数点は2つ以上は打てないようにする等の処理 Case s = "+" ' // その他四則演算子の場合の処理 End Select End Sub ' // 00 とか 01 などにならないよう補正する Private Sub Label1_Change() If Label1.Caption Like "0[0-9]" Then Label1.Caption = Mid$(Label1.Caption, 2) End If End Sub
- emsuja
- ベストアンサー率50% (1065/2116)
先日の電卓の続きでしょうか? Text1.SelStart で、カーソルの位置が設定できます。 がんばってくださいね。
- onlyrom
- ベストアンサー率59% (228/384)
>フォーカスは常に入力された数字の右側に フォーカスじゃなくて、カーソルのことでせうね、きっと。 VB6がないのでなんですが、 テキストボックスのGotFocusイベントで、SelStartプロパティを使うのは? '---------------------------------- Private Sub Text1_GotFocus() Text1.SelStart = Len(Text1.Text) + 1 End Sub '---------------------------------- でどうでしょう。 外しましたらご容赦! 以上。
- imogasi
- ベストアンサー率27% (4737/17069)
VBAかVBかVBの.NETか6.0かそういうことも書かないで質問するとは・・。 VBAでもVBと書いて質問するものも居るのが実情だし。 TextのプロパティのAlignment(TextAlign)で解決することか解決しないことなのか、も書いておくべきと思う。
補足
すみませんでした・・・ VB6.0です。 TextのプロパティのAlignmentで右揃えにしてあるのですが、それだけでは数字が入力されると数字の左側にカーソルが行ってしまうので、それを常に右端から動かないようにしたいのです。
- keirika
- ベストアンサー率42% (279/658)
NO.1です。 VBのカテゴリであることを失念していました。 申し訳ありません。
- keirika
- ベストアンサー率42% (279/658)
1.コントロールツールボックスを表示します。 2.デザインモードをONにします。 3.テキストボックスをクリックします。 4.デザインモードの隣のプロパティを押します。 5.プロパティウィンドウが表示されます。 6.ウィンドウの中にTextAlignがありますので、3-fmTextAlignRight に変更します。 7.×でウィンドウを閉じます。 8.デザインモードをOFFにします。 以上です。 EXCEL2003使用
補足
こんな方法があるんですね~知りませんでした。 大体はこの方法でできたのですがテキストボックスに対してキーボードから小数点を打つとカーソルが数字の左に行ってしまい、一番右に行ってくれません・・・ どうしたらよいでしょうか?