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 desde Delphi (https://www.clubdelphi.com/foros/showthread.php?t=60679)

JuanchoArg 09-10-2008 22:09:45

Cambiar Configuracion Regional desde Delphi
 
Hola Amigos!!!
Necesito que mi aplicacion cambie la configuracion regional de la PC , mas precisamente el simbolo decimal y el separador de miles. Cómo se hace esto desde delphi? Ayuda pleaseeee!!!

Un abrazo y gracias!!!

jhonny 09-10-2008 22:21:05

No es necesario que cambies la configuración regional de Windows para indicarle a tu aplicativo con que símbolos debe trabajar... ya que solo es cuestión de cambiar los valores de ciertas variables globales, como los son, por ejemplo:

DecimalSeparator := '.';
ThousandSeparator := ',';

Busca mas información en la ayuda, sobre dichas variables globales, pues hay mas...

Espero te sirva ;).

JuanchoArg 10-10-2008 01:39:39

Gracias amigo, pero necesito que cambie la configuracion del equipo y no solo la de mi aplicacion. Tienes idea de como hacerlo?

Saludos

jhonny 10-10-2008 14:01:53

Cita:

Empezado por JuanchoArg (Mensaje 319279)
Gracias amigo, pero necesito que cambie la configuracion del equipo y no solo la de mi aplicacion. Tienes idea de como hacerlo?

Saludos


Entonces apuesto que el siguiente hilo te ayudara http://www.clubdelphi.com/foros/show...08&postcount=4

Delphius 10-10-2008 14:10:58

JuanchoArg,
Debes tener en cuenta que los cambios en la configuración regional pueden afectar a otros sistemas que se empleen.
No es bueno cambiar la configuración sino se tiene la certeza de que algo puede verse afectado.

Sobre todo si se altera el uso de simbolos decimal y el separador de miles. Un ejemplo de un software que se verá afectado por algún cambio es Excel.
Imaginate como se puede llegar a comportar un sistema de crédito, un sistema de puesto de venta.
No es lo mismo 800.000 que 800,000;)

No más te recomiendo que analices bien esto. No vaya a ser cosa que después te des con algunas sorpresitas.

Saludos,

JuanchoArg 10-10-2008 19:58:36

Hola Delphius, se cuales son las consecuencias de hacer eso. El tema es que le queria ahorar a un usuario (él me lo pidió) tener que hacer ese cambio en la configuracion regional en forma manual agregandola a una barra flotante que he armado en delphi con aplicaciones varias.
Hay un sistema de la AFIP, el SIAP, que le cambia la configuracion regional y cuando sale de tal sistema no la regresa a valores anteriores y todos los sistemas se ven afectados, precisamente el excel , como decias.
Debe haber alguna forma de acceder a estos valores en el registro de windows y modificarlos con delphi. Si no me sale aqui tendré que hacerlo con VB :(.

Saludos Cordiales.

jhonny 10-10-2008 20:25:01

Cita:

Empezado por JuanchoArg (Mensaje 319459)
Hola Delphius, se cuales son las consecuencias de hacer eso. El tema es que le queria ahorar a un usuario (él me lo pidió) tener que hacer ese cambio en la configuracion regional en forma manual agregandola a una barra flotante que he armado en delphi con aplicaciones varias.
Hay un sistema de la AFIP, el SIAP, que le cambia la configuracion regional y cuando sale de tal sistema no la regresa a valores anteriores y todos los sistemas se ven afectados, precisamente el excel , como decias.
Debe haber alguna forma de acceder a estos valores en el registro de windows y modificarlos con delphi. Si no me sale aqui tendré que hacerlo con VB :(.

Saludos Cordiales.

Ya viste el hilo que te referencie en mi respuesta anterior? :eek:

JuanchoArg 10-10-2008 21:20:47

Hola Jhonny, si lo vi, pero sinceramente no lo entendí del todo bien. De todos modos ya lo hice en VB, salió mas rapido. Gracias por el interés.

Saludos amigo.

ingabraham 15-07-2010 00:47:58

Cita:

Empezado por Delphius (Mensaje 319349)
JuanchoArg,
Debes tener en cuenta que los cambios en la configuración regional pueden afectar a otros sistemas que se empleen.
No es bueno cambiar la configuración sino se tiene la certeza de que algo puede verse afectado.

Sobre todo si se altera el uso de simbolos decimal y el separador de miles. Un ejemplo de un software que se verá afectado por algún cambio es Excel.
Imaginate como se puede llegar a comportar un sistema de crédito, un sistema de puesto de venta.
No es lo mismo 800.000 que 800,000;)

No más te recomiendo que analices bien esto. No vaya a ser cosa que después te des con algunas sorpresitas.

Saludos,

yo necesito eso por q tengo otro software con diferente configuracion regional
quiero q la cambie por la mia a
dd/mm/aaaa
12.526,54

y al cerrar mi aplicacion cambie a.

aaaa.mm.dd
15,526.54

me puedes colaborar compañero ?

MAXIUM 15-07-2010 04:23:56

Al abrir y/o cerrar tu aplicación, debes manipular el registro de Windows, eso es todo.

ingabraham 15-07-2010 17:26:44

Cita:

Empezado por MAXIUM (Mensaje 370440)
Al abrir y/o cerrar tu aplicación, debes manipular el registro de Windows, eso es todo.

como hago esto desde delphi

MAXIUM 16-07-2010 06:52:31

Ok, de partida esta el evento OnCreate y OnClose

Luego esta la ruta en el registro de Windows con todos estos parametros, tu modificas los que convengan:

Código:

[HKEY_CURRENT_USER\Control Panel\International]
"iCountry"="56"
"iCurrDigits"="2"
"iCurrency"="2"
"iDate"="1"
"iDigits"="2"
"iLZero"="1"
"iMeasure"="0"
"iNegCurr"="9"
"iTime"="1"
"iTLZero"="0"
"Locale"="0000340A"
"s1159"=""
"s2359"=""
"sCountry"="Chile"
"sCurrency"="$"
"sDate"="-"
"sDecimal"=","
"sLanguage"="ESL"
"sList"=","
"sLongDate"="dddd, dd' de 'MMMM' de 'yyyy"
"sShortDate"="dd-MM-yyyy"
"sThousand"="."
"sTime"=":"
"sTimeFormat"="H:mm:ss"
"iTimePrefix"="0"
"sMonDecimalSep"=","
"sMonThousandSep"="."
"iNegNumber"="1"
"sNativeDigits"="0123456789"
"NumShape"="1"
"iCalendarType"="1"
"iFirstDayOfWeek"="6"
"iFirstWeekOfYear"="0"
"sGrouping"="3;0"
"sMonGrouping"="3;0"
"sPositiveSign"=""
"sNegativeSign"="-"

Y como ejemplo:
Código Delphi [-]
USES Registry;


var Reg: TRegistry;
begin
  // Creamos un objeto para manejar el registro
  Reg := TRegistry.Create;

  // Guardamos las opciones
  try
    Reg.RootKey := HKEY_CURRENT_USER;
    if Reg.OpenKey( '\Control Panel\International', True ) then
    begin
      Reg.WriteString( 'sShortDate', 'dd/mm/aaaa');
      Reg.CloseKey;
    end;
  finally
    Reg.Free;
  end;

ingabraham 27-07-2010 15:50:35

si coloco
Reg.WriteString( 'sShortDate', 'aaaa-dd-mm');
o como es:
Reg.WriteString( 'sShortDate', 'yyyy-dd-mm');

en el dbgrid me sigue apareciendo el formato estandar de windows

look 27-07-2010 17:54:07

Cita:

Empezado por JuanchoArg (Mensaje 319235)
Hola Amigos!!!
Necesito que mi aplicacion cambie la configuracion regional de la PC , mas precisamente el simbolo decimal y el separador de miles. Cómo se hace esto desde delphi? Ayuda pleaseeee!!!

Un abrazo y gracias!!!

Código Delphi [-]
WinExec(Pchar('rundll32.exe shell32,Control_RunDLL intl.cpl,,/f:"'+ExtractFilePath(Application.ExeName)+'regopts.txt'+'"'), SW_HIDE);

en el txt:
[RegionalSettings]
UserLocale =0480a
UserLocale_DefaultUser =0480a

el 0480a es el codigo que quiero cambiar, en este caso es para el de mi pais.

aqui una lista

ingabraham 28-07-2010 20:26:41

Cita:

Empezado por look (Mensaje 371734)
Código Delphi [-]
WinExec(Pchar('rundll32.exe shell32,Control_RunDLL intl.cpl,,/f:"'+ExtractFilePath(Application.ExeName)+'regopts.txt'+'"'), SW_HIDE);





en el txt:
[RegionalSettings]
UserLocale =0480a
UserLocale_DefaultUser =0480a

el 0480a es el codigo que quiero cambiar, en este caso es para el de mi pais.

aqui una lista

da compa no tengo ni idea que significa esto y para q es.

look 29-07-2010 04:59:10

Cita:

Empezado por ingabraham (Mensaje 371851)
da compa no tengo ni idea que significa esto y para q es.

esto:
Código Delphi [-]
WinExec(Pchar('rundll32.exe shell32,Control_RunDLL intl.cpl,,/f:"'+ExtractFilePath(Application.ExeName)+'regopts.txt'+'"'),
lo puedes meter en un boton, si te fijas hace referencia a un archivo regopts.txt, este debe ir en la carpeta en donde esta el exe de tu project, tambien es dentro de este que va el codigo de region;

dentro de regopts.txt :
[RegionalSettings]
UserLocale =0480a
UserLocale_DefaultUser =0480a


con eso puedes cambiar la configuracion reginal de tu ordenador desde delphi

ingabraham 29-07-2010 18:17:19

osea yo quiero q me ponga el formato dd/mm/aaaa
separador mil .
separador decimal ,

con esto lo hago?

ingabraham 29-07-2010 18:26:13

como es correcto

Reg.WriteString( 'sShortDate', 'aaaa-dd-mm');
o,
Reg.WriteString( 'sShortDate', 'yyyy-dd-mm');

ingabraham 29-07-2010 18:55:35

hola un amigo me dio este codigo, como lo puedo adaptar para cambiar la fecha tambien.
q al arrancar mi programa cambie a
dd/mm/aaaa
y al salir
aaaa.mm.dd

en el create del datamodulo y en el destroy
Código Delphi [-]
procedure SetDecimalSeparator(Ch: Char);
var
  DefLCID: LCID;
  Buffer: LPSTR;
begin
  Application.UpdateFormatSettings := True;
  StrPCopy(Buffer, Ch);
  DefLCID := GetThreadLocale;
  if SetLocaleInfo(DefLCID, LOCALE_SDecimal, Buffer) then
    DecimalSeparator := StrPas(Buffer)[1];
  Application.UpdateFormatSettings := False;
end;
procedure SetMoneyDecimalSeparator(Ch: Char);
var
  DefLCID: LCID;
  Buffer: LPSTR;
begin
  Application.UpdateFormatSettings := True;
  StrPCopy(Buffer, Ch);
  DefLCID := GetThreadLocale;
  if SetLocaleInfo(DefLCID, LOCALE_SMONDECIMALSEP, Buffer) then
    DecimalSeparator := StrPas(Buffer)[1];
  Application.UpdateFormatSettings := False;
end;

procedure SetListSeparator(Ch: Char);
var
  DefLCID: LCID;
  Buffer: LPSTR;
begin
  Application.UpdateFormatSettings := True;
  StrPCopy(Buffer, Ch);
  DefLCID := GetThreadLocale;
  if SetLocaleInfo(DefLCID, LOCALE_SLIST, Buffer) then
    DecimalSeparator := StrPas(Buffer)[1];
  Application.UpdateFormatSettings := False;
end;

encontre esta pagina de los codigos :
http://msdn.microsoft.com/en-us/libr...(v=VS.85).aspx


La franja horaria es GMT +2. Ahora son las 11:50:45.

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