課題で、Windowsのアクセサリにある電卓(四則のみ)と同じ物をVB6で
作らなければいけません。しかし、キーボードのBackSpaceで、数字を消すことができるんですが、作ったBackSpaceのコマンドでの数字の消し方がわかりません。
どなたか教えてください。
・作ったBackSpaceのコマンドってなに?
キーボード押下で実現できているのならば
いずれにせよ、Command関数で受取れそうな気がします。
>作ったBackSpaceのコマンドで
コマンドボタンだったりする???
テキストボックスに数字を入力してるなら
SelStart プロパティでカーソルの位置が
分かるから、Mid 関数とかの文字列操作
関数でカーソルの位置から1文字消去して
下さい。
早速の返信ありがとうございます。
作ったBackspaceのコマンドというのは、Formにつけるコマンドボタンのことです。
Formに数字のコマンドボタンや演算子のコマンドボタン、
クリアのコマンドボタンを入れて、電卓として完成させなければなりません。
つまり、BackSpaceのコマンドボタンと、キーボードのBackSpaceと、
同じ働きをさせたいということです。
SendMessage(Text1.hwnd, WM_CHAR, VK_BACK, 0)
でできると思う。。。試してないけど・・・
課題の目的に応じて適当である方法を選択して下さい。
『API』を使ってもよく、OSの処理で利用されている
『ウィンドウメッセージ』を利用するなら id_rsa+ さんの
書き込みを参考に。
プログラムでテキストボックスの文字列を編集して同じような
動きに見せる事も出来ます。ヘルプでテキストボックスの各種
プロパティと、『文字列操作』関数を調べて下さい。このレベル
のプログラムの課題ならこっちの方法を要求されているように
思いますが…(?)。今まで何を習ってきたかにもよりますが。
課題だと自分で調べた事を説明できないと落ちるよ?普通は。
質問掲示板でも同じですので、回答にあるキーワードを
調べて、自分の脳みそをどう使ったか分かる質問にして下さい。
電卓だから、単純に最後の数字が消えればいいんでしょ?
Text1.Text = Left$(Text1.Text , Len(Text1.Text) - 1)
SendKeysステートメントでも出来ると思います。
Private Sub Command1_Click()
Text1.SetFocus
SendKeys "{DEL}", True
Command1.SetFocus
End Sub
こんな感じに。
>電卓だから、単純に最後の数字が消えればいいんでしょ?
>Text1.Text = Left$(Text1.Text , Len(Text1.Text) - 1)
自分もそんな気がする。
>電卓だから、単純に最後の数字が消えればいいんでしょ?
そかΣ(‾□‾)
BackSpace の動きを考えちゃってたよ。自分、マヌケ過ぎ〜( _)_
[VB6.0]
Private Sub Command1_Click()
Dim wIndex As Integer
With Me.Text1
If Len(.Text) = 0 Then Exit Sub
If .SelStart = 0 And .SelLength = 0 Then Exit Sub
If .SelLength <> 0 Then
wIndex = .SelStart
.Text = Mid(.Text, 1, .SelStart) _
& Mid(.Text, .SelStart + .SelLength + 1, Len(.Text) - .SelStart - .SelLength)
.SelStart = wIndex
Else
wIndex = .SelStart - 1
.Text = Mid(.Text, 1, .SelStart - 1) _
& Mid(.Text, .SelStart + 1, Len(.Text) - .SelStart)
.SelStart = wIndex
End If
End With
End Sub
よく考えたら計算数値の表示欄ってテキストボックスじゃなくていい訳ですよね
3DのLabelでテキストボックスのようにして、そこに数値を表示させるだけで
だから、
Label1を数値表示欄
Command1をBSボタンとして
Private Sub Command1_Click()
'1桁以下なら数値を0に汁
If Len(Label1) < 1 Then
Label1 = "0"
Exit Sub
End If
'最後の入力を消す
Label1 = Left$(Label1 , Len(Label1) - 1)
End Sub
でいいんじゃないかと
あ、間違えた・・・orz
X If Len(Label1) < 1 Then
O If Len(Label1) = 1 Then
電卓だから、数値表示欄が何もないって事ないよね
>3DのLabelでテキストボックスのようにして、そこに数値を表示させるだけで
Lock=TrueのテキストでもOKっすね。
って・・・。
スレヌシはいずこに・・・。
ツイート | ![]() |