Código de Visual Basic - Configuración regional

sin imagen de perfil

Configuración regionalgráfica de visualizaciones


Visual Basic

Publicado el 25 de Julio del 2004 por Anonimo (8 códigos)
41.001 visualizaciones desde el 25 de Julio del 2004
Código que modifica la configuración regional durante la ejecución de nuestro programa. No modifica la configuración regional del equipo.

Versión 1
estrellaestrellaestrellaestrellaestrella(18)

Publicado el 25 de Julio del 2004gráfica de visualizaciones de la versión: Versión 1
41.002 visualizaciones desde el 25 de Julio del 2004
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
'-----modulo-----
'En el inicio del programa colocar "Call CambiarCR", de esta manera
'cambiara la configuración regional para la utilizacion en el programa
 
Option Explicit
 
Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String) As Long
Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long, ByVal lpLCData As String, ByVal cchData As Long) As Long
 
Type NUMBERFMT
NumDigits As Long ' número de dígitos decimales
LeadingZero As Long ' si hay ceros iniciales en los campos decimales
Grouping As Long ' tamaño del grupo a la izquierda del decimal
lpDecimalSep As String ' puntero a la cadena del separador de decimales
lpThousandSep As String ' puntero a la cadena del separador de miles
NegativeOrder As Long ' orden de números negativos
End Type
 
 
Declare Function GetNumberFormat Lib "kernel32" Alias "GetNumberFormatA" (ByVal Locale As Long, ByVal dwFlags As Long, ByVal lpValue As String, lpFormat As NUMBERFMT, ByVal lpNumberStr As String, ByVal cchNumber As Long) As Long
 
Public Const LOCAL_DEFAULT = &H2C0A
Public Const LOCALE_SDECIMAL = &HE
Public Const LOCALE_STHOUSAND = &HF
Public Const LOCALE_IDIGITS = &H11
Public Const LOCALE_STIMEFORMAT = &H1003
Public Const LOCALE_SSHORTDATE = &H1F
Public Const LOCALE_SLONGDATE = &H20
Public Const LOCALE_SCURRENCY = &H14
Public Const LOCALE_SMONDECIMALSEP = &H16
Public Const LOCALE_SMONTHOUSANDSEP = &H17
 
Public Const FMT_FECHA_CORTA As String = "dd/MM/yyyy"
Public Const FMT_FECHA_LARGA As String = "dddd, d' de 'MMMM' de 'yyyy"
Public Const FMT_HORA As String = "HH:mm:ss"
Public Const SIMB_MONEDA As String = "$"
Public Const SEP_DEC As String = "."
Public Const SEP_MILES As String = ","
 
Public Function CambiarCR(Optional strError As String) As Boolean
    Dim lngResu As Long
    Dim buffer As String * 255
 
    On Error GoTo Errores
 
    lngResu = SetLocaleInfo(LOCAL_DEFAULT, LOCALE_SSHORTDATE, FMT_FECHA_CORTA)
    If lngResu = 0 Then strError = "Error al setear fecha corta."
 
    lngResu = SetLocaleInfo(LOCAL_DEFAULT, LOCALE_SLONGDATE, FMT_FECHA_LARGA)
    If lngResu = 0 Then strError = "Error al setear fecha larga."
 
    lngResu = SetLocaleInfo(LOCAL_DEFAULT, LOCALE_SDECIMAL, SEP_DEC)
    If lngResu = 0 Then strError = "Error al setear separador de decimales."
 
    lngResu = SetLocaleInfo(LOCAL_DEFAULT, LOCALE_STHOUSAND, SEP_MILES)
    If lngResu = 0 Then strError = "Error al setear separador de miles."
 
    lngResu = SetLocaleInfo(LOCAL_DEFAULT, LOCALE_STIMEFORMAT, FMT_HORA)
    If lngResu = 0 Then strError = "Error al setear formato de hora."
 
    lngResu = SetLocaleInfo(LOCAL_DEFAULT, LOCALE_SMONDECIMALSEP, SEP_DEC)
    If lngResu = 0 Then strError = "Error al setear separador de decimales de moneda."
 
    lngResu = SetLocaleInfo(LOCAL_DEFAULT, LOCALE_SMONTHOUSANDSEP, SEP_MILES)
    If lngResu = 0 Then strError = "Error al setear separador de miles de moneda."
 
    lngResu = SetLocaleInfo(LOCAL_DEFAULT, LOCALE_SCURRENCY, SIMB_MONEDA)
    If lngResu = 0 Then strError = "Error al setear símbolo de moneda."
 
    lngResu = GetLocaleInfo(LOCAL_DEFAULT, LOCALE_SDECIMAL, buffer, Len(buffer))
    If Left$(buffer, 1) = SEP_DEC Then
    lngResu = GetLocaleInfo(LOCAL_DEFAULT, LOCALE_SMONDECIMALSEP, buffer, Len(buffer))
    If Left$(buffer, 1) = SEP_DEC Then
    lngResu = GetLocaleInfo(LOCAL_DEFAULT, LOCALE_STHOUSAND, buffer, Len(buffer))
    If Left$(buffer, 1) = SEP_MILES Then
    lngResu = GetLocaleInfo(LOCAL_DEFAULT, LOCALE_SMONTHOUSANDSEP, buffer, Len(buffer))
    If Left$(buffer, 1) = SEP_MILES Then
    CambiarCR = (strError = vbNullString)
    End If
    End If
    End If
    End If
 
    Exit Function
