commandで、BackSpaceと同じ働きをさせるには?


RON  2005-07-27 21:05:32  No: 123756

課題で、Windowsのアクセサリにある電卓(四則のみ)と同じ物をVB6で
作らなければいけません。しかし、キーボードのBackSpaceで、数字を消すことができるんですが、作ったBackSpaceのコマンドでの数字の消し方がわかりません。
どなたか教えてください。


いな  2005-07-27 21:10:43  No: 123757

・作ったBackSpaceのコマンドってなに?

キーボード押下で実現できているのならば
いずれにせよ、Command関数で受取れそうな気がします。


特攻隊長まるるう  2005-07-27 21:19:15  No: 123758

>作ったBackSpaceのコマンドで
コマンドボタンだったりする???
テキストボックスに数字を入力してるなら
SelStart プロパティでカーソルの位置が
分かるから、Mid 関数とかの文字列操作
関数でカーソルの位置から1文字消去して
下さい。


RON  2005-07-27 21:24:24  No: 123759

早速の返信ありがとうございます。
作ったBackspaceのコマンドというのは、Formにつけるコマンドボタンのことです。
Formに数字のコマンドボタンや演算子のコマンドボタン、
クリアのコマンドボタンを入れて、電卓として完成させなければなりません。

つまり、BackSpaceのコマンドボタンと、キーボードのBackSpaceと、
同じ働きをさせたいということです。


id_rsa+  2005-07-27 22:04:53  No: 123760

SendMessage(Text1.hwnd, WM_CHAR, VK_BACK, 0)

でできると思う。。。試してないけど・・・


特攻隊長まるるう  2005-07-28 02:59:48  No: 123761

課題の目的に応じて適当である方法を選択して下さい。

『API』を使ってもよく、OSの処理で利用されている
『ウィンドウメッセージ』を利用するなら id_rsa+ さんの
書き込みを参考に。

プログラムでテキストボックスの文字列を編集して同じような
動きに見せる事も出来ます。ヘルプでテキストボックスの各種
プロパティと、『文字列操作』関数を調べて下さい。このレベル
のプログラムの課題ならこっちの方法を要求されているように
思いますが…(?)。今まで何を習ってきたかにもよりますが。

課題だと自分で調べた事を説明できないと落ちるよ?普通は。
質問掲示板でも同じですので、回答にあるキーワードを
調べて、自分の脳みそをどう使ったか分かる質問にして下さい。


通ってみた  2005-07-28 04:05:05  No: 123762

電卓だから、単純に最後の数字が消えればいいんでしょ?

Text1.Text = Left$(Text1.Text , Len(Text1.Text) - 1)


生茶  2005-07-28 04:32:48  No: 123763

SendKeysステートメントでも出来ると思います。

Private Sub Command1_Click()
    
    Text1.SetFocus
    SendKeys "{DEL}", True
    Command1.SetFocus
    
End Sub

こんな感じに。


いな  2005-07-28 05:16:10  No: 123764

>電卓だから、単純に最後の数字が消えればいいんでしょ?
>Text1.Text = Left$(Text1.Text , Len(Text1.Text) - 1)

自分もそんな気がする。


特攻隊長まるるう  2005-07-28 18:15:07  No: 123765

>電卓だから、単純に最後の数字が消えればいいんでしょ?
そかΣ(‾□‾)
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


通ってみた  2005-07-28 22:13:06  No: 123766

よく考えたら計算数値の表示欄ってテキストボックスじゃなくていい訳ですよね
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

でいいんじゃないかと


通ってみた  2005-07-28 22:15:33  No: 123767

あ、間違えた・・・orz

X  If Len(Label1) < 1 Then

O  If Len(Label1) = 1 Then

電卓だから、数値表示欄が何もないって事ないよね


いな  2005-07-29 01:39:28  No: 123768

>3DのLabelでテキストボックスのようにして、そこに数値を表示させるだけで

Lock=TrueのテキストでもOKっすね。
って・・・。

スレヌシはいずこに・・・。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加