Abbas Amiri
شنبه 14 مرداد 1391, 19:01 عصر
جهت سهولت هرچه بیشتر درتایپ ارقام ، استفاده ازکدهای زیر برا ی دو رویدادtext_Change و text_Keydown محیط را کاربرپسندتر وحرفه ای تر می کند. بغیراز دزج همزمان کاما جهت جداسازی هزارگان اعداد ، تخصیص کلید + جهت درج سه صفر "000" و ممیز "." جهت دوصفر "00"، در قسمت Numeric Pad ، همچنین Delete جهت پاک کردن کل عدد و بی تاثیر ساختن کلیدهای نامربوط (به استثنای Home, End, Arrow Keys, Insert, BackSpace) از ویژگیهای استفاده از این کدهااست
Private Sub txtAmount_Change()
Dim s As String
s = txtAmount.Text
txtAmount.Format = "Standard"
txtAmount.SelStart = Len(s) + 1
If s = "" Then txtAmount = "0"
End Sub
Private Sub txtAmount_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyAdd
txtAmount = txtAmount.Text & "000"
txtAmount_Change
Case vbKeyDecimal
txtAmount = txtAmount.Text & "00"
txtAmount_Change
Case vbKeyDelete
txtAmount = "0"
Case vbKeyBack, 48 To 57, 96 To 105, 35 To 40,vbKeyHome, vbKeyInsert, vbKeyEnd, vbKeyReturn
Case Else
KeyCode = 0
End Select
End Sub
لازم به توضیح است که یک تابع هم جهت این موضوع ساخته ام که فقط در روال KeyDown فراخوانی میشود ومشابه کارفوق را انجام میدهد ، ام فقط درانتهای رشته عملیات انجام میدهد ودرمیان اعداد کارایی ندارد.
Private Sub txtAmount_Change()
Dim s As String
s = txtAmount.Text
txtAmount.Format = "Standard"
txtAmount.SelStart = Len(s) + 1
If s = "" Then txtAmount = "0"
End Sub
Private Sub txtAmount_KeyDown(KeyCode As Integer, Shift As Integer)
Select Case KeyCode
Case vbKeyAdd
txtAmount = txtAmount.Text & "000"
txtAmount_Change
Case vbKeyDecimal
txtAmount = txtAmount.Text & "00"
txtAmount_Change
Case vbKeyDelete
txtAmount = "0"
Case vbKeyBack, 48 To 57, 96 To 105, 35 To 40,vbKeyHome, vbKeyInsert, vbKeyEnd, vbKeyReturn
Case Else
KeyCode = 0
End Select
End Sub
لازم به توضیح است که یک تابع هم جهت این موضوع ساخته ام که فقط در روال KeyDown فراخوانی میشود ومشابه کارفوق را انجام میدهد ، ام فقط درانتهای رشته عملیات انجام میدهد ودرمیان اعداد کارایی ندارد.