TheBOdybOarDMaN
Messages postés54Date d'inscriptionsamedi 25 décembre 2004StatutMembreDernière intervention24 octobre 2006
-
11 oct. 2006 à 21:17
NeoFacto
Messages postés6Date d'inscriptionmardi 12 septembre 2006StatutMembreDernière intervention15 octobre 2006
-
15 oct. 2006 à 17:50
Bonsoir a tous
J'ai longtemps cherché comment faire pour declencher une action a une heure donnée par l'utilisateur mais je n'ai encore rien trouvé donc restreint a demander ici :) enfin c fait pour sa=)
il faudrai faire un décompte du temps restant avant l'action demandée
voila si quelqu'un a une petite idée merci beaucoup..
cptpingu
Messages postés3837Date d'inscriptiondimanche 12 décembre 2004StatutModérateurDernière intervention28 mars 2023123 12 oct. 2006 à 02:39
Il faut soit utiliser un timer, soit utiliser les taches planifiés.
Pour la gestion de l'heure, regarde le type TDateTime.
Tu peux aussi regarder les (trop) nombreuses sources de ce site qui permettent de rebooter l'ordi à une période
choisie. Tu devrais trouver ce que tu cherche.
NeoFacto
Messages postés6Date d'inscriptionmardi 12 septembre 2006StatutMembreDernière intervention15 octobre 2006 15 oct. 2006 à 17:50
Voilà le code d'une unité qui fait, je crois, ce que tu veux avoir comme résultat.
On entre heure/minute/seconde dans des edits et le programme calcul le temps restant dès qu'on appuie sur un bouton.
Si tu as des questions, n'hésite pas à me les poser...
En espérant que ça t'aidera, neofacto
var //déclaration des variables globales
MainForm : TMainForm;
HeureAction, MinuteAction, SecondeAction : Word; //contient les heures, les
//minutes et les secondes
//de l'action planifiée
implementation
{$R *.DFM}
{
lancement de la procédure de planification
on enregistre l'heure de l'action planfiée
}
procedure TMainForm.BtPlanifierClick(Sender: TObject);
begin
//initialisation des variables globales
HeureAction := StrToInt(EdHeures.Text);
MinuteAction := StrToInt(EdMinutes.Text);
SecondeAction := StrToInt(EdSecondes.Text);
//lancement du Timer qui calcul le temps restant
TimerCalcul.Enabled := True;
end;
{
calcul du temps restant jusqu'à l'action planifiée
}
procedure TMainForm.TimerCalculTimer(Sender: TObject);
var //déclaration des variables
HeureResultat, MinuteResultat, SecondeResultat : Word; //contient les heures,
//les minutes et les
//secondes du temps
//restant
TempsSysteme : TDateTime; //contient l'heure système
HeureSysteme, MinuteSysteme, SecondeSysteme, MSecSysteme : Word;
//sontient les heures, les
//minutes, les secondes et les
//millisecondes du système
begin
//récupération du temps système
TempsSysteme := Now;
DecodeTime(TempsSysteme,HeureSysteme,MinuteSysteme,SecondeSysteme,
MSecSysteme);
//comparaison du temps système et de temps de l'action planifiée
if HeureAction < HeureSysteme
then
HeureResultat := 24 + HeureAction - HeureSysteme
else
HeureResultat := HeureAction - HeureSysteme;
if MinuteAction < MinuteSysteme
then
MinuteResultat := 60 + MinuteAction - MinuteSysteme
else
MinuteResultat := MinuteAction - MinuteSysteme;
if SecondeAction < SecondeSysteme
then
SecondeResultat := 60 + SecondeAction - SecondeSysteme
else
SecondeResultat := SecondeAction - SecondeSysteme;
if SecondeSysteme + SecondeResultat >= 60
then
dec(MinuteResultat);
if MinuteSysteme + MinuteResultat >= 60
then
dec(HeureResultat);
//affichage du résultat
if (HeureResultat = 0) and (MinuteResultat < 10)
then
LbTempsRestant.Font.Color := clRed
else
LbTempsRestant.Font.Color := clBlack;
LbTempsRestant.Caption := IntToStr(HeureResultat) + ':' +
IntToStr(minuteResultat) + ':' + IntToStr(SecondeResultat);
//vérification que l'action n'est pas arrivée if (HeureResultat 0) and (MinuteResultat 0) and (SecondeResultat = 0)
then
begin
TimerCalcul.Enabled := False;
LbTempsRestant.Caption := 'Compte à rebour terminé';
end;
end;