Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Cambiar Configuracion Regional e Idioma de la PC (https://www.clubdelphi.com/foros/showthread.php?t=81176)

darkbits 18-10-2012 21:00:12

Cambiar Configuracion Regional e Idioma de la PC
 
un saludo al foro


tengo una aplicacion que necesita que se cambie la configuracion Regional e Idioma, manualmente se puede realizar ingresado al panel de Control de Windows

pero mi Idea es que Delphi lo realice cuando se ejecute la aplicacion

por favor si pueden ayudarme con el codigo que tengo q inyectar

necesito estos cambios:

decimal ,
Hora H:mm:ss no necesito 5:00 PM
Pais Bolivia
Simbolo de Moneda $b. ( esto creo que cambia automaticamente con el pais)
Numero de Digito Decimal 2
Formato de Fecha corta dd/MM/aaaa

Gracias

ecfisa 19-10-2012 20:17:59

Hola darkbits.

Un modo es mediante el registro de windows:
Código Delphi [-]
...
implementation

uses Registry;

...
begin
  with TRegistry.Create do
  try
    RootKey := HKEY_CURRENT_USER;
    if not OpenKey('\Control Panel\International', False) then
      raise Exception.Create('Error leyendo el registro');
    WriteString('iCountry', '591');
    WriteString('sCountry', 'Bolivia');
    WriteString('sDecimal',',');
    WriteString('sShortTime', 'hh:mm:ss tt');
    WriteString('sCurrency', '$b');
    WriteString('iCurrDigits', '2');
    WriteString('sShortDate', 'dd:MM:yyyy');
  finally
    CloseKey;
    Free;
  end;
end;
Mas datos en la clave "HKEY_CURRENT_USER\Control Panel\International" del registro de windows.

Saludos.

darkbits 19-10-2012 20:46:13

Hola ecfisa probe tu codigo y no me funciona estoy utilizando D6 y tambien XE2 hice la prueba en Xp y no cambia

estandares y formatos Español (España)
Ubicacion españa

solo cambia simbolo decimal y simbolo de moneda

gracias por tu tiempo

ecfisa 19-10-2012 21:30:00

Hola.

Proba con esta modificación:
Código Delphi [-]
begin
  with TRegistry.Create do
  try
    RootKey := HKEY_CURRENT_USER;
    if not OpenKey('\Control Panel\International', False) then
      raise Exception.Create('Error leyendo el registro');
    WriteString('iCountry', '591');
    WriteString('sCountry', 'Bolivia');
    WriteString('Locale', '0000400A');
    WriteString('LocaleName', 'es-BO');
    WriteString('sLanguage', 'ESB');
    WriteString('sDecimal',',');
    WriteString('sShortTime', 'hh:mm:ss tt');
    WriteString('sCurrency', '$b');
    WriteString('iCurrDigits', '2');
    WriteString('sShortDate', 'dd:MM:yyyy');
  finally
    CloseKey;
    Free;
  end;

Saludos.

Delphius 19-10-2012 21:47:52

Supongo que tu aplicación va a sacar un cartelote enorme diciendo que ciertos cambios en la configuración regional podrían afectar el funcionamiento de otros sistemas.

En lo posible no hay que cambiar la configuración regional. Si es cosa únicamente para tu aplicación debes hacer uso de las variables globales que destina para eso, como CurrencyDecimals para indicar la cantidad de decimales, CurrencyString y CurrencyFormat se puede utilizar para establecer el símbolo de moneda y su posición... también las hay para fechas aunque no las recuerdo ahorita (salvo la ShorDateFormat).

Saludos,

darkbits 19-10-2012 21:50:59

Este si Funcion ;)


tube q aumentar este codigo para que la hora se actualice de 17:00 a 5:00 PM en ese mismo instante q se ejecuta

de lo contrario no se actualizaba

Código Delphi [-]
Windows.SendMessageTimeout(HWND_BroadCast,WM_SettingChange,0,0,SMTO_AbortIfHung,15,dResult);

o hay algo mejor q esta linea

ecfisa 19-10-2012 21:58:57

Hola.

Cita:

En lo posible no hay que cambiar la configuración regional.
Totalmente de acuerdo con lo que te dice Delphius, no es bueno que nuestras aplicaciones hagan cambios en el S.O. ya que puede afectar al buén funcionamiento de otras (también comentado en su mensaje).
Encontrarás toda la información sobre las variables globales de la unit SysUtils en la ayuda de Delphi (busca por SysLocale por ejemplo).


Pero si deseas experimentar cambiando los valores del sistema, te agrego algunos enlaces que te pueden interesar:
Saludos.

darkbits 19-10-2012 22:10:50

ecfisa y Delphius Gracias por el consejo tomare encuenta de solo cambiar el simbolo de currency y decimal mil gracias por la ayuda.


La franja horaria es GMT +2. Ahora son las 13:07:07.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi