HOWTO: Use the MaskedEdit Control for Currency FormatID: Q126676
|
The maskededit control requires that you enter a number for each of the
pound sign (#) character place holders and enter a space for each of the
ampersand (&) place holders. The control tests each character you enter to make sure it matches the specified mask. This is inconvenient for currency format. For example, if the mask is #####.##, you'd have to enter 00012.25;
and if the Mask is &&&&#.##, you'd have to enter four spaces and then 12.25
(as in " 12.25").
This article shows by example how to gain the flexibility of entering any
number. The application uses the period (.) to define the decimal point,
and right aligns the number to the decimal point. Then you can enter the
pennies.
Default Name Mask Format PromptChar
-------------------------------------------------
MaskedEdit1 #####.## $####0.00 (Space)
MaskedEdit2 #####.## $####0.00 (Space)
Sub MaskedEdit1_GotFocus ()
maskededit1.SelStart = 0
maskededit1.SelLength = Len(maskededit1)
End Sub
Sub MaskedEdit1_KeyPress (keyascii As Integer)
Call Masked_Key_Press(MaskedEdit1, keyascii)
If keyascii = 13 Then SendKeys "{tab}"
End Sub
Sub MaskedEdit2_GotFocus ()
maskededit2.SelStart = 0
maskededit2.SelLength = Len(MaskedEdit2)
End Sub
Sub MaskedEdit2_KeyPress (keyascii As Integer)
Call Masked_Key_Press(MaskedEdit2, keyascii)
If keyascii = 13 Then SendKeys "{tab}"
End Sub
Sub Masked_Key_Press (MskEdit As MaskEdBox, keyascii As Integer)
' Calculate the location of the decimal point in the mask:
mask_cents_pos = InStr(MskEdit.Mask, ".")
mask_dollars = mask_cents_pos - 1
' Check for period keypress:
If keyascii = 46 And MskEdit.SelStart < 6 Then
tlen = MskEdit.SelStart + 1 ' Store current location.
MskEdit.SelStart = 0
MskEdit.SelLength = tlen ' Highlight up to the current
tempo = MskEdit.SelText ' position & save selected text.
MskEdit.SelLength = mask_dollars
MskEdit.SelText = "" ' Clear to the left of decimal.
MskEdit.SelStart = mask_cents_pos - tlen
MskEdit.SelLength = tlen ' Reposition caret
MskEdit.SelText = tempo ' and paste copied data.
MskEdit.SelStart = mask_cents_pos ' Position caret after cents.
End If
End Sub
Additional query words:
Keywords : kbVBp kbVBp300 kbDSupport
Version : WINDOWS:3.0
Platform : WINDOWS
Issue type : kbhowto
Last Reviewed: July 20, 1999