This commit is contained in:
f1iwq2
2024-03-26 18:36:08 +01:00
parent 4a82a86965
commit 1f2fa711ca
30 changed files with 5349 additions and 1158 deletions

298
UnitHorloge.pas Normal file
View File

@@ -0,0 +1,298 @@
unit UnitHorloge;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls,unitPrinc, ComCtrls, jpeg, ExtCtrls ;
type
TFormHorloge = class(TForm)
GroupBox1: TGroupBox;
RadioButtonHS: TRadioButton;
RadioButtonHI: TRadioButton;
GroupBox2: TGroupBox;
Label1: TLabel;
Label2: TLabel;
ButtonOk: TButton;
GroupBox3: TGroupBox;
Label3: TLabel;
EditHInit: TEdit;
EditMInit: TEdit;
Label4: TLabel;
TrackBarTemps: TTrackBar;
LabelDuree: TLabel;
ImageHorloge: TImage;
ButtonInit: TButton;
LabelErreur: TLabel;
Label5: TLabel;
EditRetourHeure: TEdit;
EditRetourMinute: TEdit;
Label6: TLabel;
ButtonS: TButton;
CheckBoxLanceHorl: TCheckBox;
CheckBoxRedemarre: TCheckBox;
ButtonAh: TButton;
CheckBoxAffiche: TCheckBox;
procedure ButtonOkClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure TrackBarTempsChange(Sender: TObject);
procedure ButtonInitClick(Sender: TObject);
procedure EditHInithange(Sender: TObject);
procedure EditMInitChange(Sender: TObject);
procedure RadioButtonHSClick(Sender: TObject);
procedure RadioButtonHIClick(Sender: TObject);
procedure EditRetourHeureChange(Sender: TObject);
procedure EditRetourMinuteChange(Sender: TObject);
procedure ButtonSClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure CheckBoxLanceHorlClick(Sender: TObject);
procedure CheckBoxRedemarreClick(Sender: TObject);
procedure ButtonAhClick(Sender: TObject);
procedure CheckBoxAfficheClick(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
FormHorloge: TFormHorloge;
heure,minute,seconde,comptsec,DureeMinute,CompteurDixiemes,HeureInit,MinuteInit,
RetourHeure,RetourMinute,Asec : integer;
horlogeInterne,horloge,relanceHorl_init,AffHorl : boolean;
procedure Init_Horloge;
procedure Demarre_horloge;
implementation
uses unitconfig, UnitClock;
{$R *.dfm}
procedure valide_hi;
begin
with formHorloge do
begin
GroupBox3.Enabled:=true;
GroupBox2.Enabled:=true;
editHinit.Enabled:=true;
editMinit.Enabled:=true;
ButtonInit.Enabled:=true;
TrackBarTemps.Enabled:=true;
EditRetourHeure.Enabled:=true;
EditRetourMinute.Enabled:=true;
end;
end;
procedure devalide_hi;
begin
with formHorloge do
begin
GroupBox3.Enabled:=false;
GroupBox2.Enabled:=false;
editHinit.Enabled:=false;
editMinit.Enabled:=false;
ButtonInit.Enabled:=false;
TrackBarTemps.Enabled:=false;
EditRetourHeure.Enabled:=false;
EditRetourMinute.Enabled:=false;
end;
end;
procedure TFormHorloge.ButtonOkClick(Sender: TObject);
begin
close;
end;
// démarre l'horloge de façon synchrone à l'horloge windows
procedure Demarre_horloge;
var h,m,sec,ms : word;
begin
decodeTime(GetTime,h,m,sec,ms);
//Affiche(intToSTR(ms),clwhite);
comptSec:=ms div 100;
horloge:=true;
end;
procedure TFormHorloge.FormActivate(Sender: TObject);
begin
if formHorloge=nil then exit;
if horlogeinterne then
begin
valide_hi;
end
else
begin
devalide_hi;
end;
end;
procedure TFormHorloge.TrackBarTempsChange(Sender: TObject);
begin
//DureeMinute:=TrackBarTemps.position;
//if (DureeMinute<1) or (DureeMinute>60) then DureeMinute:=30;
//LabelDuree.caption:=intToSTR(6*(DureeMinute*5) div 30);
CompteurDixiemes:=TrackBarTemps.position;
DureeMinute:=CompteurDixiemes; // variable de sauvegarde
LabelDuree.caption:=intToSTR(6*CompteurDixiemes);
end;
procedure Init_Horloge;
begin
heure:=HeureInit;
minute:=MinuteInit;
seconde:=0;
if clock<>nil then clock.DrawArrows;
FormPrinc.labelClock.Caption:=format('%.2dh%.2d:%.2d',[heure,minute,seconde] );
end;
procedure TFormHorloge.ButtonInitClick(Sender: TObject);
begin
init_horloge;
end;
procedure TFormHorloge.EditHInithange(Sender: TObject);
var i,erreur : integer;
begin
val(editHInit.Text,i,erreur);
if (erreur<>0) or (i<0) or (i>23) then
begin
LabelErreur.Caption:='Erreur heure';
exit;
end;
LabelErreur.Caption:='';
HeureInit:=i;
config_modifie:=true;
end;
procedure TFormHorloge.EditMInitChange(Sender: TObject);
var i,erreur : integer;
begin
val(editMInit.Text,i,erreur);
if (erreur<>0) or (i<0) or (i>60) then
begin
LabelErreur.Caption:='Erreur minute';
exit;
end;
LabelErreur.Caption:='';
MinuteInit:=i;
config_modifie:=true;
end;
procedure TFormHorloge.RadioButtonHSClick(Sender: TObject);
begin
horlogeInterne:=false;
devalide_hi;
config_modifie:=true;
end;
procedure TFormHorloge.RadioButtonHIClick(Sender: TObject);
begin
horlogeInterne:=true;
valide_hi;
config_modifie:=true;
end;
procedure TFormHorloge.EditRetourHeureChange(Sender: TObject);
var i,erreur : integer;
begin
val(editRetourHeure.Text,i,erreur);
if (erreur<>0) or (i<0) or (i>23) then
begin
LabelErreur.Caption:='Erreur heure init';
exit;
end;
LabelErreur.Caption:='';
RetourHeure:=i;
config_modifie:=true;
end;
procedure TFormHorloge.EditRetourMinuteChange(Sender: TObject);
var i,erreur : integer;
begin
val(editRetourMinute.Text,i,erreur);
if (erreur<>0) or (i<0) or (i>60) then
begin
LabelErreur.Caption:='Erreur retour minute';
exit;
end;
LabelErreur.Caption:='';
RetourMinute:=i;
config_modifie:=true;
end;
procedure TFormHorloge.ButtonSClick(Sender: TObject);
begin
sauve_config;
end;
procedure couleurs_horloge;
var c : tcomponent;
i : integer;
fond,texte : tColor;
begin
if sombre then
begin
fond:=couleurFond;
texte:=couleurTexte;
formHorloge.Color:=fond;
for i:=0 to formHorloge.ComponentCount-1 do
begin
c:=formHorloge.Components[i];
//Affiche(c.Name,clyellow);
composant(c,fond,texte);
end;
end;
end;
procedure TFormHorloge.FormCreate(Sender: TObject);
begin
CompteurDixiemes:=DureeMinute;
couleurs_horloge;
TrackBarTemps.position:=DureeMinute;
RadioButtonHI.Checked:=horlogeInterne;
RadioButtonHS.Checked:=not(horlogeInterne);
CheckBoxLanceHorl.Checked:=LanceHorl;
CheckBoxAffiche.checked:=AffHorl;
CheckBoxRedemarre.Checked:=relanceHorl_init;
TrackBarTemps.position:=DureeMinute;
EditHInit.Text:=intToSTR(HeureInit);
EditMInit.Text:=intToSTR(MinuteInit);
EditRetourHeure.Text:=intToSTR(RetourHeure);
EditRetourMinute.Text:=intToSTR(RetourMinute);
LabelDuree.caption:=intToSTR(6*CompteurDixiemes);
config_modifie:=false;
end;
procedure TFormHorloge.CheckBoxLanceHorlClick(Sender: TObject);
begin
LanceHorl:=CheckBoxLanceHorl.Checked;
config_modifie:=true;
end;
procedure TFormHorloge.CheckBoxRedemarreClick(Sender: TObject);
begin
relanceHorl_init:=CheckBoxRedemarre.checked;
config_modifie:=true;
end;
procedure TFormHorloge.ButtonAhClick(Sender: TObject);
begin
formClock.Show;
end;
procedure TFormHorloge.CheckBoxAfficheClick(Sender: TObject);
begin
AffHorl:=CheckBoxAffiche.checked;
end;
end.