Solved

Masked Edit Box

Posted on 2001-07-23
4
223 Views
Last Modified: 2012-05-04
Hi.  
Does anybody know why the MaskEdBox control in VB 6 SP 5 doesn't seem to be locale aware?  I have it
in my app with the format property = $##,0.00;($#,##0.00).  I also use code to set formats such as

label1.caption = formatcurrency(rate.text)

The code works fine - when I change my regional settings and reboot the machine the label reflects the
local currency, date/time, etc formats.  However, the maskedbox control always gives the "$" symbol
rather than the regional currency symbol.  Does anybody know if this is a known issue and/or if there
is a workaround?

Worst case I suppose I could pull the maskedbox controls out and format the textboxes through code.
 Seems strange the folks in Redmond would miss this one...
0
Comment
Question by:jmerritt
4 Comments
 
LVL 18

Expert Comment

by:deighton
ID: 6308371
Private Sub Command1_Click()
MaskEdBox1.Mask = getmask
End Sub

'in a bas module

Option Explicit

Public Type CURRENCYFMT
    NumDigits As Long
    LeadingZero As Long
    Grouping As Long
    lpDecimalSep As String
    lpThousandSep As String
    NegativeOrder As Long
    PositiveOrder As Long
    lpCurrencySymbol As String
End Type
Public Declare Function GetCurrencyFormat Lib "kernel32.dll" Alias "GetCurrencyFormatA" _
    (ByVal Locale As Long, ByVal dwFlags As Long, ByVal lpValue As String, lpFormat _
    As Any, ByVal lpCurrencyStr As String, ByVal cchCurrency As Long) As Long
Const LOCALE_USER_DEFAULT = &H800
Const LOCALE_SYSTEM_DEFAULT = &H400


Function getmask() As String
Dim cft As CURRENCYFMT     ' custom formatting settings
Dim formatted As String  ' receives the formatted number strings
Dim strlen As Long       ' the length of the formatted string
Dim c As Long

' Display the value formatted according to the current locale.
formatted = Space(256)
strlen = GetCurrencyFormat(LOCALE_SYSTEM_DEFAULT, 0, "1234567.89", ByVal CLng(0), _
    formatted, Len(formatted))
formatted = Left(formatted, strlen)
For c = 1 To Len(formatted)
    getmask = getmask & IIf(IsNumeric(Mid(formatted, c, 1)), "#", Mid(formatted, c, 1))
Next

Debug.Print "User locale format: "; formatted

End Function
0
 
LVL 15

Expert Comment

by:lyonst
ID: 6308373
Hi,

Have you checked your Autoexec.bat or Config.sys files as these values can also be ste there any may overide your regional settings ?

Cheers,

T.
0
 
LVL 49

Expert Comment

by:DanRollins
ID: 7156370
Hi jmerritt,
It appears that you have forgotten this question. I will ask Community Support to close it unless you finalize it within 7 days. I will ask a Community Support Moderator to:

    Refund points and save as a 0-pt PAQ.
    *** deighton's code is good, but not on point.

jmerritt, Please DO NOT accept this comment as an answer.
EXPERTS: Post a comment if you are certain that an expert deserves credit.  Explain why.
==========
DanRollins -- EE database cleanup volunteer
0
 
LVL 1

Accepted Solution

by:
Computer101 earned 0 total points
ID: 7182232
Placed in PAQ

Computer101
E-E Moderator
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Access query that references subform 5 48
How to hault or freeze parent form when a 2d form is open in vb6 3 43
TT Auto Dashboard 13 101
Sub or Function is not defined 6 54
Enums (shorthand for ‘enumerations’) are not often used by programmers but they can be quite valuable when they are.  What are they? An Enum is just a type of variable like a string or an Integer, but in this case one that you create that contains…
You can of course define an array to hold data that is of a particular type like an array of Strings to hold customer names or an array of Doubles to hold customer sales, but what do you do if you want to coordinate that data? This article describes…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…

730 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question