SoloCodigo
Programación General => Power Builder => Mensaje iniciado por: Michael PC en Viernes 21 de Abril de 2006, 18:44
-
Hola amigos:
Tengo el siguiente problema, desde mi aplicación en PB verifico la configuración regional de la PC y si encuentro que el simbolo decimal es "," lo cambio por "." y si el separador de miles es "." lo cambio por ",".
Dicho cambio lo realizo de la siguiente manera:
RegistrySet(ls_regKey, "sDecimal" , RegString!, '.')
RegistrySet(ls_regKey, "sThousand", RegString!, ',')
Llegó a realizar dicho cambio pero la aplicación parece no tomar en cuenta este cambio y me muestra la configuración inicial que era la errada; esto provoca que al mostrar valores numericos me aumente dos digitos a la izquierda, es decir, si el valor real es 12.50 lo muestra como 12500.00 y con el siguiente formato 12.500,00
Como puedo hacer para que mi aplicativo reconozca el cambio realizado?? Que me esta faltando realizar?? Trabajo con PB 8.0 y SQL Server 2000.
Gracias por su tiempo
MPC-SOFT
-
Que tal.... yo tambien tenia este problema cuando distribuia mis aplicaciones ya empaquetadas, asi que opte por lo siguiente...
Te recomiendo que utilices la configuracion Español-Mexico, la cual la puedes cambiar desde el Panel de Control de Guindous, o si lo quieres hacer mas elegante utiliza esta funcion, La tienes que colocar en el evento open de tu aplicacion, así cada vez q inicias la aplicacion verifica cual es la configuracion Regional Actual, y si no es la adecuada la pone en Español-Mexico... aqui va el codigo
// Funcion f_cambia_conf_regional( /*no recibe parametros....*/)
String ls_pais
RegistryGet("HKEY_CURRENT_USER\Control Panel\International","sCountry",RegString!, ls_pais)
if trim(ls_pais) <> "México" then
String ls_regKey
ls_regKey = "HKEY_CURRENT_USER\Control Panel\International"
RegistrySET(ls_regKey, "iCountry", "52")
RegistrySET(ls_regKey, "iCurrDigits", "2")
RegistrySET(ls_regKey, "iCurrency", "0")
RegistrySET(ls_regKey, "iDate", "1")
RegistrySET(ls_regKey, "iDigits", "2")
RegistrySET(ls_regKey, "iLZero", "1")
RegistrySET(ls_regKey, "iMeasure", "0")
RegistrySET(ls_regKey, "iNegCurr", "1")
RegistrySET(ls_regKey, "iTime", "0")
RegistrySET(ls_regKey, "iTLZero", "1")
RegistrySET(ls_regKey, "Locale", "0000080A")
RegistrySET(ls_regKey, "s1159", "a.m.")
RegistrySET(ls_regKey, "s2359", "p.m.")
RegistrySET(ls_regKey, "sCountry", "México")
RegistrySET(ls_regKey, "sCurrency", "$")
RegistrySET(ls_regKey, "sDate", "/")
RegistrySET(ls_regKey, "sDecimal", ".")
RegistrySET(ls_regKey, "sLanguage", "ESM")
RegistrySET(ls_regKey, "sList", ",")
RegistrySET(ls_regKey, "sLongDate", "dddd, dd' de 'MMMM' del 'yyyy")
RegistrySET(ls_regKey, "sShortDate", "dd/MM/yyyy")
RegistrySET(ls_regKey, "sThousand", ",")
RegistrySET(ls_regKey, "sTime", ":")
RegistrySET(ls_regKey, "sTimeFormat", "hh:mm:ss tt")
RegistrySET(ls_regKey, "iTimePrefix", "0")
RegistrySET(ls_regKey, "sMonDecimalSep", ".")
RegistrySET(ls_regKey, "sMonThousandSep", ",")
RegistrySET(ls_regKey, "iNegNumber", "1")
RegistrySET(ls_regKey, "sNativeDigits", "0123456789")
RegistrySET(ls_regKey, "NumShape", "1")
RegistrySET(ls_regKey, "iCalendarType", "1")
RegistrySET(ls_regKey, "iFirstDayOfWeek", "6")
RegistrySET(ls_regKey, "iFirstWeekOfYear","0")
RegistrySET(ls_regKey, "sGrouping", "3;0")
RegistrySET(ls_regKey, "sMonGrouping", "3;0")
RegistrySET(ls_regKey, "sPositiveSign", "")
RegistrySET(ls_regKey, "sNegativeSign", "-")
else
return
end if
Luego en el evento open de tu aplicaion pones una linea como esta y se soluciona tu problema...
Ahhh, soy Ecuatoriano...
Carlos Luis Solorzano
f_cambia_conf_regional( )
-
necesitaba esta informacion...
GRACIAS