Errores:
    CambiarCR = False
End Function



Comentarios sobre la versión: Versión 1 (18)

4 de Agosto del 2004
estrellaestrellaestrellaestrellaestrella
Esta muy bueno este codigo lo recomiendo
Responder
23 de Septiembre del 2004
estrellaestrellaestrellaestrellaestrella
trertertrtet
Responder
30 de Septiembre del 2004
estrellaestrellaestrellaestrellaestrella
Me vino de maravillas ya que uso una aplicacion contable mas una en visual y tenia que estar cambiando manualmente la conficuracion regional.- Muy bueno. Gracias
Responder
3 de Mayo del 2005
estrellaestrellaestrellaestrellaestrella
Tu solución no me ayuda del todo, ya que mi problema es que tengo dos aplicaciones VB6.0 que trabajan en una misma PC, pero cada aplicación trabaja con diferente configuración regional, lo que implica que no pueden estar arriba las dos aplicaciones al mismo tiempo, mi pregunta es ver si puedo guardar en memoria la configuración regional cambiada para subir la primera aplicación y mantener la configuración regional original del PC para subir la segunda aplicación. Gracias por vuestra ayuda
Responder
31 de Agosto del 2005
estrellaestrellaestrellaestrellaestrella
Bueno el codigo, me ayudo caleta, pero modifica la configuracion regional del equipo.
Responder
1 de Febrero del 2006
estrellaestrellaestrellaestrellaestrella
Esta Buenisimo, lo recomiendo...
Responder
10 de Febrero del 2006
estrellaestrellaestrellaestrellaestrella
Me ha sido muy útil tu programa, aunque sí que modifica la configuración regional. No lo hubiera averiguado por mí misma, la ayuda de Visual Basic no es suficiente.
Yo reestablezco la configuración regional a los valores originales cuando acaba el programa.
Responder
7 de Marzo del 2006
estrellaestrellaestrellaestrellaestrella
Hola, estoy probando el código para cambiar la configuración regional en una máquina que tiene Windows 2003 y no me funciona, digo que no me funciona, por que después de salir de la función tengo un número que debería de verse así: 55,555,555 y se ve así: 55.555.555
Responder
1 de Agosto del 2006
estrellaestrellaestrellaestrellaestrella
¡MUY BUEN CÓDIGO! Aunque, como especifica el resto, si modifica la configuración regional el equipo.
Responder
4 de Septiembre del 2007
estrellaestrellaestrellaestrellaestrella
Estaria bueno que pusieras en el codigo fuente mi nombre ya que me lo copiaron (seguramente de alguna publicacion de hace ya como 10 años, en 1997).

De todas maneras igualmente me alegra ver que mi codigo sigue ayudando a mucha gente.


Morgan
Responder
4 de Noviembre del 2010
estrellaestrellaestrellaestrellaestrella
yo creo tener una solucion un poco mas sencilla

primero importan el siguiente espacio de nombre

Imports System.Globalization

despues en el load del formulario inicial de la aplicacion escriben esto

System.Threading.Thread.CurrentThread.CurrentCulture = New System.Globalization.CultureInfo("es-CO")
System.Threading.Thread.CurrentThread.CurrentCulture.DateTimeFormat.ShortDatePattern = "yyyy/MM/dd"
System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyDecimalSeparator = "."
System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.CurrencyGroupSeparator = ","
System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberDecimalSeparator = "."
System.Threading.Thread.CurrentThread.CurrentCulture.NumberFormat.NumberGroupSeparator = ","

esto lo colocan el el formulario inicial de la aplicacion y de esta manera se ejecutara durante todo el programa.. Visual.net 2008

Saludos, Su Servidor
Responder
19 de Abril del 2012
estrellaestrellaestrellaestrellaestrella
Excelente codigo, Me resolvio mi problema. Gracias
Responder
25 de Junio del 2013
estrellaestrellaestrellaestrellaestrella
Pero la solucion q nos das no sirve porque cambia la configuracion regional del sistema operativo......
Responder
28 de Mayo del 2014
estrellaestrellaestrellaestrellaestrella
Muy bueno, cumple con el propósito. Muchas gracias
Responder
irwin marcelo concha perez
13 de Diciembre del 2014
estrellaestrellaestrellaestrellaestrella
Magistral, genial ... felicitaciones por el tremendo aporte.-

Talcahuano - chile
Responder
PJ Colombia
24 de Febrero del 2015
estrellaestrellaestrellaestrellaestrella
Funciona sin inconveniente, muchas gracias
Responder
Diego
31 de Julio del 2015
estrellaestrellaestrellaestrellaestrella
Me vino genial esto.
MIL GRACIAS!!!!!
Responder
Juangui
14 de Junio del 2018
estrellaestrellaestrellaestrellaestrella
muchas gracias de antemano a las personas que me puedan ayudar.

Muy bueno el codigo. Me funciona perfecto en un equipo con windows 7 a 64 bits pero
cuando corro la macro en windows 10 en un equipo de 64 bits me dice que debo actualizar dll.
me podrian indicar como puedo realizar la modificacion.

muchas gracias.
Responder

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad

http://lwp-l.com/s1080