![]() |
Demora al cambiar la hora
Hola foristas.
Tengo el siguiente codigo. var FecDada : TdateTime; // HorDada : TSystemTime; HorDada : TDateTime; begin FecDada := StrToDate(Efecha.Text); HorDada := StrToTime(Ehora.Text); ProCamFec(FecDada, HorDada); end; Procedure ProCamFec(Fecha: TDateTime; Hor : TDateTime); var FecSys: TSystemTime; nA, nM, nD, nHH, nMM, nSS, nMS : Word; begin DecodeDate(Fecha, nA, nM, nD); GetLocalTime(FecSys); FecSys.wYear := nA; FecSys.wMonth := nM; FecSys.wDay := nD; DecodeTime(Hor, nHH, nMM, nSS, nMs); FecSys.wHour := nHH; FecSys.wMinute := nMM; FecSys.wSecond := nSS; FecSys.wMilliseconds := nMS; SetLocalTime(FecSys); end; El cambia la fecha inmediatamente pero en la hora se tarda Aprox 45 Seg. en cambiarla o mostrarla en la barra de tareas, alguien sabe decirme el pporque de esto, me gustaria que lo hiciera como la fecha en forma inmediata. Alguna sugerencia si es el caso se los agradezco. |
Prueba a ver si te sirve añadir la siguiente línea despues de SetLocalTime:
SendMessage(HWND_TOPMOST, WM_TIMECHANGE, 0, 0); Se supone que este mensaje avisa a todas las ventanas de aplicación que cambió la fecha/hora, y esto incluye el reloj de la barra de tareas. // Saludos |
Aun no me funciona se tarda mucho al cambirse, he notado que inmediatamente la actuaaliza en el ambiente D.O.S mas no en la barra de tareas..
|
A mi me da la impresion que la hora que nos figura en la barra de tareas es solo una interface... esta te muestra la hora y se actualiza cadab 45 seg con la hora del sys...
Tal ves si despues de actualizar la hora le envias un mensaje de refresco impacte automaticamente. Es solo una idea |
Hola, si lo que quieres es que en tu aplicacion tenga la hora de tu sistema, creo tener la solucion.
a tu pantalla principal agrega una statusbar que esta en la paleta de win32. al statusbar agregale unos statuspanels dando soble click sobre la statusbar , despues baja un componente timer de la paleta system y agrega el siguiente codigo en el timer. procedure TMenu.Timer1Timer(Sender: TObject); begin StatusBar1.Panels[0].Text:=timetostr(time()); end; y con eso eta solucionado tu problema, . :D Saludos |
hola foristas, este tema se puede dar por terminado, muchas gracias a todos.
|
La franja horaria es GMT +2. Ahora son las 09:36:00. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi