Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 31-01-2008
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.488
Poder: 20
MAXIUM Va camino a la fama
Unhappy Retardo en configuración del registro

Al grano dijo el gallo.

Miren, mi programa debe mostrar la fecha en un formato determinado, para ello al momento de arrancar envio un código al registro para que todo el sistema se adapte a el.

Imaginemos que por defecto se encuentra en formato dd.mm.aa (31.1.8) y yo lo deseo en dd/MM/aaa (31/01/2008)

Entonces modifico el registro:
Código Delphi [-]
   Registro:= Tregistry.Create;
   Registro.RootKey:= HKEY_CURRENT_USER;
   Registro.OpenKey('\Control Panel\International', True);
   Registro.WriteString('sDate', '/');
   Registro.WriteString('sShortDate', 'dd/MM/yyyy');
   Registro.CloseKey;
   Registro.Free;

Todo OK, todo el sistema a cambiado el formato, eso es apreciable mirando el listado de archivos en el explorador.

A continuación leo la fecha actual y la cargo en un Label
Código Delphi [-]
Label1:= DateToStr(Date);

Pero el Label me arroja 31.1.8 recordar que este código arranca justo después del que modifica el registro.

Si arranco el programa por segunda vez ya no hay problemas, pero esa no es la idea.

Consultas, soluciones, estoy online
Responder Con Cita
  #2  
Antiguo 31-01-2008
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
La cosa se debe presentar porque para poder modificar el valor en el registro debes haber iniciado el aplicativo, y este ya tomo el valor que tenia antes de que hicieras el cambio, para esto te propongo la siguiente solución:

Si es necesario que cambies el formato para todo el Windows, pues hazlo como lo estas haciendo pero indicale a tu aplicativo que vas a manejar ese formato... ¿Como se hace?, asi... Delphi tiene unas variables globales para este tipo de cosas, en este caso afectaremos la variable DateSeparator...

Código Delphi [-]
   Registro:= Tregistry.Create;
   Registro.RootKey:= HKEY_CURRENT_USER;
   Registro.OpenKey('\Control Panel\International', True);
   Registro.WriteString('sDate', '/');
   Registro.WriteString('sShortDate', 'dd/MM/yyyy');
   Registro.CloseKey;
   Registro.Free;
   DateSeparator := '/';

En la ayuda explican muy bien el funcionamiento de este tipo de variables globales y listo. Espero te sirva .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #3  
Antiguo 31-01-2008
Avatar de MAXIUM
MAXIUM MAXIUM is offline
Miembro
 
Registrado: may 2005
Posts: 1.488
Poder: 20
MAXIUM Va camino a la fama
pero me mostraría 31/1/8 y no 31/01/2008, o no

Aun así el cambio se aplica inmediatamente en Windows, eso lo veo teniendo abierto el explorador de windows en donde aparece la fecha de los archivos, pero no afecta a mi aplicación cuando quiero coger la fecha actual.

Bueno, creo que tendre que pensar en otro metodo:

Código Delphi [-]
     DateSeparator  := '/';
     ShortDateFormat:= 'dd/mm/yyyy';

Última edición por MAXIUM fecha: 01-02-2008 a las 00:02:35.
Responder Con Cita
  #4  
Antiguo 01-02-2008
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 29
jhonny Va camino a la famajhonny Va camino a la fama
No creo, pero de ser asi o no podrias jugar con la variable ShortDateFormat.

De hecho si decides no modificar toda la configuración de Windows para que tu programa funcione, solo basta con que le asignes el valor adecuado a la variable ShortDateFormat en el "arranque" de tu aplicativo y el resto de la aplicación trabajara con ese formato, independiente del que tenga configurado el usuario para el resto de sus aplicativos en el panel de control, asi solo tendras que hacer esto:

Código Delphi [-]
ShortDateFormat := 'dd/MM/yyyy';

Y olvidarte del registro de windows para esto.
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/

Última edición por jhonny fecha: 01-02-2008 a las 00:03:37.
Responder Con Cita
  #5  
Antiguo 01-02-2008
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
El "protocolo" para aplicar cambios a la configuración regional, según recuerdo, es después de haber hecho los camibos, enviar a las aplicaciones un mensaje WM_WIN_INI_CHANGE, o algo similar, ahora no tengo delphi a mano para probarlo.

Como te ha dicho antes jhonny, si solo queres aplicar el cambio por tu aplicativo, es mejor que cambies la configuración de este.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TVideoCapture retardo en el sonido. NPIdea Varios 0 08-03-2007 15:04:11
Retardo al visualizar una pagina web. ALBERTO.LAZARO Varios 8 28-11-2006 23:56:41
Mucho retardo de Locate leyendo DB2 de un AS400 Javier_A Conexión con bases de datos 6 05-04-2005 13:37:35
Retardo en cadena de texto mutant09 C++ Builder 2 30-04-2004 17:30:35
Como hago un retardo? seken Varios 7 23-02-2004 00:08:00


La franja horaria es GMT +2. Ahora son las 20:26:42.


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
Copyright 1996-2007 Club Delphi