Solved

Masked Edit Box

Posted on 2001-07-23
4
218 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
Comment Utility
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
Comment Utility
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
Comment Utility
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
Comment Utility
Placed in PAQ

Computer101
E-E Moderator
0

Featured Post

Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

Article by: Martin
Here are a few simple, working, games that you can use as-is or as the basis for your own games. Tic-Tac-Toe This is one of the simplest of all games.   The game allows for a choice of who goes first and keeps track of the number of wins for…
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…
Get people started with the process of using Access VBA to control Outlook using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Microsoft Outlook. Using automation, an Access applic…
This lesson covers basic error handling code in Microsoft Excel using VBA. This is the first lesson in a 3-part series that uses code to loop through an Excel spreadsheet in VBA and then fix errors, taking advantage of error handling code. This l…

772 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

Need Help in Real-Time?

Connect with top rated Experts

12 Experts available now in Live!

Get 1:1 Help Now