Versión imprimible       Enviar     
Evaluar y enviar comentarios
MSDN
MSDN Library
MSDN10
 Configuración Regional de Aplicacio...
Configuración Regional de Aplicaciones y Procesos

Por Jorge Gómez M.

Contenido

 1. Introducción
 2. Configuración Regional de Aplicaciones
 3. Configuración Regional de Procesos
 4. Conclusión

1. Introducción

El manejo de la configuración regional en las aplicaciones siempre es un problema cuando tenemos varias aplicaciones instaladas que utilizan distintos formatos o modifican el registro a través de un número de API. Para ello .NET ha implementado la configuración por aplicación o proceso, lo cual facilita la personalización de nuestras aplicaciones.

2. Configuración Regional de Aplicaciones

Al desarrollar aplicaciones siempre tenemos que tener en cuenta el formato de fechas o números al cual nuestro usuario está acostumbrado (Ver Figura 1), ya que si forzamos o cambiamos una configuración regional, podríamos afectar su trabajo diario ya sea con planillas de Microsoft Excel o con otras aplicaciones existentes.

Bb972277.art277-img01-440x483(es-es,MSDN.10).gif
Figura 1. Volver al texto.

Para solucionar estos problemas, .NET ha implementado una solución sencilla que permite manejar una configuración regional independiente (sin afectar a otras aplicaciones); para ello utilizaremos el espacio de nombres Imports System.Globalization. Este espacio de nombres contiene varias clases que permiten manejar la información regional; a continuación revisaremos un ejemplo aplicando estos conceptos:

Dim oldDecimalSeparator As String = _ Application.CurrentCulture.NumberFormat.NumberDecimalSeparator
 
Dim forceDotCulture As CultureInfo
forceDotCulture = Application.CurrentCulture.Clone()
forceDotCulture.NumberFormat.NumberDecimalSeparator = "."
forceDotCulture.NumberFormat.NumberGroupSeparator = ","
Application.CurrentCulture = forceDotCulture

Si agregamos este código a nuestra aplicación (load) funcionará "." como separador decimal y "," como separador de miles.

Aplicación de ejemplo:

Ingresamos un monto y presionamos Convertir donde nos muestra el mismo monto pero con formato aplicado (Ver Figura 2):

Bb972277.art277-img02-520x145(es-es,MSDN.10).gif
Figura 2. Volver al texto.

Luego invertimos los separadores y presionamos el botón Cambiar, y luego Convertir (Ver Figura 3):

Bb972277.art277-img03-520x145(es-es,MSDN.10).gif
Figura 3. Volver al texto.

A continuación se muestra el código de la aplicación:

Imports System.Globalization
Public Class frmConfiguracionRegional
    Inherits System.Windows.Forms.Form
 
    Dim Cifra As Double
    Dim MiCultura As CultureInfo
    Dim MiFormato As NumberFormatInfo = New _       CultureInfo(MiCultura.CurrentCulture.ToString(), _
 False).NumberFormat
 
Private Sub cmdConvertir_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
 cmdConvertir.Click
 
        Cifra = CDbl(txtMonto.Text)
        lblFormat.Text = Format(Cifra, "#,##0.00")
 
    End Sub
 
    Private Sub frmConfiguracionRegional_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles
 MyBase.Load
 
    End Sub
 
    Private Sub cmdChange_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
 cmdChange.Click
 
        Dim oldDecimalSeparator As String =  Application.CurrentCulture.NumberFormat.NumberDecimalSeparator
 
        If Not oldDecimalSeparator = txtDecimales.Text Then
            Dim forceDotCulture As CultureInfo
            forceDotCulture = Application.CurrentCulture.Clone()
            forceDotCulture.NumberFormat.NumberDecimalSeparator = _ txtDecimales.Text
forceDotCulture.NumberFormat.NumberGroupSeparator = _ txtMiles.Text
            Application.CurrentCulture = forceDotCulture
        End If
 
    End Sub
End Class

3. Configuración Regional de Procesos

Además de lograr configurar aplicaciones, también podemos configurar procesos o aplicaciones sin interfaz; para revisar un ejemplo tomaremos un proyecto tipo servicio Windows (Ver Figura 4):

Bb972277.art277-img04-530x369(es-es,MSDN.10).gif
Figura 4. Volver al texto.

Este tipo de proyecto no tiene interfaz gráfica pero sí necesita utilizar una configuración regional bien definida para realizar cálculos con tipos de datos numéricos y diferencias de fechas.

Definiremos el mismo espacio de nombres anterior; a continuación mostraremos las clases que debemos utilizar:

forceDotCulture = mWorker.CurrentCulture.Clone()
forceDotCulture.NumberFormat.NumberDecimalSeparator = "."
forceDotCulture.NumberFormat.NumberGroupSeparator = ","
forceDotCulture.NumberFormat.CurrencyDecimalSeparator = "."
forceDotCulture.NumberFormat.CurrencyGroupSeparator = ","
forceDotCulture.DateTimeFormat.DateSeparator = "-"
forceDotCulture.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy"
mWorker.CurrentCulture = forceDotCulture

Con este código inserto al arrancar el servicio trabajaremos con el formato indicado por nosotros. La variable mWorker es la que utilizamos como proceso o hilo.

Private mWorker As Thread = Nothing
Protected Overrides Sub OnStart(ByVal args() As String)
 
        Try
            Dim start As ThreadStart = New ThreadStart(AddressOf Working)
            mWorker = New Thread(start)
            mWorker.Start()
        Catch obug As Exception
            LogEvent(obug.Message)
            Throw obug
        End Try
 
End Sub

4. Conclusión

Si revisamos el código necesario para poder personalizar nuestras aplicaciones o procesos nos daremos cuenta que no es un cambio significativo y tampoco nos tomara mucho tiempo, pero es una solución completa que nos aliviará muchos dolores de cabeza al implementar una aplicación.

Bb972277.jorge_gomez_m(es-es,MSDN.10).gif

Jorge Gómez M. se desempeña como Jefe de Proyectos, liderando proyectos de desarrollo en .net 2003 y 2005, y cuenta con 10 años de experiencia en el desarrollo e implementación de software en diversos ámbitos y negocios de Chile y Latinoamérica. Es Analista de Sistemas y actualmente está cursando la Ingeniería en Informática en la Universidad Internacional Sek.

© 2009 Microsoft Corporation. Reservados todos los derechos. Términos de uso | Marcas Registradas | Privacidad
Page view tracker