This commit is contained in:
f1iwq2
2022-11-14 17:47:47 +01:00
parent d4528407dd
commit b8bd8c5771
19 changed files with 1619 additions and 1375 deletions
BIN
View File
Binary file not shown.
+86 -63
View File
@@ -1,11 +1,11 @@
object FormConfig: TFormConfig object FormConfig: TFormConfig
Left = 281 Left = 218
Top = 138 Top = 143
Hint = 'Modifie la configuration selon les s'#233'lections choisies' Hint = 'Modifie la configuration selon les s'#233'lections choisies'
BorderStyle = bsDialog BorderStyle = bsDialog
Caption = 'Configuration g'#233'n'#233'rale' Caption = 'Configuration g'#233'n'#233'rale'
ClientHeight = 543 ClientHeight = 552
ClientWidth = 902 ClientWidth = 901
Color = clBtnFace Color = clBtnFace
Font.Charset = DEFAULT_CHARSET Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText Font.Color = clWindowText
@@ -1521,22 +1521,22 @@ object FormConfig: TFormConfig
Visible = False Visible = False
end end
object Label19: TLabel object Label19: TLabel
Left = 104 Left = 808
Top = 104 Top = 96
Width = 75 Width = 75
Height = 13 Height = 13
Caption = 'Element suivant' Caption = 'Element suivant'
end end
object Label10: TLabel object Label10: TLabel
Left = 80 Left = 792
Top = 120 Top = 104
Width = 105 Width = 105
Height = 13 Height = 13
Caption = 'Verrouillable au carr'#233' :' Caption = 'Verrouillable au carr'#233' :'
end end
object Label29: TLabel object Label29: TLabel
Left = 144 Left = 856
Top = 68 Top = 76
Width = 6 Width = 6
Height = 13 Height = 13
Caption = #224 Caption = #224
@@ -1551,9 +1551,20 @@ object FormConfig: TFormConfig
'ouche ENTREE apr'#232's leur introduction/modification' 'ouche ENTREE apr'#232's leur introduction/modification'
WordWrap = True WordWrap = True
end end
object Label40: TLabel
Left = 656
Top = 496
Width = 222
Height = 39
Caption =
'Les actionneurs ne sont utilisables qu'#39'en mode RUN avec CDM Rail' +
'. Les d'#233'tecteurs sont utilisables en mode autonome.'
Visible = False
WordWrap = True
end
object ButtonAppliquerEtFermer: TButton object ButtonAppliquerEtFermer: TButton
Left = 240 Left = 240
Top = 512 Top = 520
Width = 201 Width = 201
Height = 25 Height = 25
Hint = 'Enregistre la configuration et ferme la fen'#234'tre' Hint = 'Enregistre la configuration et ferme la fen'#234'tre'
@@ -1565,7 +1576,7 @@ object FormConfig: TFormConfig
end end
object Button2: TButton object Button2: TButton
Left = 8 Left = 8
Top = 512 Top = 520
Width = 201 Width = 201
Height = 25 Height = 25
Hint = 'Ferme la fen'#234'tre sans enregistrer la configuration' Hint = 'Ferme la fen'#234'tre sans enregistrer la configuration'
@@ -1579,7 +1590,7 @@ object FormConfig: TFormConfig
Left = 8 Left = 8
Top = 8 Top = 8
Width = 633 Width = 633
Height = 497 Height = 505
ActivePage = TabSheetSig ActivePage = TabSheetSig
Font.Charset = DEFAULT_CHARSET Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack Font.Color = clBlack
@@ -3082,7 +3093,7 @@ object FormConfig: TFormConfig
end end
object CheckVerrouCarre: TCheckBox object CheckVerrouCarre: TCheckBox
Left = 120 Left = 120
Top = 232 Top = 216
Width = 145 Width = 145
Height = 17 Height = 17
Hint = Hint =
@@ -3147,7 +3158,7 @@ object FormConfig: TFormConfig
end end
object CheckBoxFB: TCheckBox object CheckBoxFB: TCheckBox
Left = 120 Left = 120
Top = 256 Top = 264
Width = 153 Width = 153
Height = 17 Height = 17
Caption = 'Avec demande feu blanc' Caption = 'Avec demande feu blanc'
@@ -3164,6 +3175,30 @@ object FormConfig: TFormConfig
Visible = False Visible = False
OnClick = ButtonConfigSRClick OnClick = ButtonConfigSRClick
end end
object CheckFVC: TCheckBox
Left = 120
Top = 232
Width = 145
Height = 17
Hint = 'Remplace le feu vert par un feu vert clignotant'
Caption = 'Feu vert clignotant'
ParentShowHint = False
ShowHint = True
TabOrder = 17
OnClick = CheckFVCClick
end
object CheckFRC: TCheckBox
Left = 120
Top = 248
Width = 145
Height = 17
Hint = 'Remplace le s'#233'maphore par un feu rouge clignotant'
Caption = 'Feu rouge clignotant'
ParentShowHint = False
ShowHint = True
TabOrder = 18
OnClick = CheckFRCClick
end
end end
object RichSig: TRichEdit object RichSig: TRichEdit
Left = 0 Left = 0
@@ -3233,17 +3268,6 @@ object FormConfig: TFormConfig
TabOrder = 6 TabOrder = 6
OnChange = EditTempoFeuChange OnChange = EditTempoFeuChange
end end
object CheckBoxFVR: TCheckBox
Left = 0
Top = 416
Width = 281
Height = 17
Hint = 'Le changement de cette option n'#233'cessite un red'#233'marrage'
Caption = 'Gestion feux verts et s'#233'maphore clignotants'
ParentShowHint = False
ShowHint = True
TabOrder = 7
end
end end
object TabSheetAct: TTabSheet object TabSheetAct: TTabSheet
Caption = 'Actionneurs/D'#233'tecteurs' Caption = 'Actionneurs/D'#233'tecteurs'
@@ -3264,21 +3288,11 @@ object FormConfig: TFormConfig
Height = 441 Height = 441
Caption = 'Description de l'#39'action' Caption = 'Description de l'#39'action'
TabOrder = 0 TabOrder = 0
object Label40: TLabel
Left = 16
Top = 384
Width = 222
Height = 39
Caption =
'Les actionneurs ne sont utilisables qu'#39'en mode RUN avec CDM Rail' +
'. Les d'#233'tecteurs sont utilisables en mode autonome.'
WordWrap = True
end
object GroupBoxPN: TGroupBox object GroupBoxPN: TGroupBox
Left = 8 Left = 0
Top = 16 Top = 24
Width = 233 Width = 233
Height = 353 Height = 401
Caption = 'Action gestion passage '#224' niveau' Caption = 'Action gestion passage '#224' niveau'
ParentShowHint = False ParentShowHint = False
ShowHint = False ShowHint = False
@@ -3683,8 +3697,8 @@ object FormConfig: TFormConfig
end end
end end
object GroupBoxRadio: TGroupBox object GroupBoxRadio: TGroupBox
Left = 16 Left = 8
Top = 128 Top = 16
Width = 225 Width = 225
Height = 73 Height = 73
Caption = 'Type d'#39'action' Caption = 'Type d'#39'action'
@@ -3719,21 +3733,21 @@ object FormConfig: TFormConfig
end end
object GroupBoxAct: TGroupBox object GroupBoxAct: TGroupBox
Left = 8 Left = 8
Top = 148 Top = 84
Width = 225 Width = 233
Height = 293 Height = 341
Caption = 'Action fonction de locomotive ' Caption = 'Action fonction de locomotive '
TabOrder = 1 TabOrder = 1
object GroupBox18: TGroupBox object GroupBox18: TGroupBox
Left = 8 Left = 8
Top = 16 Top = 16
Width = 209 Width = 217
Height = 137 Height = 153
Caption = 'D'#233'clencheur ' Caption = 'D'#233'clencheur '
TabOrder = 0 TabOrder = 0
object LabelActionneur: TLabel object LabelActionneur: TLabel
Left = 8 Left = 8
Top = 80 Top = 96
Width = 54 Width = 54
Height = 26 Height = 26
Caption = 'Actionneur D'#233'tecteurZ' Caption = 'Actionneur D'#233'tecteurZ'
@@ -3741,21 +3755,21 @@ object FormConfig: TFormConfig
end end
object Label30: TLabel object Label30: TLabel
Left = 168 Left = 168
Top = 88 Top = 104
Width = 6 Width = 6
Height = 13 Height = 13
Caption = #224 Caption = #224
end end
object LabelTrain: TLabel object LabelTrain: TLabel
Left = 16 Left = 16
Top = 110 Top = 126
Width = 49 Width = 49
Height = 13 Height = 13
Caption = 'Train D'#233'cl' Caption = 'Train D'#233'cl'
end end
object EditAct: TEdit object EditAct: TEdit
Left = 72 Left = 72
Top = 84 Top = 100
Width = 41 Width = 41
Height = 21 Height = 21
ParentShowHint = False ParentShowHint = False
@@ -3765,7 +3779,7 @@ object FormConfig: TFormConfig
end end
object EditEtatActionneur: TEdit object EditEtatActionneur: TEdit
Left = 184 Left = 184
Top = 84 Top = 100
Width = 17 Width = 17
Height = 21 Height = 21
TabOrder = 1 TabOrder = 1
@@ -3773,7 +3787,7 @@ object FormConfig: TFormConfig
end end
object EditTrainDecl: TEdit object EditTrainDecl: TEdit
Left = 72 Left = 72
Top = 108 Top = 124
Width = 129 Width = 129
Height = 21 Height = 21
Hint = Hint =
@@ -3788,7 +3802,7 @@ object FormConfig: TFormConfig
Left = 8 Left = 8
Top = 16 Top = 16
Width = 193 Width = 193
Height = 57 Height = 73
Caption = 'Type de d'#233'clenchement' Caption = 'Type de d'#233'clenchement'
TabOrder = 3 TabOrder = 3
end end
@@ -3812,18 +3826,27 @@ object FormConfig: TFormConfig
end end
object EditAct2: TEdit object EditAct2: TEdit
Left = 120 Left = 120
Top = 84 Top = 100
Width = 41 Width = 41
Height = 21 Height = 21
TabOrder = 6 TabOrder = 6
OnChange = EditAct2Change OnChange = EditAct2Change
end end
object RadioButtonAig: TRadioButton
Left = 32
Top = 64
Width = 145
Height = 17
Caption = 'Ev'#232'nement aiguillage'
TabOrder = 7
OnClick = RadioButtonAigClick
end
end end
object GroupBox19: TGroupBox object GroupBox19: TGroupBox
Left = 8 Left = 8
Top = 160 Top = 176
Width = 209 Width = 217
Height = 113 Height = 129
Caption = 'Destinataire de l'#39'action ' Caption = 'Destinataire de l'#39'action '
TabOrder = 1 TabOrder = 1
object LabelTempo: TLabel object LabelTempo: TLabel
@@ -3859,7 +3882,7 @@ object FormConfig: TFormConfig
end end
object SpeedButtonJoue: TSpeedButton object SpeedButtonJoue: TSpeedButton
Left = 56 Left = 56
Top = 80 Top = 88
Width = 41 Width = 41
Height = 33 Height = 33
Hint = 'Joue le son' Hint = 'Joue le son'
@@ -3882,7 +3905,7 @@ object FormConfig: TFormConfig
end end
object SpeedButtonCharger: TSpeedButton object SpeedButtonCharger: TSpeedButton
Left = 120 Left = 120
Top = 80 Top = 88
Width = 25 Width = 25
Height = 34 Height = 34
Hint = 'Ouvre un fichier son WAV' Hint = 'Ouvre un fichier son WAV'
@@ -3963,7 +3986,7 @@ object FormConfig: TFormConfig
end end
object CheckRAZ: TCheckBox object CheckRAZ: TCheckBox
Left = 32 Left = 32
Top = 40 Top = 48
Width = 145 Width = 145
Height = 17 Height = 17
Caption = 'Remise '#224' 0 apr'#232's pilotage' Caption = 'Remise '#224' 0 apr'#232's pilotage'
@@ -4011,7 +4034,7 @@ object FormConfig: TFormConfig
end end
object ButtonTestAct: TButton object ButtonTestAct: TButton
Left = 64 Left = 64
Top = 266 Top = 306
Width = 89 Width = 89
Height = 20 Height = 20
Hint = 'Test de l'#39'actionneur/d'#233'tecteur en mode RUN' Hint = 'Test de l'#39'actionneur/d'#233'tecteur en mode RUN'
@@ -4072,7 +4095,7 @@ object FormConfig: TFormConfig
end end
object GroupBox17: TGroupBox object GroupBox17: TGroupBox
Left = 0 Left = 0
Top = 232 Top = 224
Width = 345 Width = 345
Height = 193 Height = 193
Caption = 'Actionneurs passage '#224' niveau' Caption = 'Actionneurs passage '#224' niveau'
@@ -4121,7 +4144,7 @@ object FormConfig: TFormConfig
end end
object ButtonEnregistre: TButton object ButtonEnregistre: TButton
Left = 472 Left = 472
Top = 512 Top = 520
Width = 169 Width = 169
Height = 25 Height = 25
Hint = 'Enregistre la configuration sans fermer la fen'#234'tre' Hint = 'Enregistre la configuration sans fermer la fen'#234'tre'
+256 -122
View File
@@ -219,7 +219,6 @@ type
Label39: TLabel; Label39: TLabel;
EditV4F: TEdit; EditV4F: TEdit;
EditV4O: TEdit; EditV4O: TEdit;
Label40: TLabel;
Label41: TLabel; Label41: TLabel;
EditFonte: TEdit; EditFonte: TEdit;
ComboBoxDD: TComboBox; ComboBoxDD: TComboBox;
@@ -286,7 +285,10 @@ type
Button1: TButton; Button1: TButton;
Button3: TButton; Button3: TButton;
CheckPnPulse: TCheckBox; CheckPnPulse: TCheckBox;
CheckBoxFVR: TCheckBox; CheckFVC: TCheckBox;
CheckFRC: TCheckBox;
Label40: TLabel;
RadioButtonAig: TRadioButton;
procedure ButtonAppliquerEtFermerClick(Sender: TObject); procedure ButtonAppliquerEtFermerClick(Sender: TObject);
procedure FormActivate(Sender: TObject); procedure FormActivate(Sender: TObject);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
@@ -412,6 +414,9 @@ type
procedure Button1Click(Sender: TObject); procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject); procedure Button3Click(Sender: TObject);
procedure CheckPnPulseClick(Sender: TObject); procedure CheckPnPulseClick(Sender: TObject);
procedure CheckFVCClick(Sender: TObject);
procedure CheckFRCClick(Sender: TObject);
procedure RadioButtonAigClick(Sender: TObject);
private private
{ Déclarations privées } { Déclarations privées }
public public
@@ -447,7 +452,6 @@ NOTIF_VERSION_ch='NOTIF_VERSION';
verif_version_ch='verif_version'; verif_version_ch='verif_version';
Fonte_ch='Fonte'; Fonte_ch='Fonte';
Raz_signaux_ch='RazSignaux'; Raz_signaux_ch='RazSignaux';
AvecFVR_ch='FeuxVertRougeCli';
// sections de config // sections de config
section_aig_ch='[section_aig]'; section_aig_ch='[section_aig]';
@@ -841,6 +845,11 @@ begin
//verrouillage au carré //verrouillage au carré
if feux[i].verrouCarre then s:=s+'1' else s:=s+'0'; if feux[i].verrouCarre then s:=s+'1' else s:=s+'0';
// feu vert cli
if feux[i].checkFV then s:=s+',FVC1' else s:=s+',FVC0';
// feu rouge cli
if feux[i].checkFR then s:=s+',FRC1' else s:=s+',FRC0';
// si unsemaf, paramètre supplémentaire // si unsemaf, paramètre supplémentaire
if feux[i].decodeur=6 then s:=s+',U'+intToSTR(feux[i].unisemaf); if feux[i].decodeur=6 then s:=s+',U'+intToSTR(feux[i].unisemaf);
@@ -1049,6 +1058,19 @@ begin
if length(s)=0 then begin Affiche('Erreur 679: fichier de configuration ligne erronnée : '+chaine_signal,clred); closefile(fichier);exit;end; if length(s)=0 then begin Affiche('Erreur 679: fichier de configuration ligne erronnée : '+chaine_signal,clred); closefile(fichier);exit;end;
feux[i].VerrouCarre:=s[1]='1'; feux[i].VerrouCarre:=s[1]='1';
delete(s,1,1); delete(s,1,1);
if length(s)>0 then if s[1]=',' then delete(s,1,1);
if copy(s,1,3)='FVC' then
begin
delete(s,1,3);
if length(s)>0 then begin feux[i].checkFV:=s[1]='1';delete(s,1,1);end;
end;
if length(s)>0 then if s[1]=',' then delete(s,1,1);
if copy(s,1,3)='FRC' then
begin
delete(s,1,3);
if length(s)>0 then begin feux[i].checkFR:=s[1]='1';delete(s,1,1);end;
end;
if length(s)>0 then if s[1]=',' then delete(s,1,1); if length(s)>0 then if s[1]=',' then delete(s,1,1);
if length(s)>0 then if s[1]='U' then delete(s,1,1); if length(s)>0 then if s[1]='U' then delete(s,1,1);
@@ -1141,18 +1163,24 @@ var s : string;
begin begin
// adresse // adresse
adresse:=Tablo_Actionneur[i].adresse; adresse:=Tablo_Actionneur[i].adresse;
if Tablo_Actionneur[i].typActMemZone=0 then // type actionneur
case Tablo_Actionneur[i].typdeclenche of
0 :
begin begin
s:=IntToSTR(adresse); if tablo_actionneur[i].det then s:=s+'Z'; s:=IntToSTR(adresse); if tablo_actionneur[i].det then s:=s+'Z';
end end;
else // type mémoire de zone
1 :
begin begin
s:='Mem['+IntToSTR(adresse)+','+IntToSTR(Tablo_Actionneur[i].adresse2)+']'; s:='Mem['+IntToSTR(adresse)+','+IntToSTR(Tablo_Actionneur[i].adresse2)+']';
end; end;
// type aiguillage
2 :
begin
s:='A'+IntToSTR(adresse);
end;
end;
if Tablo_Actionneur[i].loco then if Tablo_Actionneur[i].loco then
s:=s+','+IntToSTR(Tablo_Actionneur[i].Etat)+','+Tablo_Actionneur[i].trainDecl+',F'+ s:=s+','+IntToSTR(Tablo_Actionneur[i].Etat)+','+Tablo_Actionneur[i].trainDecl+',F'+
@@ -1309,9 +1337,6 @@ begin
if Raz_Acc_signaux then s:='1' else s:='0'; if Raz_Acc_signaux then s:='1' else s:='0';
writeln(fichierN,Raz_signaux_ch+'='+s); writeln(fichierN,Raz_signaux_ch+'='+s);
if AvecFVR then s:='1' else s:='0';
writeln(fichierN,AvecFVR_ch+'='+s);
// temporisation entre 2 commandes décodeurs feu // temporisation entre 2 commandes décodeurs feu
writeln(fichierN,Tempo_feu_ch+'=',IntToSTR(Tempo_feu)); writeln(fichierN,Tempo_feu_ch+'=',IntToSTR(Tempo_feu));
@@ -1466,7 +1491,7 @@ begin
Tablo_actionneur[i].etat:=0; Tablo_actionneur[i].etat:=0;
Tablo_actionneur[i].adresse:=0; Tablo_actionneur[i].adresse:=0;
Tablo_actionneur[i].adresse2:=0; Tablo_actionneur[i].adresse2:=0;
Tablo_Actionneur[i].typActMemZone:=0; Tablo_Actionneur[i].typdeclenche:=0;
Tablo_actionneur[i].accessoire:=0; Tablo_actionneur[i].accessoire:=0;
Tablo_actionneur[i].sortie:=0; Tablo_actionneur[i].sortie:=0;
Tablo_actionneur[i].fichierSon:=''; Tablo_actionneur[i].fichierSon:='';
@@ -1485,10 +1510,20 @@ begin
s:=lit_ligne; s:=lit_ligne;
sa:=s; sOrigine:=s; sa:=s; sOrigine:=s;
if s[1]='A' then
begin
Tablo_actionneur[maxtablo_act].typdeclenche:=2; // type aiguillage
Delete(sa,1,1);
val(sa,j,erreur);
Tablo_actionneur[maxtablo_act].adresse:=j;
delete(sa,1,erreur);
s:=sa;
end;
i:=pos('MEM[',sOrigine); i:=pos('MEM[',sOrigine);
if i>0 then if i>0 then
begin begin
Tablo_actionneur[maxtablo_act].typActMemZone:=1; // type mémoire de zone Tablo_actionneur[maxtablo_act].typdeclenche:=1; // type mémoire de zone
Delete(sa,1,4); Delete(sa,1,4);
val(sa,j,erreur); val(sa,j,erreur);
Tablo_actionneur[maxtablo_act].adresse:=j; Tablo_actionneur[maxtablo_act].adresse:=j;
@@ -1503,12 +1538,12 @@ begin
if length(sOrigine)>1 then if length(sOrigine)>1 then
begin begin
if (sOrigine[1]<>'(') and (pos('MEM[',sOrigine)=0) then // si pas détecteur de PN if (sOrigine[1]<>'(') and (sorigine[1]<>'A') and (pos('MEM[',sOrigine)=0) then // si pas détecteur de PN
begin begin
Tablo_actionneur[maxtablo_act].typActMemZone:=0; // type actionneur Tablo_actionneur[maxtablo_act].typdeclenche:=0; // type actionneur
val(sa,j,erreur); val(sa,j,erreur);
Tablo_actionneur[maxtablo_act].adresse:=j; Tablo_actionneur[maxtablo_act].adresse:=j;
if erreur<>0 then Tablo_actionneur[maxTablo_act].det:=sa[erreur]='Z' if erreur<>0 then Tablo_actionneur[maxTablo_act].det:=sa[erreur]='Z'
else Affiche('Erreur actionneur '+sOrigine,clred); else Affiche('Erreur actionneur '+sOrigine,clred);
delete(sa,1,erreur); delete(sa,1,erreur);
s:=sa; s:=sa;
@@ -2316,20 +2351,6 @@ begin
Raz_Acc_signaux:=i=1; Raz_Acc_signaux:=i=1;
end; end;
sa:=uppercase(AvecFVR_ch)+'=';
i:=pos(sa,s);
if i=1 then
begin
inc(nv);
trouve_FVR:=true;
delete(s,i,length(sa));
val(s,i,erreur);
if i>1 then i:=1;
AvecFVR:=i=1;
if avecFVR then espY:=48 else espY:=15; // espacement Y entre deux lignes de feux
end;
// section aiguillages // section aiguillages
sa:=uppercase(section_aig_ch); sa:=uppercase(section_aig_ch);
if pos(sa,s)<>0 then if pos(sa,s)<>0 then
@@ -2397,8 +2418,8 @@ begin
trouve_demcnxEth:=false; trouve_demcnxEth:=false;
trouve_Algo_Uni:=false; trouve_Algo_Uni:=false;
trouve_Nb_cantons_Sig:=false; trouve_Nb_cantons_Sig:=false;
trouve_FVR:=false; //trouve_FVR:=false;
if not(trouve_tempo_feu) then if not(trouve_tempo_feu) then
begin begin
s:=tempo_feu_ch; s:=tempo_feu_ch;
@@ -2408,7 +2429,6 @@ begin
if not(trouve_NOTIF_VERSION) then s:=NOTIF_VERSION_ch; if not(trouve_NOTIF_VERSION) then s:=NOTIF_VERSION_ch;
if not(trouve_verif_version) then s:=verif_version_ch; if not(trouve_verif_version) then s:=verif_version_ch;
if not(trouve_fonte) then s:=fonte_ch; if not(trouve_fonte) then s:=fonte_ch;
if not(trouve_FVR) then s:=AvecFVR_ch;
Nb_Det_Dist:=3; Nb_Det_Dist:=3;
// initialisation des aiguillages avec des valeurs par défaut // initialisation des aiguillages avec des valeurs par défaut
@@ -2447,7 +2467,6 @@ begin
AvecDemandeInterfaceUSB:=true; AvecDemandeInterfaceUSB:=true;
AvecDemandeInterfaceEth:=true; AvecDemandeInterfaceEth:=true;
lay:=''; lay:='';
avecFVR:=false;
Tempo_Aig:=100; Tempo_Aig:=100;
Tempo_feu:=100; Tempo_feu:=100;
ServeurInterfaceCDM:=1; ServeurInterfaceCDM:=1;
@@ -2486,8 +2505,7 @@ begin
if not(trouve_dem_aig) then s:=Init_dem_aig_ch; if not(trouve_dem_aig) then s:=Init_dem_aig_ch;
if not(trouve_demcnxCOMUSB) then s:=Init_dem_interfaceUSBCOM_ch; if not(trouve_demcnxCOMUSB) then s:=Init_dem_interfaceUSBCOM_ch;
if not(trouve_demcnxEth) then s:=Init_dem_interfaceEth_ch; if not(trouve_demcnxEth) then s:=Init_dem_interfaceEth_ch;
if not(trouve_FVR) then s:=AvecFVR_ch;
if not(trouve_tempo_feu) then if not(trouve_tempo_feu) then
begin begin
s:=tempo_feu_ch; s:=tempo_feu_ch;
@@ -2497,7 +2515,6 @@ begin
if not(trouve_NOTIF_VERSION) then s:=NOTIF_VERSION_ch; if not(trouve_NOTIF_VERSION) then s:=NOTIF_VERSION_ch;
if not(trouve_verif_version) then s:=verif_version_ch; if not(trouve_verif_version) then s:=verif_version_ch;
if not(trouve_fonte) then s:=fonte_ch; if not(trouve_fonte) then s:=fonte_ch;
if not(trouve_FVR) then s:=AvecFVR_ch;
if s<>'' then if s<>'' then
begin begin
@@ -2666,7 +2683,6 @@ begin
Srvc_PosTrain:=CheckServPosTrains.checked; Srvc_PosTrain:=CheckServPosTrains.checked;
Srvc_Sig:=CheckBoxSrvSig.checked; Srvc_Sig:=CheckBoxSrvSig.checked;
Raz_Acc_signaux:=CheckBoxRazSignaux.checked; Raz_Acc_signaux:=CheckBoxRazSignaux.checked;
AvecFVR:=CheckBoxFVR.checked;
AvecInitAiguillages:=CheckBoxInitAig.Checked; AvecInitAiguillages:=CheckBoxInitAig.Checked;
AvecDemandeAiguillages:=checkPosAig.checked; AvecDemandeAiguillages:=checkPosAig.checked;
AvecDemandeInterfaceUSB:=CheckBoxDemarUSB.checked; AvecDemandeInterfaceUSB:=CheckBoxDemarUSB.checked;
@@ -2815,7 +2831,6 @@ begin
CheckBoxServAct.checked:=Srvc_Act; CheckBoxServAct.checked:=Srvc_Act;
CheckServPosTrains.checked:=Srvc_PosTrain; CheckServPosTrains.checked:=Srvc_PosTrain;
CheckBoxRazSignaux.checked:=Raz_Acc_signaux; CheckBoxRazSignaux.checked:=Raz_Acc_signaux;
CheckBoxFVR.Checked:=AvecFVR;
CheckBoxInitAig.checked:=AvecInitAiguillages; CheckBoxInitAig.checked:=AvecInitAiguillages;
CheckPosAig.checked:=AvecDemandeAiguillages; CheckPosAig.checked:=AvecDemandeAiguillages;
CheckBoxDemarUSB.checked:=AvecDemandeInterfaceUSB; CheckBoxDemarUSB.checked:=AvecDemandeInterfaceUSB;
@@ -3218,7 +3233,7 @@ begin
EditSon.Visible:=false; EditSon.Visible:=false;
SpeedButtonJoue.Visible:=false; SpeedButtonJoue.Visible:=false;
SpeedButtonCharger.Visible:=false; SpeedButtonCharger.Visible:=false;
LabelNomSon.Visible:=false; LabelNomSon.Visible:=false;
end; end;
end; end;
@@ -3232,10 +3247,10 @@ begin
GroupBoxRadio.Left:=16; GroupBoxRadio.Left:=16;
GroupBoxAct.Top:=92; GroupBoxAct.Top:=92;
GroupBoxAct.Left:=16; GroupBoxAct.Left:=16;
GroupBoxAct.Height:=292; GroupBoxAct.Height:=340;
GroupBox18.Top:=16; GroupBox18.Top:=16;
GroupBox18.Height:=136; GroupBox18.Height:=150;
GroupBox19.Top:=160; GroupBox19.Top:=190;
GroupBox19.Height:=96; GroupBox19.Height:=96;
end; end;
end; end;
@@ -3311,7 +3326,7 @@ begin
SpeedButtonJoue.Visible:=true; SpeedButtonJoue.Visible:=true;
SpeedButtonCharger.Visible:=true; SpeedButtonCharger.Visible:=true;
LabelNomSon.Visible:=true; LabelNomSon.Visible:=true;
RadioButtonLoc.Checked:=false; RadioButtonLoc.Checked:=false;
RadioButtonAccess.Checked:=false; RadioButtonAccess.Checked:=false;
RadioButtonSon.checked:=true; RadioButtonSon.checked:=true;
@@ -3323,6 +3338,49 @@ begin
end; end;
end; end;
procedure champs_decl_actdet;
begin
with formconfig do
begin
EditTrainDecl.Visible:=true ;
LabelTrain.Visible:=true ;
radioButtonActDet.Checked:=true;
radioButtonZones.Checked:=false;
radioButtonAig.Checked:=false;
editact2.Visible:=false;
LabelActionneur.Caption:='Actionneur DétecteurZ';
end;
end;
procedure champs_decl_zones;
begin
with formconfig do
begin
radioButtonActDet.Checked:=false;
radioButtonZones.Checked:=true;
radioButtonAig.Checked:=false;
EditTrainDecl.Visible:=false;
LabelTrain.Visible:=false;
editact2.Visible:=true;
LabelActionneur.Caption:='Mémoire de Zone';
end;
end;
procedure champs_decl_aig;
begin
with formconfig do
begin
radioButtonActDet.Checked:=false;
radioButtonZones.Checked:=false;
radioButtonAig.Checked:=true;
EditAct2.Visible:=false;
EditTrainDecl.Visible:=false;
LabelTrain.Visible:=false;
editact2.Visible:=false;
LabelActionneur.Caption:='Aiguillage';
end;
end;
// transforme une chaine "élément" en une chaine affichable pour le hint // transforme une chaine "élément" en une chaine affichable pour le hint
// ex chaine_element("A32")=aiguillage 32 // ex chaine_element("A32")=aiguillage 32
function chaine_element(Equip : Tequipement;adr : integer) : string; function chaine_element(Equip : Tequipement;adr : integer) : string;
@@ -3389,9 +3447,19 @@ begin
end; end;
if ((d=2) or (d>=5)) and (d<10) then checkBoxFB.Visible:=true else checkBoxFB.Visible:=false; if ((d=2) or (d>=5)) and (d<10) then checkBoxFB.Visible:=true else checkBoxFB.Visible:=false;
if d>2 then
begin
checkFVC.Visible:=true;
checkFRC.Visible:=true;
end
else
begin
checkFVC.Visible:=false;
checkFRC.Visible:=false;
end;
if (d>3) and (d<10) then CheckVerrouCarre.Visible:=true else CheckVerrouCarre.Visible:=false; if (d>3) and (d<10) then CheckVerrouCarre.Visible:=true else CheckVerrouCarre.Visible:=false;
// signal normal // signal normal
if d<10 then if d<10 then
begin begin
@@ -3415,7 +3483,7 @@ begin
EditSuiv2.Hint:=chaine_element(feux[i].Btype_suiv2,feux[i].Adr_el_suiv2); EditSuiv2.Hint:=chaine_element(feux[i].Btype_suiv2,feux[i].Adr_el_suiv2);
end else begin EditDet2.Text:='';EditSuiv2.Text:='';EditSuiv2.Hint:='';end; end else begin EditDet2.Text:='';EditSuiv2.Text:='';EditSuiv2.Hint:='';end;
j:=feux[i].Adr_det3; j:=feux[i].Adr_det3;
if j<>0 then if j<>0 then
begin begin
EditDet3.Text:=IntToSTR(j);EditSuiv3.Text:=TypeEl_To_char(feux[i].Btype_suiv3)+IntToSTR(feux[i].Adr_el_suiv3); EditDet3.Text:=IntToSTR(j);EditSuiv3.Text:=TypeEl_To_char(feux[i].Btype_suiv3)+IntToSTR(feux[i].Adr_el_suiv3);
EditSuiv3.Hint:=chaine_element(feux[i].Btype_suiv3,feux[i].Adr_el_suiv3); EditSuiv3.Hint:=chaine_element(feux[i].Btype_suiv3,feux[i].Adr_el_suiv3);
@@ -3431,7 +3499,9 @@ begin
checkVerrouCarre.Checked:=feux[i].VerrouCarre; checkVerrouCarre.Checked:=feux[i].VerrouCarre;
checkBoxFB.Checked:=feux[i].FeuBlanc; checkBoxFB.Checked:=feux[i].FeuBlanc;
checkFVC.Checked:=feux[i].checkFV;
checkFRC.Checked:=feux[i].checkFR;
// conditions supplémentaires du carré par aiguillages // conditions supplémentaires du carré par aiguillages
l:=1; l:=1;
repeat repeat
@@ -3458,6 +3528,9 @@ begin
EditDet1.Visible:=false;EditDet2.Visible:=false;EditDet3.Visible:=false;EditDet4.Visible:=false; EditDet1.Visible:=false;EditDet2.Visible:=false;EditDet3.Visible:=false;EditDet4.Visible:=false;
EditSuiv1.Visible:=false;EditSuiv2.Visible:=false;EditSuiv3.Visible:=false;EditSuiv4.Visible:=false; EditSuiv1.Visible:=false;EditSuiv2.Visible:=false;EditSuiv3.Visible:=false;EditSuiv4.Visible:=false;
CheckVerrouCarre.Visible:=false; CheckVerrouCarre.Visible:=false;
checkFVC.visible:=false;
checkFRC.visible:=false;
Label24.Visible:=false; Label25.Visible:=false;Label26.Visible:=false;Label27.Visible:=false; Label24.Visible:=false; Label25.Visible:=false;Label26.Visible:=false;Label27.Visible:=false;
// conditions d'affichage du signal directionnel // conditions d'affichage du signal directionnel
@@ -3496,52 +3569,45 @@ begin
fonction:=Tablo_actionneur[i].fonction; fonction:=Tablo_actionneur[i].fonction;
Access:=Tablo_actionneur[i].accessoire; Access:=Tablo_actionneur[i].accessoire;
det:=Tablo_actionneur[i].det; det:=Tablo_actionneur[i].det;
typ:=Tablo_actionneur[i].typActMemZone; typ:=Tablo_actionneur[i].typdeclenche;
// déclencheurs
with formconfig do with formconfig do
begin begin
if typ=0 then //
case typ of
0 :
begin begin
EditTrainDecl.Visible:=true ; champs_decl_actdet;
LabelTrain.Visible:=true ;
end
else
begin
EditTrainDecl.Visible:=false;
LabelTrain.Visible:=false;
end; end;
end; 1 :
begin
champs_decl_zones;
end;
2 :
begin
champs_decl_aig;
end;
end;
end;
if det then s2:='Détecteur ' else s2:='Actionneur '; if det then s2:='Détecteur ' else s2:='Actionneur ';
s2:=s2+intToSTR(Tablo_actionneur[i].adresse); s2:=s2+intToSTR(Tablo_actionneur[i].adresse);
FormConfig.EditAct.Hint:=s2; FormConfig.EditAct.Hint:=s2;
// Actionneur fonction F loco // Actionneur fonction F loco
if Tablo_actionneur[i].loco then if Tablo_actionneur[i].loco then
begin begin
champs_type_loco; champs_type_loco;
formconfig.editAct2.Text:=IntToSTR(Tablo_actionneur[i].adresse2);
if typ=0 then with formconfig do
begin
radioButtonActDet.Checked:=true;
radioButtonZones.Checked:=false;
editAct2.Visible:=false;
LabelActionneur.Caption:='Actionneur DétecteurZ';
end;
if typ=1 then with formconfig do
begin
radioButtonActDet.Checked:=false;
radioButtonZones.Checked:=true;
editAct2.Visible:=true;
LabelActionneur.Caption:='Mémoire de Zone';
editAct2.Text:=IntToSTR(Tablo_actionneur[i].adresse2);
end;
etatAct:=Tablo_actionneur[i].etat; etatAct:=Tablo_actionneur[i].etat;
Adresse:=Tablo_actionneur[i].adresse; Adresse:=Tablo_actionneur[i].adresse;
s2:=Tablo_actionneur[i].trainDecl; s2:=Tablo_actionneur[i].trainDecl;
trainsauve:=s2; trainsauve:=s2;
tempo:=tablo_actionneur[i].Tempo; tempo:=tablo_actionneur[i].Tempo;
with formconfig do with formconfig do
begin begin
champs_type_loco; champs_type_loco;
@@ -3560,21 +3626,22 @@ begin
if Tablo_actionneur[i].act then if Tablo_actionneur[i].act then
begin begin
champs_type_act; champs_type_act;
if typ=0 then with formconfig do case typ of
0 : with formconfig do
begin begin
radioButtonActDet.Checked:=true; //radioButtonActDet.Checked:=true;
radioButtonZones.Checked:=false; //radioButtonZones.Checked:=false;
editAct2.Visible:=false; //editAct2.Visible:=false;
LabelActionneur.Caption:='Actionneur DétecteurZ';
end; end;
if typ=1 then with formconfig do 1 : with formconfig do
begin begin
radioButtonActDet.Checked:=false;
radioButtonZones.Checked:=true;
editAct2.Visible:=true;
LabelActionneur.Caption:='Mémoire de Zone';
end; end;
2 : with formconfig do
begin
end;
end;
etatAct:=Tablo_actionneur[i].etat ; etatAct:=Tablo_actionneur[i].etat ;
Adresse:=Tablo_actionneur[i].adresse; Adresse:=Tablo_actionneur[i].adresse;
sortie:=Tablo_actionneur[i].sortie; sortie:=Tablo_actionneur[i].sortie;
@@ -3750,7 +3817,7 @@ begin
editDroit_BD.Text:=''; editDroit_BD.Text:='';
editPointe_BG.Text:=''; editPointe_BG.Text:='';
EditTempo10.text:=''; EditTempo10.text:='';
end; end;
end; end;
procedure raz_champs_sig; procedure raz_champs_sig;
@@ -3769,6 +3836,8 @@ begin
ImageSignal.Picture:=Nil; ImageSignal.Picture:=Nil;
checkVerrouCarre.Checked:=false; checkVerrouCarre.Checked:=false;
checkBoxFB.Checked:=false; checkBoxFB.Checked:=false;
checkFVC.Checked:=false;
checkFRC.Checked:=false;
end; end;
end; end;
@@ -4413,7 +4482,7 @@ var s : string;
begin begin
if clicliste or (ligneClicSig<0) then exit; if clicliste or (ligneClicSig<0) then exit;
if affevt then Affiche('Evt Verrou carré',clOrange); if affevt then Affiche('Evt Verrou carré',clOrange);
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then
begin begin
feux[ligneClicSig+1].VerrouCarre:=checkVerrouCarre.Checked; feux[ligneClicSig+1].VerrouCarre:=checkVerrouCarre.Checked;
@@ -4421,7 +4490,7 @@ begin
RichSig.Lines[ligneClicSig]:=s; RichSig.Lines[ligneClicSig]:=s;
feux[ligneClicSig+1].modifie:=true; feux[ligneClicSig+1].modifie:=true;
end; end;
end; end;
procedure TFormConfig.CheckBoxFBClick(Sender: TObject); procedure TFormConfig.CheckBoxFBClick(Sender: TObject);
var s : string; var s : string;
@@ -4707,14 +4776,14 @@ begin
// désactiver la ligne PN // désactiver la ligne PN
RE_ColorLine(Formconfig.RichPN,LigneCliqueePN,ClAqua); RE_ColorLine(Formconfig.RichPN,LigneCliqueePN,ClAqua);
lignecliqueePN:=-1; lignecliqueePN:=-1;
with RichAct do with RichAct do
begin begin
i:=Selstart; i:=Selstart;
ligne:=Perform(EM_LINEFROMCHAR,i,0); // numéro de la lignée cliquée ligne:=Perform(EM_LINEFROMCHAR,i,0); // numéro de la lignée cliquée
if ligne<maxTablo_act then if ligne<maxTablo_act then
begin begin
if AncligneClicAct<>-1 then RE_ColorLine(RichAct,AncligneClicAct,ClAqua); if AncligneClicAct<>-1 then RE_ColorLine(RichAct,AncligneClicAct,ClAqua);
AncligneClicAct:=Ligne; AncligneClicAct:=Ligne;
ligneClicAct:=ligne; ligneClicAct:=ligne;
RE_ColorLine(Formconfig.RichAct,ligneClicAct,ClYellow); RE_ColorLine(Formconfig.RichAct,ligneClicAct,ClYellow);
@@ -4732,22 +4801,24 @@ end;
procedure TFormConfig.EditEtatActionneurChange(Sender: TObject); procedure TFormConfig.EditEtatActionneurChange(Sender: TObject);
var s : string; var s : string;
etat,erreur : integer; etat,erreur,typ : integer;
begin begin
if clicliste then exit; if clicliste then exit;
if affevt then affiche('Evt EditActionneur Change',clyellow); if affevt then affiche('Evt EditActionneur Change',clyellow);
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAct then if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAct then
with Formconfig do with Formconfig do
begin begin
s:=EditEtatActionneur.Text; s:=EditEtatActionneur.Text;
if radioButtonLoc.Checked or RadioButtonAccess.Checked then if radioButtonLoc.Checked or RadioButtonAccess.Checked or RadioButtonSon.Checked then
begin begin
Val(s,etat,erreur); Val(s,etat,erreur);
if (erreur<>0) or (etat<0) or (etat>1) then typ:=tablo_actionneur[ligneClicAct+1].typdeclenche;
if (erreur<>0) or (etat<0) or ((typ<2) and (etat>1)) or ((typ=2) and (etat>2)) then
begin begin
LabelInfo.caption:='Erreur état actionneur';exit if typ<2 then begin LabelInfo.caption:='Erreur état actionneur';exit;end;
if typ=2 then begin LabelInfo.caption:='Erreur position aiguillage';exit;end;
end else LabelInfo.caption:=' '; end else LabelInfo.caption:=' ';
tablo_actionneur[ligneClicAct+1].etat:=etat; tablo_actionneur[ligneClicAct+1].etat:=etat;
s:=encode_act_loc_son(ligneClicAct+1); s:=encode_act_loc_son(ligneClicAct+1);
RichAct.Lines[ligneClicAct]:=s; RichAct.Lines[ligneClicAct]:=s;
@@ -5047,7 +5118,24 @@ begin
checkBoxFB.Visible:=false; checkBoxFB.Visible:=false;
checkBoxFB.Checked:=false; checkBoxFB.Checked:=false;
end; end;
if (aspect>3) and (aspect<10) then CheckVerrouCarre.Visible:=true else CheckVerrouCarre.Visible:=false; if (aspect>3) and (aspect<10) then
begin
CheckVerrouCarre.Visible:=true
end
else
begin
CheckVerrouCarre.Visible:=false;
end;
if (aspect>2) and (aspect<10) then
begin
checkFVC.visible:=true;
checkFRC.visible:=true;
end
else
begin
checkFVC.visible:=false;
checkFRC.visible:=false;
end;
feux[index].aspect:=aspect; feux[index].aspect:=aspect;
s:=encode_sig_feux(index); s:=encode_sig_feux(index);
@@ -5791,8 +5879,6 @@ begin
feux[i].Img.free; // supprime l'image, ce qui efface le feu du tableau graphique feux[i].Img.free; // supprime l'image, ce qui efface le feu du tableau graphique
Feux[i].Lbl.free; // supprime le label, ... Feux[i].Lbl.free; // supprime le label, ...
if Feux[i].checkFB<>nil then begin Feux[i].checkFB.Free;Feux[i].CheckFB:=nil;end; // supprime le check du feu blanc s'il existait if Feux[i].checkFB<>nil then begin Feux[i].checkFB.Free;Feux[i].CheckFB:=nil;end; // supprime le check du feu blanc s'il existait
feux[i].checkFR.Free;feux[i].checkFR:=nil;
feux[i].checkFV.Free;feux[i].checkFV:=nil;
end; end;
for i:=1 to NbreFeux-ligneFin do for i:=1 to NbreFeux-ligneFin do
@@ -5831,22 +5917,6 @@ begin
Top:=HtImg+15+((HtImg+EspY+20)*((IndexFeu-1) div NbreImagePLigne)); Top:=HtImg+15+((HtImg+EspY+20)*((IndexFeu-1) div NbreImagePLigne));
Left:=10+ (LargImg+5)*((IndexFeu-1) mod (NbreImagePLigne)); Left:=10+ (LargImg+5)*((IndexFeu-1) mod (NbreImagePLigne));
end; end;
if Feux[IndexFeu].checkFV<>nil then
with Feux[IndexFeu].CheckFV do
begin
Name:='CheckBoxFV'+intToSTR(adresse);
Hint:='Feu vert clignotant';
Top:=HtImg+30+((HtImg+EspY+20)*((IndexFeu-1) div NbreImagePLigne));
Left:=10+ (LargImg+5)*((IndexFeu-1) mod (NbreImagePLigne));
end;
if Feux[IndexFeu].checkFR<>nil then
with Feux[IndexFeu].CheckFR do
begin
Name:='CheckBoxFR'+intToSTR(adresse);
Hint:='Sémaphore clignotant';
Top:=HtImg+45+((HtImg+EspY+20)*((IndexFeu-1) div NbreImagePLigne));
Left:=10+ (LargImg+5)*((IndexFeu-1) mod (NbreImagePLigne));
end;
//Affiche('décale feu '+IntToSTR(i)+'<'+intToSTR(i+1),clorange); //Affiche('décale feu '+IntToSTR(i)+'<'+intToSTR(i+1),clorange);
@@ -7754,6 +7824,8 @@ end;
procedure TFormConfig.PageControlChange(Sender: TObject); procedure TFormConfig.PageControlChange(Sender: TObject);
begin begin
Label20.Visible:=false; Label20.Visible:=false;
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAct then label40.Visible:=true
else label40.Visible:=false;
end; end;
@@ -7785,7 +7857,7 @@ begin
if clicListe then exit; if clicListe then exit;
i:=ligneClicAct+1; i:=ligneClicAct+1;
if AffEvt then Affiche('RadioBoutonActDet '+IntToSTR(i),clyellow); if AffEvt then Affiche('RadioBoutonActDet '+IntToSTR(i),clyellow);
Tablo_Actionneur[i].typActMemZone:=0; Tablo_Actionneur[i].typdeclenche:=0;
LabelActionneur.Caption:='Actionneur DétecteurZ'; LabelActionneur.Caption:='Actionneur DétecteurZ';
editAct2.Visible:=false; editAct2.Visible:=false;
EditTrainDecl.Visible:=true; EditTrainDecl.Visible:=true;
@@ -7819,13 +7891,43 @@ begin
if clicListe then exit; if clicListe then exit;
i:=ligneClicAct+1; i:=ligneClicAct+1;
if AffEvt then Affiche('RadioBoutonZones '+IntToSTR(i),clyellow); if AffEvt then Affiche('RadioBoutonZones '+IntToSTR(i),clyellow);
Tablo_Actionneur[i].typActMemZone:=1; Tablo_Actionneur[i].typdeclenche:=1;
LabelActionneur.Caption:='Mémoire de Zone'; LabelActionneur.Caption:='Mémoire de Zone';
EditTrainDecl.Visible:=false; EditTrainDecl.Visible:=false;
LabelTrain.Visible:=false; LabelTrain.Visible:=false;
editAct2.Visible:=true; editAct2.Visible:=true;
//editact.Text:=intToSTR(Tablo_actionneur[i].adresse2); //editact.Text:=intToSTR(Tablo_actionneur[i].adresse2);
Tablo_actionneur[i].trainDecl:='X';
val(editact.Text,champ,erreur);
Tablo_actionneur[i].adresse:=champ ;
val(editEtatActionneur.Text,champ,erreur);
Tablo_actionneur[i].etat:=champ;
val(editFonctionAccess.Text,champ,erreur);
Tablo_actionneur[i].fonction:=champ;
val(editEtatFoncSortie.Text,champ,erreur);
Tablo_actionneur[i].sortie:=champ;
val(editTempo.Text,champ,erreur);
Tablo_actionneur[i].tempo:=champ;
tablo_actionneur[i].Raz:=checkRaz.checked;
s:=encode_act_loc_son(i);
RichAct.Lines[ligneClicAct]:=s;
end;
procedure TFormConfig.RadioButtonAigClick(Sender: TObject);
var i,champ,erreur : integer;
s : string;
begin
if clicListe then exit;
i:=ligneClicAct+1;
if AffEvt then Affiche('RadioBoutonAig '+IntToSTR(i),clyellow);
Tablo_Actionneur[i].typdeclenche:=2;
LabelActionneur.Caption:='Aiguillage';
EditTrainDecl.Visible:=false;
LabelTrain.Visible:=false;
editAct2.Visible:=false;
//editact.Text:=intToSTR(Tablo_actionneur[i].adresse2);
Tablo_actionneur[i].trainDecl:='X'; Tablo_actionneur[i].trainDecl:='X';
val(editact.Text,champ,erreur); val(editact.Text,champ,erreur);
Tablo_actionneur[i].adresse:=champ ; Tablo_actionneur[i].adresse:=champ ;
@@ -8398,7 +8500,39 @@ begin
end; end;
end; end;
procedure TFormConfig.CheckFVCClick(Sender: TObject);
var s : string;
begin begin
if clicliste or (ligneClicSig<0) then exit;
if affevt then Affiche('Evt FVC',clOrange);
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then
begin
feux[ligneClicSig+1].checkFV:=checkFVC.Checked;
s:=encode_sig_feux(ligneClicSig+1);
RichSig.Lines[ligneClicSig]:=s;
feux[ligneClicSig+1].modifie:=true;
end;
end;
procedure TFormConfig.CheckFRCClick(Sender: TObject);
var s : string;
begin
if clicliste or (ligneClicSig<0) then exit;
if affevt then Affiche('Evt FRC',clOrange);
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then
begin
feux[ligneClicSig+1].checkFR:=checkFRC.Checked;
s:=encode_sig_feux(ligneClicSig+1);
RichSig.Lines[ligneClicSig]:=s;
feux[ligneClicSig+1].modifie:=true;
end;
end;
begin
end. end.
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -1,6 +1,6 @@
object FormPrinc: TFormPrinc object FormPrinc: TFormPrinc
Left = 70 Left = 70
Top = 187 Top = 246
Width = 1213 Width = 1213
Height = 670 Height = 670
Caption = 'Client TCP-IP CDM Rail ou USB - syst'#232'me LENZ' Caption = 'Client TCP-IP CDM Rail ou USB - syst'#232'me LENZ'
+60 -91
View File
@@ -244,7 +244,7 @@ Max_Event_det_tick=30000;
EtatSign : array[0..13] of string[20] =('carré','sémaphore','sémaphore cli','vert','vert cli','violet', EtatSign : array[0..13] of string[20] =('carré','sémaphore','sémaphore cli','vert','vert cli','violet',
'blanc','blanc cli','jaune','jaune cli','ral 30','ral 60','rappel 30','rappel 60'); 'blanc','blanc cli','jaune','jaune cli','ral 30','ral 60','rappel 30','rappel 60');
NbDecodeur = 8; NbDecodeur = 8;
decodeur : array[0..NbDecodeur-1] of string[20] =('rien','Digital Bahn','CDF','LDT','LEB','NMRA','Unisemaf','SR'); decodeur : array[0..NbDecodeur-1] of string[20] =('rien','Digital Bahn','CDF','LDT','LEB','NMRA','Unisemaf Paco','SR');
Etats : array[0..19] of string[30]=('Non commandé','carré','sémaphore','sémaphore cli','vert','vert cli','violet', Etats : array[0..19] of string[30]=('Non commandé','carré','sémaphore','sémaphore cli','vert','vert cli','violet',
'blanc','blanc cli','jaune','jaune cli','ralen 30','ralen 60','ralen 60 + jaune cli','rappel 30','rappel 60', 'blanc','blanc cli','jaune','jaune cli','ralen 30','ralen 60','ralen 60 + jaune cli','rappel 30','rappel 60',
'rappel 30 + jaune','rappel 30 + jaune cli','rappel 60 + jaune','rappel 60 + jaune cli'); 'rappel 30 + jaune','rappel 30 + jaune cli','rappel 60 + jaune','rappel 60 + jaune cli');
@@ -301,8 +301,8 @@ TFeu = record
Img : TImage; // Pointeur sur structure TImage du feu Img : TImage; // Pointeur sur structure TImage du feu
Lbl : TLabel; // pointeur sur structure Tlabel du feu Lbl : TLabel; // pointeur sur structure Tlabel du feu
checkFB : TCheckBox; // pointeur sur structure Checkbox "demande feu blanc" checkFB : TCheckBox; // pointeur sur structure Checkbox "demande feu blanc"
checkFR : TCheckBox; // pointeur demande feu rouge cli checkFR : boolean; // demande feu rouge cli
checkFV : TcheckBox; // pointeur demande feu vert cli checkFV : boolean; // demande feu vert cli
FeuVertCli : boolean ; // avec checkbox ou pas FeuVertCli : boolean ; // avec checkbox ou pas
FeuRougeCli : boolean ; // avec checkbox ou pas FeuRougeCli : boolean ; // avec checkbox ou pas
FeuBlanc : boolean ; // avec checkbox ou pas FeuBlanc : boolean ; // avec checkbox ou pas
@@ -414,13 +414,13 @@ var
Tablo_actionneur : array[1..100] of Tablo_actionneur : array[1..100] of
record record
loco,act,son: boolean; // type loco actionneur ou son loco,act,son: boolean; // destinataire loco acessoire ou son
adresse,adresse2, // adresse: adresse de base ; adresse2=cas d'une Zone adresse,adresse2, // adresse: adresse de base ; adresse2=cas d'une Zone
etat,fonction,tempo,TempoCourante, etat,fonction,tempo,TempoCourante,
accessoire,sortie, accessoire,sortie,
typActMemZone : integer; // 0=actioneur 1=MemZone typdeclenche : integer; // déclencheur: 0=actioneur 1=MemZone 2=evt aig
Raz : boolean; Raz : boolean;
det : boolean; // désigne un détecteur det : boolean; // le déclencheur est un détecteur
FichierSon,trainDecl,TrainDest,TrainCourant : string; FichierSon,trainDecl,TrainDest,TrainCourant : string;
end; end;
@@ -645,7 +645,7 @@ procedure dessine_feu2(Acanvas : Tcanvas;x,y : integer;frX,frY : real;EtatSignal
var Temp,rayon,xViolet,YViolet,xBlanc,yBlanc, var Temp,rayon,xViolet,YViolet,xBlanc,yBlanc,
LgImage,HtImage,code,combine : integer; LgImage,HtImage,code,combine : integer;
ech : real; ech : real;
begin begin
code_to_aspect(Etatsignal,code,combine); code_to_aspect(Etatsignal,code,combine);
rayon:=round(6*frX); rayon:=round(6*frX);
@@ -653,7 +653,7 @@ begin
// récupérer les dimensions de l'image d'origine du feu // récupérer les dimensions de l'image d'origine du feu
LgImage:=Formprinc.Image2feux.Picture.Bitmap.Width; LgImage:=Formprinc.Image2feux.Picture.Bitmap.Width;
HtImage:=Formprinc.Image2feux.Picture.Bitmap.Height; HtImage:=Formprinc.Image2feux.Picture.Bitmap.Height;
XBlanc:=13; YBlanc:=11; XBlanc:=13; YBlanc:=11;
xViolet:=13; yViolet:=23; xViolet:=13; yViolet:=23;
@@ -691,7 +691,7 @@ procedure dessine_feu3(Acanvas : Tcanvas;x,y : integer;frX,frY : real;EtatSignal
var Temp,rayon,xSem,Ysem,xJaune,Yjaune,Xvert,Yvert, var Temp,rayon,xSem,Ysem,xJaune,Yjaune,Xvert,Yvert,
LgImage,HtImage,code,combine : integer; LgImage,HtImage,code,combine : integer;
ech : real; ech : real;
begin begin
code_to_aspect(Etatsignal,code,combine); code_to_aspect(Etatsignal,code,combine);
rayon:=round(6*frX); rayon:=round(6*frX);
@@ -1266,7 +1266,7 @@ begin
// indicateurs de direction // indicateurs de direction
12..16 : dessine_dirN(CanvasDest,x,y,frx,fry,feux[i].EtatSignal,orientation,aspect-10); 12..16 : dessine_dirN(CanvasDest,x,y,frx,fry,feux[i].EtatSignal,orientation,aspect-10);
end; end;
end; end;
end; end;
// procédure activée quand on clique gauche sur l'image d'un feu // procédure activée quand on clique gauche sur l'image d'un feu
@@ -1421,44 +1421,6 @@ begin
end end
else Feux[rang].checkFB:=nil; else Feux[rang].checkFB:=nil;
// créée la checkbox feu vert cli
if AvecFVR or feux[rang].FeuVertCli then
begin
Feux[rang].CheckFV:=TCheckBox.create(Formprinc.ScrollBox1); // ranger l'adresse de la Checkbox dans la structure du feu
with Feux[rang].CheckFV do
begin
onClick:=formprinc.proc_checkBoxFV; // affecter l'adresse de la procédure de traitement quand on clique dessus
Hint:='Vert cli';
Name:='CheckBoxFV'+intToSTR(adresse); // affecter l'adresse du feu pour pouvoir le retrouver dans la procédure
caption:='dem FVC';
Parent:=Formprinc.ScrollBox1;
width:=100;height:=15;
Top:=HtImg+30+((HtImg+EspY+20)*((rang-1) div NbreImagePLigne));
Left:=10+ (LargImg+5)*((rang-1) mod (NbreImagePLigne));
BringToFront;
end;
end
else Feux[rang].checkFV:=nil;
// créée la checkbox feu rouge cli
if AvecFVR or feux[rang].FeuRougeCli then
begin
Feux[rang].checkFR:=TCheckBox.create(Formprinc.ScrollBox1); // ranger l'adresse de la Checkbox dans la structure du feu
with Feux[rang].CheckFR do
begin
Feux[rang].checkFR.onClick:=formprinc.proc_checkBoxFR; // affecter l'adresse de la procédure de traitement quand on clique dessus
Feux[rang].checkFR.Hint:='Sémaphore cli'; // affecter l'adresse du feu dans le HINT pour pouvoir le retrouver plus tard
Name:='CheckBoxFR'+intToSTR(adresse);
caption:='dem FRC';
Parent:=Formprinc.ScrollBox1;
width:=100;height:=15;
Top:=HtImg+45+((HtImg+EspY+20)*((rang-1) div NbreImagePLigne));
Left:=10+ (LargImg+5)*((rang-1) mod (NbreImagePLigne));
BringToFront;
end;
end
else Feux[rang].checkFR:=nil;
end; end;
// ajoute en bout de chaine le checksum d'une trame // ajoute en bout de chaine le checksum d'une trame
@@ -5762,13 +5724,9 @@ begin
if AffSignal then AfficheDebug('Présence train après signal'+intToSTR(AdrFeu)+' -> sémaphore ou carré',clYellow); if AffSignal then AfficheDebug('Présence train après signal'+intToSTR(AdrFeu)+' -> sémaphore ou carré',clYellow);
if testBit(feux[index].EtatSignal,carre)=FALSE then if testBit(feux[index].EtatSignal,carre)=FALSE then
begin begin
if feux[index].checkFR<>nil then if feux[index].checkFR then Maj_Etat_Signal(AdrFeu,semaphore_cli)
begin else Maj_Etat_Signal(AdrFeu,semaphore);
if feux[index].checkFR.Checked then Maj_Etat_Signal(AdrFeu,semaphore_cli) end;
else Maj_Etat_Signal(AdrFeu,semaphore);
end
else Maj_Etat_Signal(AdrFeu,semaphore);
end;
end end
else else
begin begin
@@ -5851,11 +5809,7 @@ begin
end end
else else
begin begin
if feux[index].checkFV<>nil then if feux[index].checkFV then Maj_Etat_Signal(AdrFeu,vert_cli)
begin
if feux[index].checkFV.Checked then Maj_Etat_Signal(AdrFeu,vert_cli)
else Maj_Etat_Signal(AdrFeu,vert);
end
else Maj_Etat_Signal(AdrFeu,vert); else Maj_Etat_Signal(AdrFeu,vert);
//if affsignal then AfficheDebug('Mise du feu au vert',clyellow); //if affsignal then AfficheDebug('Mise du feu au vert',clyellow);
end; end;
@@ -6252,7 +6206,7 @@ end;
// traitement des évènements actionneurs (detecteurs aussi) // traitement des évènements actionneurs (detecteurs aussi)
// adr adr2 : pour mémoire de zone // adr adr2 : pour mémoire de zone
procedure Event_act(adr,adr2,etat : integer;trainDecl : string); procedure Event_act(adr,adr2,etat : integer;trainDecl : string);
var i,v,va,etatAct,Af,Ao,Access,sortie,dZ1F,dZ2F,dZ1O,dZ2O : integer; var typ,i,v,va,etatAct,Af,Ao,Access,sortie,dZ1F,dZ2F,dZ1O,dZ2O : integer;
s,st,trainDest : string; s,st,trainDest : string;
presTrain_PN,adresseOk : boolean; presTrain_PN,adresseOk : boolean;
Ts : TAccessoire; Ts : TAccessoire;
@@ -6269,18 +6223,19 @@ begin
adresseok:=(Tablo_actionneur[i].adresse=adr) ; adresseok:=(Tablo_actionneur[i].adresse=adr) ;
if Tablo_actionneur[i].det then typ:=Tablo_actionneur[i].typdeclenche;
if typ=1 then
begin begin
st:='Détecteur '+intToSTR(adr); adresseok:=adresseOk and (Tablo_actionneur[i].adresse2=adr2);
if Tablo_actionneur[i].typActMemZone=1 then st:='Mémoire de zone '+intToSTR(adr)+' '+intToStr(adr2);
begin end;
adresseok:=adresseOk and (Tablo_actionneur[i].adresse2=adr2); if typ=0 then
st:='Mémoire de zone '+intToSTR(adr)+' '+intToStr(adr2);
end;
end
else
begin begin
st:='Actionneur '+intToSTR(adr); st:='Détecteur/actionneur '+intToSTR(adr);
end;
if typ=2 then
begin
st:='Aiguillage '+intToSTR(adr);
end; end;
// actionneur pour fonction train // actionneur pour fonction train
@@ -6312,7 +6267,8 @@ begin
if adresseOk and (Tablo_actionneur[i].Son) and ((s=trainDecl) or (s='X') or (trainDecl='X') or (trainDecl='')) and (etatAct=etat) if adresseOk and (Tablo_actionneur[i].Son) and ((s=trainDecl) or (s='X') or (trainDecl='X') or (trainDecl='')) and (etatAct=etat)
then then
begin begin
Affiche(st+' Train='+trainDecl+' son '+Tablo_actionneur[i].FichierSon,clyellow); if typ<>2 then st:=st+' Train='+trainDecl;
Affiche(st+' son '+Tablo_actionneur[i].FichierSon,clyellow);
PlaySound(pchar(Tablo_actionneur[i].FichierSon),0,SND_ASYNC); PlaySound(pchar(Tablo_actionneur[i].FichierSon),0,SND_ASYNC);
end; end;
end; end;
@@ -6325,7 +6281,7 @@ begin
// PN par actionneur // PN par actionneur
for v:=1 to Tablo_PN[i].nbvoies do for v:=1 to Tablo_PN[i].nbvoies do
begin begin
aF:=Tablo_PN[i].voie[v].actFerme; aF:=Tablo_PN[i].voie[v].actFerme;
if (aO=adr) and (etat=0) then // actionneur d'ouverture if (aO=adr) and (etat=0) then // actionneur d'ouverture
@@ -6451,7 +6407,7 @@ begin
N_Event_tick:=0; N_Event_tick:=0;
Affiche('Raz Evts détecteurs',clLime); Affiche('Raz Evts détecteurs',clLime);
end; end;
inc(N_Event_tick); inc(N_Event_tick);
event_det_tick[N_event_tick].tick:=tick; event_det_tick[N_event_tick].tick:=tick;
event_det_tick[N_event_tick].adresse:=Adresse; event_det_tick[N_event_tick].adresse:=Adresse;
@@ -6479,7 +6435,7 @@ begin
if AdrPrec=0 then if AdrPrec=0 then
begin begin
If traceListe then AfficheDebug('Le feu '+IntToSTR(AdrFeu)+' est précédé d''un buttoir',clyellow); If traceListe then AfficheDebug('Le feu '+IntToSTR(AdrFeu)+' est précédé d''un buttoir',clyellow);
MemZone[0,AdrDetFeu]:=true; MemZone[0,AdrDetFeu]:=true;
event_act(0,AdrDetFeu,1,''); // activation zone event_act(0,AdrDetFeu,1,''); // activation zone
maj_feu(AdrFeu); maj_feu(AdrFeu);
end; end;
@@ -6520,7 +6476,7 @@ begin
// gérer l'évènement detecteur pour action // gérer l'évènement detecteur pour action
if etat then i:=1 else i:=0; if etat then i:=1 else i:=0;
event_act(Adresse,0,i,train); event_act(Adresse,0,i,train);
if not(confignulle) then calcul_zones; if not(confignulle) then calcul_zones;
end; end;
end; end;
@@ -6531,7 +6487,7 @@ begin
N_event_det:=0; N_event_det:=0;
FormDebug.MemoEvtDet.lines.add('Raz sur débordement'); FormDebug.MemoEvtDet.lines.add('Raz sur débordement');
end; end;
// attention à partir de cette section le code est susceptible de ne pas être exécuté?? // attention à partir de cette section le code est susceptible de ne pas être exécuté??
// Mettre à jour le TCO // Mettre à jour le TCO
@@ -6549,7 +6505,7 @@ end;
procedure Event_Aig(adresse,pos : integer); procedure Event_Aig(adresse,pos : integer);
var s: string; var s: string;
faire_event,inv : boolean; faire_event,inv : boolean;
prov,index : integer; prov,index,i,etatact,typ,adr : integer;
begin begin
index:=index_aig(adresse); index:=index_aig(adresse);
if index=0 then exit; if index=0 then exit;
@@ -6601,6 +6557,15 @@ begin
// l'évaluation des routes est à faire selon conditions // l'évaluation des routes est à faire selon conditions
if faire_event and not(confignulle) then evalue; if faire_event and not(confignulle) then evalue;
// actionneur d'aiguillage
for i:=1 to maxTablo_act do
begin
etatAct:=Tablo_actionneur[i].etat ;
adr:=Tablo_actionneur[i].adresse;
typ:=Tablo_actionneur[i].typdeclenche;
if (typ=2) and (Adr=adresse) then event_act(Adresse,0,pos,'');
end;
end; end;
// pilote une sortie à 0 à l'interface en Xpressnet dont l'adresse est à octet // pilote une sortie à 0 à l'interface en Xpressnet dont l'adresse est à octet
@@ -7667,7 +7632,7 @@ begin
Affiche('Fin des initialisations',clyellow); Affiche('Fin des initialisations',clyellow);
LabelEtat.Caption:=' '; LabelEtat.Caption:=' ';
Affiche_memoire; Affiche_memoire;
DoubleBuffered:=true; // DoubleBuffered:=true;
{ {
aiguillage[index_aig(1)].position:=const_droit; aiguillage[index_aig(1)].position:=const_droit;
@@ -8028,6 +7993,7 @@ begin
pilote_acc(adr,const_devie,aigP); pilote_acc(adr,const_devie,aigP);
s:='accessoire '+IntToSTR(adr)+' dévié'; s:='accessoire '+IntToSTR(adr)+' dévié';
Affiche(s,clyellow); Affiche(s,clyellow);
Self.ActiveControl:=nil;
end; end;
procedure TFormPrinc.EditvalEnter(Sender: TObject); procedure TFormPrinc.EditvalEnter(Sender: TObject);
@@ -9339,8 +9305,8 @@ begin
end; end;
procedure TFormPrinc.Codificationdesactionneurs1Click(Sender: TObject); procedure TFormPrinc.Codificationdesactionneurs1Click(Sender: TObject);
var i,adract,etatAct,fonction,v,acc,sortie : integer; var i,typ,adract,etatAct,fonction,v,acc,sortie : integer;
son,Mem : boolean; loc,act,son : boolean;
s,s2 : string; s,s2 : string;
begin begin
if (maxTablo_act=0) and (NbrePN=0) then if (maxTablo_act=0) and (NbrePN=0) then
@@ -9359,26 +9325,26 @@ begin
acc:=Tablo_actionneur[i].accessoire; acc:=Tablo_actionneur[i].accessoire;
sortie:=Tablo_actionneur[i].sortie; sortie:=Tablo_actionneur[i].sortie;
fonction:=Tablo_actionneur[i].fonction; fonction:=Tablo_actionneur[i].fonction;
loc:=Tablo_actionneur[i].loco;
act:=Tablo_actionneur[i].act;
son:=Tablo_actionneur[i].son; son:=Tablo_actionneur[i].son;
Mem:=Tablo_actionneur[i].typActMemZone=1; typ:=Tablo_actionneur[i].typdeclenche;
if Mem then s:='Mem '+intToSTR(adrAct)+' '+inttostr(Tablo_actionneur[i].Adresse2) if typ=1 then s:='Mem '+intToSTR(adrAct)+' '+inttostr(Tablo_actionneur[i].Adresse2);
else s:=intToSTR(adrAct); if typ=0 then s:=intToSTR(adrAct);
if typ=2 then s:='Aig '+intToSTR(AdrAct);
if (s2<>'') then if loc then
begin
if fonction<>0 then
s:='FonctionF Déclencheur='+s+' :'+intToSTR(etatAct)+' TrainDécl='+s2+' TrainDest='+Tablo_actionneur[i].TrainDest+' F'+IntToSTR(fonction)+ s:='FonctionF Déclencheur='+s+' :'+intToSTR(etatAct)+' TrainDécl='+s2+' TrainDest='+Tablo_actionneur[i].TrainDest+' F'+IntToSTR(fonction)+
' Temporisation='+intToSTR(tablo_actionneur[i].Tempo); ' Temporisation='+intToSTR(tablo_actionneur[i].Tempo);
if acc<>0 then if act then
s:='Accessoire Déclencheur='+s+' :'+intToSTR(etatAct)+' TrainDécl='+s2+' A'+IntToSTR(acc)+ s:='Accessoire Déclencheur='+s+' :'+intToSTR(etatAct)+' TrainDécl='+s2+' A'+IntToSTR(acc)+
' sortie='+intToSTR(sortie); ' sortie='+intToSTR(sortie);
if son then if son then
s:='Son Déclencheur='+s+' :'+intToSTR(etatAct)+' TrainDécl='+s2+ s:='Son Déclencheur='+s+' :'+intToSTR(etatAct)+' TrainDécl='+s2+
' Fichier:'+Tablo_actionneur[i].FichierSon; ' Fichier:'+Tablo_actionneur[i].FichierSon;
Affiche(s,clYellow); Affiche(s,clYellow);
end;
end; end;
// dans le tableau des PN // dans le tableau des PN
@@ -9440,6 +9406,7 @@ begin
begin begin
readln(fte,s); readln(fte,s);
Affiche(s,clLime); Affiche(s,clLime);
sleep(100);
Interprete_trameCDM(s); Interprete_trameCDM(s);
application.processmessages; application.processmessages;
end; end;
@@ -9730,5 +9697,7 @@ end;
end. end.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
BIN
View File
Binary file not shown.
+7 -20
View File
@@ -1,6 +1,6 @@
object FormTCO: TFormTCO object FormTCO: TFormTCO
Left = 155 Left = 178
Top = 94 Top = 70
Width = 1139 Width = 1139
Height = 694 Height = 694
VertScrollBar.Visible = False VertScrollBar.Visible = False
@@ -24,12 +24,12 @@ object FormTCO: TFormTCO
656) 656)
PixelsPerInch = 96 PixelsPerInch = 96
TextHeight = 13 TextHeight = 13
object LabelX: TLabel object LabelCoord: TLabel
Left = 64 Left = 64
Top = 0 Top = 0
Width = 7 Width = 18
Height = 16 Height = 16
Caption = '0' Caption = '0,0'
Font.Charset = ANSI_CHARSET Font.Charset = ANSI_CHARSET
Font.Color = clWindowText Font.Color = clWindowText
Font.Height = -13 Font.Height = -13
@@ -50,19 +50,6 @@ object FormTCO: TFormTCO
Font.Style = [fsBold] Font.Style = [fsBold]
ParentFont = False ParentFont = False
end end
object LabelY: TLabel
Left = 88
Top = 0
Width = 7
Height = 16
Caption = '0'
Font.Charset = ANSI_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Arial'
Font.Style = [fsBold]
ParentFont = False
end
object SourisX: TLabel object SourisX: TLabel
Left = 128 Left = 128
Top = 2 Top = 2
@@ -133,8 +120,8 @@ object FormTCO: TFormTCO
end end
end end
object TrackBarZoom: TTrackBar object TrackBarZoom: TTrackBar
Left = 1051 Left = 1059
Top = 34 Top = 18
Width = 41 Width = 41
Height = 366 Height = 366
Anchors = [akTop, akRight, akBottom] Anchors = [akTop, akRight, akBottom]
+1203 -1048
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+1 -1
View File
@@ -23,7 +23,7 @@ var
Lance_verif : integer; Lance_verif : integer;
verifVersion,notificationVersion : boolean; verifVersion,notificationVersion : boolean;
Const Version='4.8'; // sert à la comparaison de la version publiée Const Version='5.0'; // sert à la comparaison de la version publiée
SousVersion=' '; // en cas d'absence de sous version mettre un espace SousVersion=' '; // en cas d'absence de sous version mettre un espace
implementation implementation
+5 -29
View File
@@ -113,39 +113,15 @@ version 4.3 : D
Information sur la compatibilité windows 11 ajoutée à la documentation. Information sur la compatibilité windows 11 ajoutée à la documentation.
version 4.4 : Possibilité d'avoir un champ vide dans le LAY, ce qui ouvre CDM avec le dernier LAY pour les version 4.4 : Possibilité d'avoir un champ vide dans le LAY, ce qui ouvre CDM avec le dernier LAY pour les
problèmes d'ouverture avec W10 et W11. problèmes d'ouverture avec W10 et W11.
Les passages à niveaux peut être commandés par des zones de détection. Les passages à niveaux peuvent être commandés par des zones de détection.
Code source modifié pour être compilable avec Rad Studio 11. Code source modifié pour être compilable avec Rad Studio 11.
version 4.5 : Correction champ "déclencheur" pour son. version 4.5 : Correction champ "déclencheur" pour son.
version 4.6 : Correction TJD 2/4 états dans le changement de sélection. version 4.6 : Correction TJD 2/4 états dans le changement de sélection.
Gestion des panneaux directionnels dans le TCO. Gestion des panneaux directionnels dans le TCO.
version 4.7 : Réorganisation du menu et du panneau de configuration des cellules du TCO. version 4.7 : Réorganisation du menu et du panneau de configuration des cellules du TCO.
Amélioration du séquenceur de connexion à l'interface. Amélioration du séquenceur de connexion à l'interface.
version 4.71 : Correction bug décodage trame actionneur de CDM version 4.71 : Correction bug décodage trame actionneur de CDM.
version 4.72 : Renforcement de la vérification de la configuration. version 4.72 : Renforcement de la vérification de la configuration.
version 4.73 : Pilotage des PN en impulsionnel ou non version 4.73 : Pilotage des PN en impulsionnel ou non.
version 4.8 : gestion des sémaphores clignotants et voie libre clignotants version 5.0 : Gestion des sémaphores clignotants et voies libres clignotants.
Gestion des actionneurs déclenchés par évènements aiguillages.