V10.91
This commit is contained in:
BIN
Binary file not shown.
@@ -4794,7 +4794,7 @@ var pt : Tpoint;
|
|||||||
canvasI : Tcanvas;
|
canvasI : Tcanvas;
|
||||||
begin
|
begin
|
||||||
clic:=true;
|
clic:=true;
|
||||||
pt:= formAnalyseCDM.ImageCDM.ScreenToClient(Mouse.CursorPos); // coordonnées par rapport à l'image
|
pt:=formAnalyseCDM.ImageCDM.ScreenToClient(Mouse.CursorPos); // coordonnées par rapport à l'image
|
||||||
xSouris:=pt.x;
|
xSouris:=pt.x;
|
||||||
ySouris:=pt.y;
|
ySouris:=pt.y;
|
||||||
|
|
||||||
|
|||||||
+4
-5
@@ -163,7 +163,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// change l'aiguille du compteur
|
// change l'aiguille du compteur "c" en fonction de la vitesse du train "idTrain" dans le composant "comp"
|
||||||
// c : n° de fenetre du compteur idTrain : index du train comp : composant dans lequel se trouve le compteur (form, groupbox ou image)
|
// c : n° de fenetre du compteur idTrain : index du train comp : composant dans lequel se trouve le compteur (form, groupbox ou image)
|
||||||
procedure aiguille_compteur(c,idTrain : integer ; comp : Tcomponent);
|
procedure aiguille_compteur(c,idTrain : integer ; comp : Tcomponent);
|
||||||
var ComptLoc,x1,y1,x2,y2,x3,y3,x4,y4,vitesse,vitesseFin,lim,him : integer;
|
var ComptLoc,x1,y1,x2,y2,x3,y3,x4,y4,vitesse,vitesseFin,lim,him : integer;
|
||||||
@@ -279,6 +279,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
// dessine le fond du compteur 2 (graduations et chiffres)
|
||||||
procedure compteur_2(c : integer;bm : tbitmap;var param : tparamcompt);
|
procedure compteur_2(c : integer;bm : tbitmap;var param : tparamcompt);
|
||||||
var n,v,rayon2,rayon3,rayon4,x1,y1,x2,y2,xt,yt,lim,him,rg : integer;
|
var n,v,rayon2,rayon3,rayon4,x1,y1,x2,y2,xt,yt,lim,him,rg : integer;
|
||||||
angle,incr,r : single;
|
angle,incr,r : single;
|
||||||
@@ -377,6 +378,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
// dessine le fond du compteur tachro
|
||||||
procedure compteur_tachro(c : integer;bm : tbitmap;var param : tparamcompt);
|
procedure compteur_tachro(c : integer;bm : tbitmap;var param : tparamcompt);
|
||||||
var l,av,n,v,rayon2,rayon3,rayon4,x1,y1,x2,y2,xt,yt,lim,him,rg : integer;
|
var l,av,n,v,rayon2,rayon3,rayon4,x1,y1,x2,y2,xt,yt,lim,him,rg : integer;
|
||||||
angle,incr,r,a,sinA,cosA : single;
|
angle,incr,r,a,sinA,cosA : single;
|
||||||
@@ -489,7 +491,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
// dessine dans le FbitMap
|
// dessine le fond du compteur pour tous les compteurs dans le FbitMap
|
||||||
// le var est obligatoire
|
// le var est obligatoire
|
||||||
// typecompt : type du compteur 1 2 ou 3
|
// typecompt : type du compteur 1 2 ou 3
|
||||||
procedure dessin_fond_compteur(var param : TparamCompt;i: integer ; Im : tbitmap;typCompt : integer);
|
procedure dessin_fond_compteur(var param : TparamCompt;i: integer ; Im : tbitmap;typCompt : integer);
|
||||||
@@ -537,8 +539,6 @@ begin
|
|||||||
TextOut(round(137*redX),round(91*redY),'100');
|
TextOut(round(137*redX),round(91*redY),'100');
|
||||||
TextOut(round(124*redX),round(130*redY),'120');
|
TextOut(round(124*redX),round(130*redY),'120');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
rAig:=round(AigCX / 1.5);
|
rAig:=round(AigCX / 1.5);
|
||||||
angleFin:=127; // en fait vitesse maxi compteur
|
angleFin:=127; // en fait vitesse maxi compteur
|
||||||
end;
|
end;
|
||||||
@@ -1021,7 +1021,6 @@ begin
|
|||||||
afficherIconeDuTrain1.Checked:=affTrainCompteur;
|
afficherIconeDuTrain1.Checked:=affTrainCompteur;
|
||||||
init_compteur(1,formcompteur[1]);
|
init_compteur(1,formcompteur[1]);
|
||||||
affiche_train_compteur(1);
|
affiche_train_compteur(1);
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TFormCompteur.Vitesseencrans1Click(Sender: TObject);
|
procedure TFormCompteur.Vitesseencrans1Click(Sender: TObject);
|
||||||
|
|||||||
+73
-7
@@ -1,6 +1,6 @@
|
|||||||
object FormConfig: TFormConfig
|
object FormConfig: TFormConfig
|
||||||
Left = 404
|
Left = 254
|
||||||
Top = 164
|
Top = 172
|
||||||
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'
|
||||||
@@ -1573,7 +1573,7 @@ object FormConfig: TFormConfig
|
|||||||
Top = 8
|
Top = 8
|
||||||
Width = 633
|
Width = 633
|
||||||
Height = 505
|
Height = 505
|
||||||
ActivePage = TabSheetSig
|
ActivePage = TabSheetDet
|
||||||
Font.Charset = DEFAULT_CHARSET
|
Font.Charset = DEFAULT_CHARSET
|
||||||
Font.Color = clBlack
|
Font.Color = clBlack
|
||||||
Font.Height = -11
|
Font.Height = -11
|
||||||
@@ -2930,7 +2930,7 @@ object FormConfig: TFormConfig
|
|||||||
OnClick = RadioButtonTJD4Click
|
OnClick = RadioButtonTJD4Click
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
object ButtonPropage: TButton
|
object ButtonPropageAig: TButton
|
||||||
Left = 192
|
Left = 192
|
||||||
Top = 56
|
Top = 56
|
||||||
Width = 89
|
Width = 89
|
||||||
@@ -2943,7 +2943,7 @@ object FormConfig: TFormConfig
|
|||||||
ShowHint = True
|
ShowHint = True
|
||||||
TabOrder = 9
|
TabOrder = 9
|
||||||
WordWrap = True
|
WordWrap = True
|
||||||
OnClick = ButtonPropageClick
|
OnClick = ButtonPropageAigClick
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
object ButtonNouvAig: TButton
|
object ButtonNouvAig: TButton
|
||||||
@@ -3346,7 +3346,7 @@ object FormConfig: TFormConfig
|
|||||||
Width = 137
|
Width = 137
|
||||||
Height = 21
|
Height = 21
|
||||||
Style = csDropDownList
|
Style = csDropDownList
|
||||||
ItemHeight = 13
|
ItemHeight = 0
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
OnChange = ComboBoxDecChange
|
OnChange = ComboBoxDecChange
|
||||||
end
|
end
|
||||||
@@ -3477,7 +3477,7 @@ object FormConfig: TFormConfig
|
|||||||
Width = 137
|
Width = 137
|
||||||
Height = 21
|
Height = 21
|
||||||
Style = csDropDownList
|
Style = csDropDownList
|
||||||
ItemHeight = 13
|
ItemHeight = 0
|
||||||
TabOrder = 2
|
TabOrder = 2
|
||||||
OnChange = ComboBoxAspChange
|
OnChange = ComboBoxAspChange
|
||||||
end
|
end
|
||||||
@@ -3607,6 +3607,21 @@ object FormConfig: TFormConfig
|
|||||||
TabOrder = 23
|
TabOrder = 23
|
||||||
OnChange = EditTempoSigChange
|
OnChange = EditTempoSigChange
|
||||||
end
|
end
|
||||||
|
object ButtonPropageSig: TButton
|
||||||
|
Left = 224
|
||||||
|
Top = 16
|
||||||
|
Width = 57
|
||||||
|
Height = 17
|
||||||
|
Hint =
|
||||||
|
'Change les adresses dans les TCOs si on a chang'#233' l'#39'adresse d'#39'un ' +
|
||||||
|
'signal'
|
||||||
|
Caption = 'Propage'
|
||||||
|
ParentShowHint = False
|
||||||
|
ShowHint = True
|
||||||
|
TabOrder = 24
|
||||||
|
WordWrap = True
|
||||||
|
OnClick = ButtonPropageSigClick
|
||||||
|
end
|
||||||
end
|
end
|
||||||
object ButtonNouvSig: TButton
|
object ButtonNouvSig: TButton
|
||||||
Left = 0
|
Left = 0
|
||||||
@@ -4568,6 +4583,57 @@ object FormConfig: TFormConfig
|
|||||||
OnChange = EditDecalChange
|
OnChange = EditDecalChange
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
object GroupBox13: TGroupBox
|
||||||
|
Left = 336
|
||||||
|
Top = 272
|
||||||
|
Width = 265
|
||||||
|
Height = 137
|
||||||
|
Caption = 'Changement de l'#39'adresse d'#39'un d'#233'tecteur'
|
||||||
|
TabOrder = 5
|
||||||
|
object Label85: TLabel
|
||||||
|
Left = 16
|
||||||
|
Top = 24
|
||||||
|
Width = 92
|
||||||
|
Height = 13
|
||||||
|
Caption = 'D'#233'tecteur courant :'
|
||||||
|
end
|
||||||
|
object LabelDetCour: TLabel
|
||||||
|
Left = 208
|
||||||
|
Top = 24
|
||||||
|
Width = 3
|
||||||
|
Height = 13
|
||||||
|
Caption = '.'
|
||||||
|
end
|
||||||
|
object LabeledNvleAdrDet: TLabeledEdit
|
||||||
|
Left = 200
|
||||||
|
Top = 48
|
||||||
|
Width = 40
|
||||||
|
Height = 21
|
||||||
|
Hint = 'Nouvelle adresse du d'#233'tecteur'
|
||||||
|
EditLabel.Width = 145
|
||||||
|
EditLabel.Height = 13
|
||||||
|
EditLabel.Caption = 'Nouvelle adresse du d'#233'tecteur'
|
||||||
|
EditLabel.Layout = tlBottom
|
||||||
|
LabelPosition = lpLeft
|
||||||
|
LabelSpacing = 40
|
||||||
|
ParentShowHint = False
|
||||||
|
ShowHint = True
|
||||||
|
TabOrder = 0
|
||||||
|
end
|
||||||
|
object ButtonValideDet: TButton
|
||||||
|
Left = 72
|
||||||
|
Top = 88
|
||||||
|
Width = 137
|
||||||
|
Height = 33
|
||||||
|
Hint =
|
||||||
|
'Propage l'#39'adresse du d'#233'tecteur dans les branches, les aiguillage' +
|
||||||
|
's, les signaux et les TCO'
|
||||||
|
Caption = 'Valider et propager le d'#233'tecteur'
|
||||||
|
TabOrder = 1
|
||||||
|
WordWrap = True
|
||||||
|
OnClick = ButtonValideDetClick
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
object TabSheetPN: TTabSheet
|
object TabSheetPN: TTabSheet
|
||||||
Caption = 'PN'
|
Caption = 'PN'
|
||||||
|
|||||||
+299
-18
@@ -291,7 +291,7 @@ type
|
|||||||
ButtonCouleur: TButton;
|
ButtonCouleur: TButton;
|
||||||
ColorDialogFond: TColorDialog;
|
ColorDialogFond: TColorDialog;
|
||||||
LabelD13: TLabel;
|
LabelD13: TLabel;
|
||||||
ButtonPropage: TButton;
|
ButtonPropageAig: TButton;
|
||||||
ButtonPFCDM: TButton;
|
ButtonPFCDM: TButton;
|
||||||
TabAvance: TTabSheet;
|
TabAvance: TTabSheet;
|
||||||
Label39: TLabel;
|
Label39: TLabel;
|
||||||
@@ -516,6 +516,12 @@ type
|
|||||||
LabeledEditT: TLabeledEdit;
|
LabeledEditT: TLabeledEdit;
|
||||||
SpeedButtonLay: TSpeedButton;
|
SpeedButtonLay: TSpeedButton;
|
||||||
MenuListesCopier2: TMenuItem;
|
MenuListesCopier2: TMenuItem;
|
||||||
|
ButtonPropageSig: TButton;
|
||||||
|
GroupBox13: TGroupBox;
|
||||||
|
LabeledNvleAdrDet: TLabeledEdit;
|
||||||
|
Label85: TLabel;
|
||||||
|
LabelDetCour: TLabel;
|
||||||
|
ButtonValideDet: TButton;
|
||||||
procedure ButtonAppliquerEtFermerClick(Sender: TObject);
|
procedure ButtonAppliquerEtFermerClick(Sender: TObject);
|
||||||
procedure FormCreate(Sender: TObject);
|
procedure FormCreate(Sender: TObject);
|
||||||
procedure ListBoxAigMouseDown(Sender: TObject; Button: TMouseButton;
|
procedure ListBoxAigMouseDown(Sender: TObject; Button: TMouseButton;
|
||||||
@@ -666,7 +672,7 @@ type
|
|||||||
procedure EditDevieS2Change(Sender: TObject);
|
procedure EditDevieS2Change(Sender: TObject);
|
||||||
procedure ButtonCouleurClick(Sender: TObject);
|
procedure ButtonCouleurClick(Sender: TObject);
|
||||||
procedure ColorDialogFondShow(Sender: TObject);
|
procedure ColorDialogFondShow(Sender: TObject);
|
||||||
procedure ButtonPropageClick(Sender: TObject);
|
procedure ButtonPropageAigClick(Sender: TObject);
|
||||||
procedure EditAdrAigExit(Sender: TObject);
|
procedure EditAdrAigExit(Sender: TObject);
|
||||||
procedure EditAdrAigChange(Sender: TObject);
|
procedure EditAdrAigChange(Sender: TObject);
|
||||||
procedure FormActivate(Sender: TObject);
|
procedure FormActivate(Sender: TObject);
|
||||||
@@ -820,6 +826,8 @@ type
|
|||||||
procedure LabeledEditTChange(Sender: TObject);
|
procedure LabeledEditTChange(Sender: TObject);
|
||||||
procedure SpeedButtonLayClick(Sender: TObject);
|
procedure SpeedButtonLayClick(Sender: TObject);
|
||||||
procedure MenuListesCopier2Click(Sender: TObject);
|
procedure MenuListesCopier2Click(Sender: TObject);
|
||||||
|
procedure ButtonPropageSigClick(Sender: TObject);
|
||||||
|
procedure ButtonValideDetClick(Sender: TObject);
|
||||||
|
|
||||||
private
|
private
|
||||||
{ Déclarations privées }
|
{ Déclarations privées }
|
||||||
@@ -1641,6 +1649,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
inc(NbreSignaux);
|
inc(NbreSignaux);
|
||||||
Signaux[i].adresse:=adresse;
|
Signaux[i].adresse:=adresse;
|
||||||
|
Signaux[i].Ancienadresse:=adresse;
|
||||||
Signaux[i].AncienEtat:=$ffff;
|
Signaux[i].AncienEtat:=$ffff;
|
||||||
Signaux[i].AncienAff:=$ffff;
|
Signaux[i].AncienAff:=$ffff;
|
||||||
Signaux[i].Tempo:=0;
|
Signaux[i].Tempo:=0;
|
||||||
@@ -2099,6 +2108,7 @@ begin
|
|||||||
condBouton : s:=s+intToSTR(Tablo_Action[i].TabloCond[j].adresse)+',';
|
condBouton : s:=s+intToSTR(Tablo_Action[i].TabloCond[j].adresse)+',';
|
||||||
CondMemoireEgal,CondMemoireInf,CondMemoireSup
|
CondMemoireEgal,CondMemoireInf,CondMemoireSup
|
||||||
: s:=s+intToSTR(Tablo_Action[i].TabloCond[j].adresse)+','+intToSTR(Tablo_Action[i].TabloCond[j].etat)+',';
|
: s:=s+intToSTR(Tablo_Action[i].TabloCond[j].adresse)+','+intToSTR(Tablo_Action[i].TabloCond[j].etat)+',';
|
||||||
|
CondDetAct : s:=s+intToSTR(Tablo_Action[i].TabloCond[j].adresse)+','+intToSTR(Tablo_Action[i].TabloCond[j].etat)+','+Tablo_Action[i].TabloCond[j].train+',';
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -3689,6 +3699,7 @@ const LessThanValue=-1;
|
|||||||
|
|
||||||
procedure compile_actions;
|
procedure compile_actions;
|
||||||
var n,k,l : integer;
|
var n,k,l : integer;
|
||||||
|
fini : boolean;
|
||||||
begin
|
begin
|
||||||
maxTablo_act:=1;
|
maxTablo_act:=1;
|
||||||
Nligne:=1;
|
Nligne:=1;
|
||||||
@@ -3884,6 +3895,16 @@ const LessThanValue=-1;
|
|||||||
Tablo_Action[maxtablo_act].tabloCond[k].etat:=i;
|
Tablo_Action[maxtablo_act].tabloCond[k].etat:=i;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
condDetAct :
|
||||||
|
begin
|
||||||
|
Val(s,i,erreur);Delete(s,1,erreur);
|
||||||
|
Tablo_Action[maxtablo_act].TabloCond[k].adresse:=i;
|
||||||
|
Val(s,i,erreur);Delete(s,1,erreur);
|
||||||
|
Tablo_Action[maxtablo_act].TabloCond[k].etat:=i;
|
||||||
|
i:=pos(',',s);if i=0 then i:=length(s)+1;
|
||||||
|
sa:=copy(s,1,i-1);delete(s,1,i);
|
||||||
|
Tablo_Action[maxtablo_act].TabloCond[k].train:=sa;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@@ -4042,8 +4063,9 @@ const LessThanValue=-1;
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
inc(maxTablo_act);
|
inc(maxTablo_act);
|
||||||
end;
|
end
|
||||||
until (s='0') or eof(fichier) ;
|
else fini:=true;
|
||||||
|
until eof(fichier) or fini;
|
||||||
dec(maxTablo_act);
|
dec(maxTablo_act);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -7969,7 +7991,7 @@ begin
|
|||||||
richBranche.HideSelection:=false; // pour pouvoir copier coller la fenetre
|
richBranche.HideSelection:=false; // pour pouvoir copier coller la fenetre
|
||||||
//groupBox21.Top:=304;
|
//groupBox21.Top:=304;
|
||||||
GroupBox21.Left:=8;
|
GroupBox21.Left:=8;
|
||||||
ButtonPropage.Hint:='Change les adresses dans les points de connexions'+#13+
|
ButtonPropageAig.Hint:='Change les adresses dans les points de connexions'+#13+
|
||||||
'des aiguillages, des branches et des signaux'+#13+
|
'des aiguillages, des branches et des signaux'+#13+
|
||||||
'si on a changé l''adresse d''un aiguillage';
|
'si on a changé l''adresse d''un aiguillage';
|
||||||
if debug=1 then Affiche('Fin création fenêtre config',clLime);
|
if debug=1 then Affiche('Fin création fenêtre config',clLime);
|
||||||
@@ -9350,9 +9372,9 @@ begin
|
|||||||
index:=Index_Aig(Adresse);
|
index:=Index_Aig(Adresse);
|
||||||
AncienAdresse:=aiguillage[index].AncienAdresse;
|
AncienAdresse:=aiguillage[index].AncienAdresse;
|
||||||
if adresse<>AncienAdresse then
|
if adresse<>AncienAdresse then
|
||||||
FormConfig.ButtonPropage.Hint:='Change les adresses '+intToSTR(AncienAdresse)+' dans les points de connexions'+#13+
|
FormConfig.ButtonPropageAig.Hint:='Change les adresses '+intToSTR(AncienAdresse)+' dans les points de connexions'+#13+
|
||||||
'des aiguillages et des branches par l''adresse '+intToSTR(adresse)
|
'des aiguillages et des branches par l''adresse '+intToSTR(adresse)
|
||||||
else FormConfig.ButtonPropage.Hint:='Change les adresses dans les points de connexions'+#13+
|
else FormConfig.ButtonPropageAig.Hint:='Change les adresses dans les points de connexions'+#13+
|
||||||
'des aiguillages, des branches et des signaux'+#13+
|
'des aiguillages, des branches et des signaux'+#13+
|
||||||
'si on a changé l''adresse d''un aiguillage';
|
'si on a changé l''adresse d''un aiguillage';
|
||||||
clicListe:=false;
|
clicListe:=false;
|
||||||
@@ -9496,6 +9518,8 @@ begin
|
|||||||
begin
|
begin
|
||||||
checkFVC.Visible:=true; // afficher checkbox feu vert clignotant
|
checkFVC.Visible:=true; // afficher checkbox feu vert clignotant
|
||||||
checkFRC.Visible:=true; // afficher checkbox feu rouge clignotant
|
checkFRC.Visible:=true; // afficher checkbox feu rouge clignotant
|
||||||
|
checkFVC.Caption:='Feu vert clignotant';
|
||||||
|
checkFVC.Hint:='Remplace le feu vert par un feu vert clignotant';
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
begin
|
begin
|
||||||
@@ -9503,6 +9527,14 @@ begin
|
|||||||
checkFRC.Visible:=false; // na pas afficher checkbox feu rouge clignotant
|
checkFRC.Visible:=false; // na pas afficher checkbox feu rouge clignotant
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
if d=2 then
|
||||||
|
begin
|
||||||
|
checkFVC.Visible:=true; // afficher checkbox feu vert clignotant
|
||||||
|
checkFVC.Caption:='Feux rouge/vert';
|
||||||
|
checkFVC.Hint:='coché : signal rouge/vert'+#13+
|
||||||
|
'décoché : signal violet/blanc';
|
||||||
|
end;
|
||||||
|
|
||||||
if ((d>3) and (d<10)) or (d=20) then CheckVerrouCarre.Visible:=true else CheckVerrouCarre.Visible:=false;
|
if ((d>3) and (d<10)) or (d=20) then CheckVerrouCarre.Visible:=true else CheckVerrouCarre.Visible:=false;
|
||||||
if d=20 then
|
if d=20 then
|
||||||
begin
|
begin
|
||||||
@@ -11696,7 +11728,7 @@ end;
|
|||||||
function verif_coherence : boolean;
|
function verif_coherence : boolean;
|
||||||
var AncAdr,i,j,k,l,Indexaig,adr,adr2,extr,detect,condcarre,nc,index2,SuivAdr,indexTCO,AdrAig,
|
var AncAdr,i,j,k,l,Indexaig,adr,adr2,extr,detect,condcarre,nc,index2,SuivAdr,indexTCO,AdrAig,
|
||||||
x,y,extr2,adr3,adr4,index3,det1Br,det2Br,det1index,det2index,adresse,Adresse2,dec,nc2,op,
|
x,y,extr2,adr3,adr4,index3,det1Br,det2Br,det1index,det2index,adresse,Adresse2,dec,nc2,op,
|
||||||
delta,broft,adresse3 : integer;
|
delta,broft,adresse3,Sk : integer;
|
||||||
modAig,AncModel,model,km,SuivModel,model2,t1,t2: TEquipement;
|
modAig,AncModel,model,km,SuivModel,model2,t1,t2: TEquipement;
|
||||||
c : char;
|
c : char;
|
||||||
vitesse : longint;
|
vitesse : longint;
|
||||||
@@ -12793,6 +12825,7 @@ begin
|
|||||||
dec:=Signaux[i].decodeur;
|
dec:=Signaux[i].decodeur;
|
||||||
AdrOk:=false;
|
AdrOk:=false;
|
||||||
ok:=false;
|
ok:=false;
|
||||||
|
Sk:=k;
|
||||||
okSignal:=false;
|
okSignal:=false;
|
||||||
s:=s+intToSTR(adresse_detecteur[k])+' ';
|
s:=s+intToSTR(adresse_detecteur[k])+' ';
|
||||||
end;
|
end;
|
||||||
@@ -12802,6 +12835,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
Affiche('Erreur 14: le signal '+IntToSTR(adresse)+' '+decodeur[dec]+' occupe '+intToSTR(nc)+' adresses de '+intToSTR(adresse)+
|
Affiche('Erreur 14: le signal '+IntToSTR(adresse)+' '+decodeur[dec]+' occupe '+intToSTR(nc)+' adresses de '+intToSTR(adresse)+
|
||||||
' à '+intToSTR(adresse+nc-1)+' et chevauche le(s) détecteur(s) suivant(s)',clred);
|
' à '+intToSTR(adresse+nc-1)+' et chevauche le(s) détecteur(s) suivant(s)',clred);
|
||||||
|
s:=s+' car ('+intToSTR(adresse_detecteur[Sk])+'-1 / 2) +1 >='+intToSTR(adresse)+' et <='+intToSTR(adresse+nc-1);
|
||||||
Affiche(s,clred);
|
Affiche(s,clred);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@@ -16373,7 +16407,37 @@ begin
|
|||||||
SetWindowText(ColorDialogFond.Handle,pchar(scouleur));
|
SetWindowText(ColorDialogFond.Handle,pchar(scouleur));
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TFormConfig.ButtonPropageClick(Sender: TObject);
|
procedure TFormConfig.ButtonPropageSigClick(Sender: TObject);
|
||||||
|
var i,x,y,adresse,index,AncienAdresse : integer;
|
||||||
|
s : string;
|
||||||
|
begin
|
||||||
|
adresse:=signaux[ligneclicSig+1].Adresse;
|
||||||
|
if adresse=0 then exit;
|
||||||
|
index:=Index_Signal(Adresse);
|
||||||
|
AncienAdresse:=signaux[index].AncienAdresse;
|
||||||
|
if Adresse=AncienAdresse then exit;
|
||||||
|
|
||||||
|
// TCOs
|
||||||
|
for i:=1 to NbreTCO do
|
||||||
|
begin
|
||||||
|
for y:=1 to NbreCellY[i] do
|
||||||
|
for x:=1 to NbreCellX[i] do
|
||||||
|
begin
|
||||||
|
if tco[i,x,y].Adresse=AncienAdresse then
|
||||||
|
begin
|
||||||
|
tco[i,x,y].Adresse:=Adresse;
|
||||||
|
s:='TCO '+intToSTR(i)+' cellule '+intToSTR(x)+','+intToSTR(y)+' ';
|
||||||
|
s:=s+'Changement ancienne adresse de signal '+intToSTR(AncienAdresse)+' par nouvelle adresse '+intToSTR(adresse);
|
||||||
|
Affiche(s,clyellow);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Affiche_TCO(i);
|
||||||
|
end;
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure TFormConfig.ButtonPropageAigClick(Sender: TObject);
|
||||||
var x,y,i,adresse,AncienAdresse,AdresseBr,v,erreur : integer;
|
var x,y,i,adresse,AncienAdresse,AdresseBr,v,erreur : integer;
|
||||||
typ : tEquipement;
|
typ : tEquipement;
|
||||||
s,Nb : string;
|
s,Nb : string;
|
||||||
@@ -16412,11 +16476,11 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
if typ=triple then if aiguillage[index].AdrTriple=AncienAdresse then
|
if typ=triple then if aiguillage[index].AdrTriple=AncienAdresse then
|
||||||
begin
|
begin
|
||||||
aiguillage[i].AdrTriple:=adresse;
|
aiguillage[i].AdrTriple:=adresse;
|
||||||
Affiche('Réaffectation aiguillage '+intToSTR(aiguillage[i].Adresse)+' triple',clyellow);
|
Affiche('Réaffectation aiguillage '+intToSTR(aiguillage[i].Adresse)+' triple',clyellow);
|
||||||
config_modifie:=true;
|
config_modifie:=true;
|
||||||
end;
|
end;
|
||||||
if (typ=tjd) or (typ=tjs) or (typ=crois) then
|
if (typ=tjd) or (typ=tjs) or (typ=crois) then
|
||||||
begin
|
begin
|
||||||
if aiguillage[i].ADroit=AncienAdresse then
|
if aiguillage[i].ADroit=AncienAdresse then
|
||||||
@@ -16456,7 +16520,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
formconfig.ListBoxAig.itemindex:=0;
|
formconfig.ListBoxAig.itemindex:=0;
|
||||||
|
|
||||||
// branches ----------------------------------
|
// changer l'aiguillage dans les branches ----------------------------------
|
||||||
for i:=1 to NbreBranches do
|
for i:=1 to NbreBranches do
|
||||||
begin
|
begin
|
||||||
Nb:='';v:=0;
|
Nb:='';v:=0;
|
||||||
@@ -16555,7 +16619,7 @@ begin
|
|||||||
Affiche_TCO(i);
|
Affiche_TCO(i);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
ButtonPropage.Hint:='Change les adresses dans les points de connexions'+#13+
|
ButtonPropageAig.Hint:='Change les adresses dans les points de connexions'+#13+
|
||||||
'des aiguillages, des branches et des signaux'+#13+
|
'des aiguillages, des branches et des signaux'+#13+
|
||||||
'si on a changé l''adresse d''un aiguillage';
|
'si on a changé l''adresse d''un aiguillage';
|
||||||
clicListe:=false;
|
clicListe:=false;
|
||||||
@@ -16651,7 +16715,7 @@ begin
|
|||||||
index:=Index_Aig(Adresse);
|
index:=Index_Aig(Adresse);
|
||||||
AncienAdresse:=aiguillage[index].AncienAdresse;
|
AncienAdresse:=aiguillage[index].AncienAdresse;
|
||||||
if adresse<>AncienAdresse then
|
if adresse<>AncienAdresse then
|
||||||
ButtonPropage.Hint:='Change les adresses '+intToSTR(AncienAdresse)+' dans les points de connexions'+#13+
|
ButtonPropageAig.Hint:='Change les adresses '+intToSTR(AncienAdresse)+' dans les points de connexions'+#13+
|
||||||
'des aiguillages et des branches par l''adresse '+intToSTR(adresse);
|
'des aiguillages et des branches par l''adresse '+intToSTR(adresse);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@@ -17269,6 +17333,7 @@ begin
|
|||||||
EditDecal.Text:=IntToSTR(detecteur[adr].distArret);
|
EditDecal.Text:=IntToSTR(detecteur[adr].distArret);
|
||||||
RadioButtonArrFin.Checked:=detecteur[adr].ModeArret=1;
|
RadioButtonArrFin.Checked:=detecteur[adr].ModeArret=1;
|
||||||
RadioButtonARMil.Checked:=detecteur[adr].ModeArret=2;
|
RadioButtonARMil.Checked:=detecteur[adr].ModeArret=2;
|
||||||
|
LabelDetCour.Caption:=intToSTR(adr);
|
||||||
if detecteur[adr].ModeArret=1 then editDecal.Enabled:=true else editDecal.Enabled:=false;
|
if detecteur[adr].ModeArret=1 then editDecal.Enabled:=true else editDecal.Enabled:=false;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@@ -17448,7 +17513,7 @@ begin
|
|||||||
ligneclicDet:=lc;
|
ligneclicDet:=lc;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Val(s,Adresse,erreur); // Adresse de l'aguillage
|
Val(s,Adresse,erreur); // Adresse du détecteur
|
||||||
|
|
||||||
aff_champs_Detecteurs(lc);
|
aff_champs_Detecteurs(lc);
|
||||||
clicliste:=false;
|
clicliste:=false;
|
||||||
@@ -20096,6 +20161,222 @@ begin
|
|||||||
if not(decode_ligne_signal(s,i)) then // décode la chaine et stocke en tableau signal
|
if not(decode_ligne_signal(s,i)) then // décode la chaine et stocke en tableau signal
|
||||||
Affiche('Erreur 59 : définition inccorecte du signal '+intToSTR(i),clred);
|
Affiche('Erreur 59 : définition inccorecte du signal '+intToSTR(i),clred);
|
||||||
end;
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
procedure TFormConfig.ButtonValideDetClick(Sender: TObject);
|
||||||
|
var i,erreur,detect,AncienDet,indexDet,v,adresseBr,x,y,longestLength,l,PixelLength : integer;
|
||||||
|
typ : tEquipement;
|
||||||
|
s,nb,LongestString : string;
|
||||||
|
chgt : boolean;
|
||||||
|
begin
|
||||||
|
if clicListe then exit;
|
||||||
|
val(LabeledNvleAdrDet.text,detect,erreur);
|
||||||
|
if (erreur<>0) or (detect<1) then
|
||||||
|
begin
|
||||||
|
labelInfo.caption:='Erreur';
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
val(LEAdrDet.text,AncienDet,erreur);
|
||||||
|
if (erreur<>0) or (AncienDet<1) then
|
||||||
|
begin
|
||||||
|
labelInfo.caption:='Erreur';
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if ancienDet=detect then exit;
|
||||||
|
|
||||||
|
// vérifier si le nouveau détecteur existe
|
||||||
|
if detecteur[detect].index<>0 then
|
||||||
|
begin
|
||||||
|
LabelInfo.caption:='Le détecteur '+intToSTR(detect)+' existe déja';
|
||||||
|
exit;
|
||||||
|
end;
|
||||||
|
|
||||||
|
labelInfo.caption:='';
|
||||||
|
indexDet:=detecteur[AncienDet].index;
|
||||||
|
detecteur[detect]:=detecteur[ancienDet]; // copier l'ancien dans le nouveau
|
||||||
|
|
||||||
|
with detecteur[ancienDet] do
|
||||||
|
begin
|
||||||
|
index:=0;
|
||||||
|
NumBranche:=0;
|
||||||
|
IndexBranche:=0;
|
||||||
|
end;
|
||||||
|
|
||||||
|
Adresse_detecteur[ligneclicDet+1]:=detect;
|
||||||
|
trier_detecteurs;
|
||||||
|
|
||||||
|
// réafficher la listBox
|
||||||
|
with ListBoxDet do
|
||||||
|
begin
|
||||||
|
clear;
|
||||||
|
for i:=1 to NDetecteurs do items.add(encode_detecteur(i));
|
||||||
|
end;
|
||||||
|
indexDet:=Detecteur[detect].index;
|
||||||
|
formconfig.ListBoxDet.selected[indexDet-1]:=true;
|
||||||
|
|
||||||
|
Affiche('----------------------------------------------------',clWhite);
|
||||||
|
Affiche('Changement détecteur '+intToSTR(ancienDet)+' par l''adresse '+intToSTR(detect),clwhite);
|
||||||
|
|
||||||
|
// changer le détecteur dans les branches chaine ----------------------------------
|
||||||
|
for i:=1 to NbreBranches do
|
||||||
|
begin
|
||||||
|
Nb:='';v:=0;
|
||||||
|
s:=Branche[i];
|
||||||
|
repeat
|
||||||
|
v:=pos(',',s);
|
||||||
|
|
||||||
|
if (s[1]<>'A') and (s[1]<>'T') then
|
||||||
|
begin
|
||||||
|
val(s,adresseBr,erreur);
|
||||||
|
if adresseBR=AncienDet then adresseBr:=detect;
|
||||||
|
Nb:=Nb+intToSTR(adresseBr)+',';
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
if v=0 then
|
||||||
|
Nb:=Nb+s+','
|
||||||
|
else Nb:=Nb+copy(s,1,v-1)+',';
|
||||||
|
end;
|
||||||
|
delete(s,1,v);
|
||||||
|
until (v=0);
|
||||||
|
|
||||||
|
delete(nb,length(nb),1); // supprime la virgule terminale
|
||||||
|
branche[i]:=nb;
|
||||||
|
compile_branche(nb,i);
|
||||||
|
end;
|
||||||
|
|
||||||
|
// réafficher les branches
|
||||||
|
richBranche.Clear;
|
||||||
|
for i:=1 to NbreBranches do
|
||||||
|
begin
|
||||||
|
s:=Branche[i];
|
||||||
|
RichBranche.Lines.Add(s);
|
||||||
|
RE_ColorLine(RichBranche,RichBranche.lines.count-1,ClAqua);
|
||||||
|
end;
|
||||||
|
|
||||||
|
// les détecteurs dans aiguillages
|
||||||
|
// --------- aiguillages -----------
|
||||||
|
for i:=1 to maxaiguillage do
|
||||||
|
begin
|
||||||
|
typ:=aiguillage[i].modele;
|
||||||
|
if (typ=aig) or (typ=triple) then
|
||||||
|
begin
|
||||||
|
if (aiguillage[i].ADroit=AncienDet) and ((aiguillage[i].ADroitB='Z') or (aiguillage[i].ADroitB='')) then
|
||||||
|
begin
|
||||||
|
aiguillage[i].ADroit:=detect;
|
||||||
|
Affiche('Réaffectation '+BTypeToChaine(typ)+' '+intToSTR(aiguillage[i].Adresse)+' droit',clyellow);
|
||||||
|
config_modifie:=true;
|
||||||
|
end;
|
||||||
|
if (aiguillage[i].ADevie=AncienDet) and ((aiguillage[i].ADevieB='Z') or (aiguillage[i].AdevieB='')) then
|
||||||
|
begin
|
||||||
|
aiguillage[i].ADevie:=detect;
|
||||||
|
Affiche('Réaffectation '+BTypeToChaine(typ)+' '+intToSTR(aiguillage[i].Adresse)+' dévié',clyellow);
|
||||||
|
config_modifie:=true;
|
||||||
|
end;
|
||||||
|
if (aiguillage[i].APointe=AncienDet) and ((aiguillage[i].ApointeB='Z') or (aiguillage[i].ApointeB=''))then
|
||||||
|
begin
|
||||||
|
aiguillage[i].APointe:=detect;
|
||||||
|
Affiche('Réaffectation '+BTypeToChaine(typ)+' '+intToSTR(aiguillage[i].Adresse)+' pointe',clyellow);
|
||||||
|
config_modifie:=true;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if (typ=tjd) or (typ=tjs) or (typ=crois) then
|
||||||
|
begin
|
||||||
|
if (aiguillage[i].ADroit=AncienDet) and ((aiguillage[i].ADroitB='Z') or (aiguillage[i].ADroitB='')) then
|
||||||
|
begin
|
||||||
|
aiguillage[i].ADroit:=detect;
|
||||||
|
Affiche('Réaffectation '+BTypeToChaine(typ)+' '+intToSTR(aiguillage[i].Adresse)+' Adroit',clyellow);
|
||||||
|
config_modifie:=true;
|
||||||
|
end;
|
||||||
|
if (aiguillage[i].ADevie=AncienDet) and ((aiguillage[i].ADevieB='Z') or (aiguillage[i].ADevieB='')) then
|
||||||
|
begin
|
||||||
|
aiguillage[i].ADevie:=detect;
|
||||||
|
Affiche('Réaffectation '+BTypeToChaine(typ)+' '+intToSTR(aiguillage[i].Adresse)+' Ddevie',clyellow);
|
||||||
|
config_modifie:=true;
|
||||||
|
end;
|
||||||
|
if (aiguillage[i].DDroit=AncienDet) and ((aiguillage[i].DDroitB='Z') or (aiguillage[i].DDroitB='')) then
|
||||||
|
begin
|
||||||
|
aiguillage[i].DDroit:=detect;
|
||||||
|
Affiche('Réaffectation '+BTypeToChaine(typ)+' '+intToSTR(aiguillage[i].Adresse)+' Ddroit',clyellow);
|
||||||
|
config_modifie:=true;
|
||||||
|
end;
|
||||||
|
if (aiguillage[i].DDevie=AncienDet) and ((aiguillage[i].DdevieB='Z') or (aiguillage[i].dDevieB='')) then
|
||||||
|
begin
|
||||||
|
aiguillage[i].DDevie:=detect;
|
||||||
|
Affiche('Réaffectation '+BTypeToChaine(typ)+' '+intToSTR(aiguillage[i].Adresse)+' Ddevie',clyellow);
|
||||||
|
config_modifie:=true;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
// réaffecte la listebox aiguillages
|
||||||
|
formconfig.ListBoxAig.Clear;
|
||||||
|
for i:=1 to MaxAiguillage do
|
||||||
|
begin
|
||||||
|
s:=encode_aig(i);
|
||||||
|
formConfig.ListBoxAig.Items.AddObject(s,Pointer(clYellow));
|
||||||
|
Aiguillage[i].modifie:=false;
|
||||||
|
end;
|
||||||
|
formconfig.ListBoxAig.itemindex:=0;
|
||||||
|
|
||||||
|
// dans les signaux
|
||||||
|
for i:=1 to NbreSignaux do
|
||||||
|
begin
|
||||||
|
chgt:=false;
|
||||||
|
if signaux[i].Adr_det1=AncienDet then begin signaux[i].Adr_det1:=detect;chgt:=true;end;
|
||||||
|
if signaux[i].Adr_det2=AncienDet then begin signaux[i].Adr_det2:=detect;chgt:=true;end;
|
||||||
|
if signaux[i].Adr_det3=AncienDet then begin signaux[i].Adr_det3:=detect;chgt:=true;end;
|
||||||
|
if signaux[i].Adr_det4=AncienDet then begin signaux[i].Adr_det4:=detect;chgt:=true;end;
|
||||||
|
if (signaux[i].Btype_suiv1=det) and (signaux[i].Adr_el_suiv1=AncienDet) then begin signaux[i].Adr_el_suiv1:=detect;chgt:=true;end;
|
||||||
|
if (signaux[i].Btype_suiv2=det) and (signaux[i].Adr_el_suiv2=AncienDet) then begin signaux[i].Adr_el_suiv2:=detect;chgt:=true;end;
|
||||||
|
if (signaux[i].Btype_suiv3=det) and (signaux[i].Adr_el_suiv3=AncienDet) then begin signaux[i].Adr_el_suiv3:=detect;chgt:=true;end;
|
||||||
|
if (signaux[i].Btype_suiv4=det) and (signaux[i].Adr_el_suiv4=AncienDet) then begin signaux[i].Adr_el_suiv4:=detect;chgt:=true;end;
|
||||||
|
|
||||||
|
if chgt then Affiche('Changement détecteur dans signal '+intToSTR(signaux[i].adresse),clYellow);
|
||||||
|
end;
|
||||||
|
formconfig.ListBoxSig.Clear;
|
||||||
|
longestLength:=0;
|
||||||
|
for i:=1 to NbreSignaux do
|
||||||
|
begin
|
||||||
|
s:=encode_signal(i); // encode la ligne depuis le tableau feux
|
||||||
|
//Affiche(s,clwhite);
|
||||||
|
if s<>'' then
|
||||||
|
begin
|
||||||
|
formconfig.ListBoxSig.Items.Add(s);
|
||||||
|
// trouver la chaine la plus longue pour la future scrollbar
|
||||||
|
l:=Length(s);
|
||||||
|
if l>LongestLength then
|
||||||
|
begin
|
||||||
|
LongestString:=s;
|
||||||
|
LongestLength:=l;
|
||||||
|
end;
|
||||||
|
Signaux[i].modifie:=false;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
PixelLength:=formconfig.ListboxSig.Canvas.TextWidth(LongestString);
|
||||||
|
// positionne une scrollbar dans la listbox - pour l'enlever, envoyer 0 dans pixelLength
|
||||||
|
SendMessage(formconfig.ListBoxSig.Handle,LB_SETHORIZONTALEXTENT,PixelLength,0);
|
||||||
|
|
||||||
|
|
||||||
|
// TCOs
|
||||||
|
for i:=1 to NbreTCO do
|
||||||
|
begin
|
||||||
|
for y:=1 to NbreCellY[i] do
|
||||||
|
for x:=1 to NbreCellX[i] do
|
||||||
|
begin
|
||||||
|
if (tco[i,x,y].Adresse=AncienDet) and (tco[i,x,y].BImage<>Id_Signal) then
|
||||||
|
begin
|
||||||
|
tco[i,x,y].Adresse:=detect;
|
||||||
|
s:='TCO '+intToSTR(i)+' cellule '+intToSTR(x)+','+intToSTR(y)+' ';
|
||||||
|
s:=s+'Changement adresse '+intToSTR(AncienDet)+' par adresse '+intToSTR(detect);
|
||||||
|
Affiche(s,clyellow);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
Affiche_TCO(i);
|
||||||
|
end;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -731,7 +731,7 @@ begin
|
|||||||
NivDebug:=3;
|
NivDebug:=3;
|
||||||
erreur:=Signal_Precedent(Adr);
|
erreur:=Signal_Precedent(Adr);
|
||||||
NivDebug:=AncDebug;
|
NivDebug:=AncDebug;
|
||||||
AfficheDebug('signal précédent='+intToSTR(erreur),clyellow);
|
AfficheDebug('Signal précédent='+intToSTR(erreur),clyellow);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|||||||
+45
-6
@@ -60,7 +60,7 @@ object FormModifAction: TFormModifAction
|
|||||||
Top = 64
|
Top = 64
|
||||||
Width = 729
|
Width = 729
|
||||||
Height = 337
|
Height = 337
|
||||||
ActivePage = TabSheetOp
|
ActivePage = TabSheet1
|
||||||
MultiLine = True
|
MultiLine = True
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
object TabSheetDecl: TTabSheet
|
object TabSheetDecl: TTabSheet
|
||||||
@@ -255,9 +255,9 @@ object FormModifAction: TFormModifAction
|
|||||||
object Label6: TLabel
|
object Label6: TLabel
|
||||||
Left = 258
|
Left = 258
|
||||||
Top = 8
|
Top = 8
|
||||||
Width = 118
|
Width = 124
|
||||||
Height = 13
|
Height = 13
|
||||||
Caption = 'Condition '#224' observer'
|
Caption = 'Conditions '#224' observer'
|
||||||
Font.Charset = DEFAULT_CHARSET
|
Font.Charset = DEFAULT_CHARSET
|
||||||
Font.Color = clWindowText
|
Font.Color = clWindowText
|
||||||
Font.Height = -11
|
Font.Height = -11
|
||||||
@@ -265,6 +265,32 @@ object FormModifAction: TFormModifAction
|
|||||||
Font.Style = [fsBold]
|
Font.Style = [fsBold]
|
||||||
ParentFont = False
|
ParentFont = False
|
||||||
end
|
end
|
||||||
|
object SpeedButtonSupCond: TSpeedButton
|
||||||
|
Left = 338
|
||||||
|
Top = 255
|
||||||
|
Width = 23
|
||||||
|
Height = 22
|
||||||
|
Hint = 'Supprime une condition de la liste'
|
||||||
|
Glyph.Data = {
|
||||||
|
F6000000424DF600000000000000760000002800000010000000100000000100
|
||||||
|
04000000000080000000C40E0000C40E00001000000000000000000000000000
|
||||||
|
8000008000000080800080000000800080008080000080808000C0C0C0000000
|
||||||
|
FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00FFF9FFFFFFF9
|
||||||
|
9FFFFF999FFFFF9999FFF99999FFF999999F9999999F9999999FF99999999999
|
||||||
|
99FFFF99999999999FFFFFF999999999FFFFFFFF9999999FFFFFFFF999999999
|
||||||
|
FFFFFF99999999999FFFF9999999999999FF9999999F9999999F999999FFF999
|
||||||
|
999FF9999FFFFF9999FFFF99FFFFFFF99FFFFFFFFFFFFFFFFFFF}
|
||||||
|
ParentShowHint = False
|
||||||
|
ShowHint = True
|
||||||
|
OnClick = SpeedButtonSupCondClick
|
||||||
|
end
|
||||||
|
object Label7: TLabel
|
||||||
|
Left = 240
|
||||||
|
Top = 258
|
||||||
|
Width = 93
|
||||||
|
Height = 13
|
||||||
|
Caption = 'Supprimer condition'
|
||||||
|
end
|
||||||
object ListBoxCondTot: TListBox
|
object ListBoxCondTot: TListBox
|
||||||
Left = 0
|
Left = 0
|
||||||
Top = 60
|
Top = 60
|
||||||
@@ -279,12 +305,13 @@ object FormModifAction: TFormModifAction
|
|||||||
Top = 28
|
Top = 28
|
||||||
Width = 201
|
Width = 201
|
||||||
Height = 201
|
Height = 201
|
||||||
Hint = 'Condition de r'#233'alisation du d'#233'clencheur'
|
Hint = 'Conditions (chainage en ET) de r'#233'alisation du d'#233'clencheur'
|
||||||
ItemHeight = 13
|
ItemHeight = 13
|
||||||
ParentShowHint = False
|
ParentShowHint = False
|
||||||
ShowHint = True
|
ShowHint = True
|
||||||
TabOrder = 1
|
TabOrder = 1
|
||||||
OnDrawItem = ListBoxConditionsDrawItem
|
OnDrawItem = ListBoxConditionsDrawItem
|
||||||
|
OnKeyDown = ListBoxConditionsKeyDown
|
||||||
OnMouseDown = ListBoxConditionsMouseDown
|
OnMouseDown = ListBoxConditionsMouseDown
|
||||||
end
|
end
|
||||||
object GroupBox1: TGroupBox
|
object GroupBox1: TGroupBox
|
||||||
@@ -449,6 +476,18 @@ object FormModifAction: TFormModifAction
|
|||||||
TabOrder = 3
|
TabOrder = 3
|
||||||
OnClick = ButtonAppCondClick
|
OnClick = ButtonAppCondClick
|
||||||
end
|
end
|
||||||
|
object ButtonAjCond: TButton
|
||||||
|
Left = 128
|
||||||
|
Top = 276
|
||||||
|
Width = 75
|
||||||
|
Height = 25
|
||||||
|
Hint = 'Ajouter la condition s'#233'lectionn'#233'e dans la liste des conditions'
|
||||||
|
Caption = 'Ajouter >>>'
|
||||||
|
ParentShowHint = False
|
||||||
|
ShowHint = True
|
||||||
|
TabOrder = 4
|
||||||
|
OnClick = ButtonAjCondClick
|
||||||
|
end
|
||||||
end
|
end
|
||||||
object TabSheetOp: TTabSheet
|
object TabSheetOp: TTabSheet
|
||||||
Caption = 'Op'#233'rations'
|
Caption = 'Op'#233'rations'
|
||||||
@@ -517,7 +556,7 @@ object FormModifAction: TFormModifAction
|
|||||||
Top = 32
|
Top = 32
|
||||||
Width = 217
|
Width = 217
|
||||||
Height = 21
|
Height = 21
|
||||||
ItemHeight = 13
|
ItemHeight = 0
|
||||||
TabOrder = 0
|
TabOrder = 0
|
||||||
OnChange = ComboBoxFamilleChange
|
OnChange = ComboBoxFamilleChange
|
||||||
end
|
end
|
||||||
@@ -722,7 +761,7 @@ object FormModifAction: TFormModifAction
|
|||||||
Height = 21
|
Height = 21
|
||||||
Hint = 'Nom du p'#233'riph'#233'rique d'#233'fini dans l'#39'onglet "p'#233'riph'#233'riques COM/USB"'
|
Hint = 'Nom du p'#233'riph'#233'rique d'#233'fini dans l'#39'onglet "p'#233'riph'#233'riques COM/USB"'
|
||||||
Style = csDropDownList
|
Style = csDropDownList
|
||||||
ItemHeight = 13
|
ItemHeight = 0
|
||||||
ParentShowHint = False
|
ParentShowHint = False
|
||||||
ShowHint = True
|
ShowHint = True
|
||||||
TabOrder = 4
|
TabOrder = 4
|
||||||
|
|||||||
+205
-24
@@ -84,6 +84,9 @@ type
|
|||||||
Descendreopration1: TMenuItem;
|
Descendreopration1: TMenuItem;
|
||||||
N1: TMenuItem;
|
N1: TMenuItem;
|
||||||
Supprimeropration1: TMenuItem;
|
Supprimeropration1: TMenuItem;
|
||||||
|
ButtonAjCond: TButton;
|
||||||
|
SpeedButtonSupCond: TSpeedButton;
|
||||||
|
Label7: TLabel;
|
||||||
procedure FormCreate(Sender: TObject);
|
procedure FormCreate(Sender: TObject);
|
||||||
procedure ListBoxOperDrawItem(Control: TWinControl; Index: Integer;
|
procedure ListBoxOperDrawItem(Control: TWinControl; Index: Integer;
|
||||||
Rect: TRect; State: TOwnerDrawState);
|
Rect: TRect; State: TOwnerDrawState);
|
||||||
@@ -142,6 +145,10 @@ type
|
|||||||
procedure Supprimeropration1Click(Sender: TObject);
|
procedure Supprimeropration1Click(Sender: TObject);
|
||||||
procedure Monteropration1Click(Sender: TObject);
|
procedure Monteropration1Click(Sender: TObject);
|
||||||
procedure Descendreopration1Click(Sender: TObject);
|
procedure Descendreopration1Click(Sender: TObject);
|
||||||
|
procedure ButtonAjCondClick(Sender: TObject);
|
||||||
|
procedure SpeedButtonSupCondClick(Sender: TObject);
|
||||||
|
procedure ListBoxConditionsKeyDown(Sender: TObject; var Key: Word;
|
||||||
|
Shift: TShiftState);
|
||||||
private
|
private
|
||||||
{ Déclarations privées }
|
{ Déclarations privées }
|
||||||
public
|
public
|
||||||
@@ -286,7 +293,7 @@ begin
|
|||||||
CondMemoireEgal : icone:=IconeCondMemoireEgal;
|
CondMemoireEgal : icone:=IconeCondMemoireEgal;
|
||||||
CondMemoireInf : icone:=IconeCondMemoireInf;
|
CondMemoireInf : icone:=IconeCondMemoireInf;
|
||||||
CondMemoireSup : icone:=IconeCondMemoireSup;
|
CondMemoireSup : icone:=IconeCondMemoireSup;
|
||||||
|
CondDetAct : Icone:=IconeDet;
|
||||||
end;
|
end;
|
||||||
ListBoxCondTot.Items.Add(Format('%d%s', [icone, Conditions[i].nom])); // valeur d'index de l'icone dans la ImagelistIcones
|
ListBoxCondTot.Items.Add(Format('%d%s', [icone, Conditions[i].nom])); // valeur d'index de l'icone dans la ImagelistIcones
|
||||||
ListBoxCondTot.itemHeight:=16; // 16 taille des éléments pour l'icone
|
ListBoxCondTot.itemHeight:=16; // 16 taille des éléments pour l'icone
|
||||||
@@ -404,7 +411,7 @@ begin
|
|||||||
s:=s+'accessoire '+intToSTR(Tablo_Action[i].adresse);
|
s:=s+'accessoire '+intToSTR(Tablo_Action[i].adresse);
|
||||||
DeclDetAct :
|
DeclDetAct :
|
||||||
begin
|
begin
|
||||||
s:=s+'détecteur/Actionneur '+intToSTR(Tablo_Action[i].adresse);
|
s:=s+'détecteur/Actionneur '+intToSTR(Tablo_Action[i].adresse)+' à '+intToSTR(Tablo_Action[i].etat);
|
||||||
s:=s+' par le train "'+Tablo_Action[i].trainDecl+'"';
|
s:=s+' par le train "'+Tablo_Action[i].trainDecl+'"';
|
||||||
end;
|
end;
|
||||||
DeclZoneDet :
|
DeclZoneDet :
|
||||||
@@ -451,7 +458,7 @@ begin
|
|||||||
condMemoireEgal : s:=s+'mémoire '+intToSTR(tablo_action[i].tabloCond[op].adresse)+' à '+intToSTR(tablo_action[i].tabloCond[op].etat);
|
condMemoireEgal : s:=s+'mémoire '+intToSTR(tablo_action[i].tabloCond[op].adresse)+' à '+intToSTR(tablo_action[i].tabloCond[op].etat);
|
||||||
condMemoireInf : s:=s+'mémoire '+intToSTR(tablo_action[i].tabloCond[op].adresse)+' < '+intToSTR(tablo_action[i].tabloCond[op].etat);
|
condMemoireInf : s:=s+'mémoire '+intToSTR(tablo_action[i].tabloCond[op].adresse)+' < '+intToSTR(tablo_action[i].tabloCond[op].etat);
|
||||||
condMemoireSup : s:=s+'mémoire '+intToSTR(tablo_action[i].tabloCond[op].adresse)+' > '+intToSTR(tablo_action[i].tabloCond[op].etat);
|
condMemoireSup : s:=s+'mémoire '+intToSTR(tablo_action[i].tabloCond[op].adresse)+' > '+intToSTR(tablo_action[i].tabloCond[op].etat);
|
||||||
|
condDetAct : s:=s+'det/act '+intToSTR(tablo_action[i].tabloCond[op].adresse)+' à '+intToSTR(tablo_action[i].tabloCond[op].etat)+' train:'+tablo_action[i].tabloCond[op].train;
|
||||||
end;
|
end;
|
||||||
s:=s+#13;
|
s:=s+#13;
|
||||||
end;
|
end;
|
||||||
@@ -677,7 +684,7 @@ end;
|
|||||||
|
|
||||||
// affiche les champs en fonction de l'index du tablo actionneur et de l'index de l'action
|
// affiche les champs en fonction de l'index du tablo actionneur et de l'index de l'action
|
||||||
procedure Aff_champs(index,IndexCond,IndexAction : integer);
|
procedure Aff_champs(index,IndexCond,IndexAction : integer);
|
||||||
var i,decl,act,cond,icone : integer;
|
var i,decl,act,cond,icone,adr : integer;
|
||||||
s : string;
|
s : string;
|
||||||
begin
|
begin
|
||||||
if (index<1) then exit;
|
if (index<1) then exit;
|
||||||
@@ -751,23 +758,27 @@ begin
|
|||||||
for i:=1 to Tablo_Action[index].NbCond do
|
for i:=1 to Tablo_Action[index].NbCond do
|
||||||
begin
|
begin
|
||||||
cond:=Tablo_Action[index].tabloCond[i].numcondition;
|
cond:=Tablo_Action[index].tabloCond[i].numcondition;
|
||||||
s:=conditions[cond].nom;
|
if (cond<0) or (cond>CondDetAct) then Affiche('Erreur structure conditions',clred)
|
||||||
case cond of
|
else
|
||||||
CondVrai : icone:=iconeVrai;
|
begin
|
||||||
CondFaux : icone:=iconeFaux;
|
s:=conditions[cond].nom;
|
||||||
CondVitTrain : icone:=IconeVitTrain;
|
case cond of
|
||||||
CondPosAcc : icone:=IconeAccessoire;
|
CondVrai : icone:=iconeVrai;
|
||||||
condHorl : icone:=IconeLanceHorl;
|
CondFaux : icone:=iconeFaux;
|
||||||
condTrainSig : icone:=IconeDeclSignal;
|
CondVitTrain : icone:=IconeVitTrain;
|
||||||
condFonction : icone:=IconeFonction;
|
CondPosAcc : icone:=IconeAccessoire;
|
||||||
condBouton : icone:=IconeBouton;
|
condHorl : icone:=IconeLanceHorl;
|
||||||
condMemoireEgal: icone:=IconeCondMemoireEgal;
|
condTrainSig : icone:=IconeDeclSignal;
|
||||||
condMemoireSup: icone:=IconeCondMemoireSup;
|
condFonction : icone:=IconeFonction;
|
||||||
condMemoireInf: icone:=IconeCondMemoireinf;
|
condBouton : icone:=IconeBouton;
|
||||||
end;
|
condMemoireEgal: icone:=IconeCondMemoireEgal;
|
||||||
|
condMemoireSup: icone:=IconeCondMemoireSup;
|
||||||
items.Add(Format('%d%s', [icone, s])); // valeur d'index de l'icone dans la ImagelistIcones
|
condMemoireInf: icone:=IconeCondMemoireinf;
|
||||||
|
condDetAct: icone:=IconeDet;
|
||||||
|
end;
|
||||||
|
|
||||||
|
items.Add(Format('%d%s', [icone, s])); // valeur d'index de l'icone dans la ImagelistIcones
|
||||||
|
end;
|
||||||
itemHeight:=16;
|
itemHeight:=16;
|
||||||
end;
|
end;
|
||||||
if indexCond<>0 then itemIndex:=indexCond-1;
|
if indexCond<>0 then itemIndex:=indexCond-1;
|
||||||
@@ -1016,6 +1027,12 @@ begin
|
|||||||
champ1.Visible:=true;
|
champ1.Visible:=true;
|
||||||
champ2.Visible:=true;
|
champ2.Visible:=true;
|
||||||
ChampTrain.Visible:=true;
|
ChampTrain.Visible:=true;
|
||||||
|
SpinEditHeure1.visible:=false;
|
||||||
|
SpinEditHeure2.visible:=false;
|
||||||
|
SpinEditMn1.visible:=false;
|
||||||
|
SpinEditMn2.visible:=false;
|
||||||
|
LabelHeureDebut.Visible:=false;
|
||||||
|
LabelHeureFin.Visible:=false;
|
||||||
end;
|
end;
|
||||||
CondPosAcc :
|
CondPosAcc :
|
||||||
begin
|
begin
|
||||||
@@ -1033,6 +1050,12 @@ begin
|
|||||||
SpinEditEtat2.visible:=true;
|
SpinEditEtat2.visible:=true;
|
||||||
SpinEditEtat2.MinValue:=0;
|
SpinEditEtat2.MinValue:=0;
|
||||||
SpinEditEtat2.MaxValue:=2;
|
SpinEditEtat2.MaxValue:=2;
|
||||||
|
SpinEditHeure1.visible:=false;
|
||||||
|
SpinEditHeure2.visible:=false;
|
||||||
|
SpinEditMn1.visible:=false;
|
||||||
|
SpinEditMn2.visible:=false;
|
||||||
|
LabelHeureDebut.Visible:=false;
|
||||||
|
LabelHeureFin.Visible:=false;
|
||||||
end;
|
end;
|
||||||
condHorl :
|
condHorl :
|
||||||
begin
|
begin
|
||||||
@@ -1055,6 +1078,12 @@ begin
|
|||||||
champTrain.Text:=Tablo_Action[index].tabloCond[indexCond].train;
|
champTrain.Text:=Tablo_Action[index].tabloCond[indexCond].train;
|
||||||
champ1.Visible:=true;
|
champ1.Visible:=true;
|
||||||
champTrain.Visible:=true;
|
champTrain.Visible:=true;
|
||||||
|
SpinEditHeure1.visible:=false;
|
||||||
|
SpinEditHeure2.visible:=false;
|
||||||
|
SpinEditMn1.visible:=false;
|
||||||
|
SpinEditMn2.visible:=false;
|
||||||
|
LabelHeureDebut.Visible:=false;
|
||||||
|
LabelHeureFin.Visible:=false;
|
||||||
end;
|
end;
|
||||||
condFonction :
|
condFonction :
|
||||||
begin
|
begin
|
||||||
@@ -1064,7 +1093,14 @@ begin
|
|||||||
champ1.Visible:=true;
|
champ1.Visible:=true;
|
||||||
ButtonVoirFonc.Visible:=true;
|
ButtonVoirFonc.Visible:=true;
|
||||||
Label2InfoFonction.Visible:=true;
|
Label2InfoFonction.Visible:=true;
|
||||||
Label2InfoFonction.Caption:=NomFonction[Tablo_Action[index].tabloCond[indexCond].adresse];
|
SpinEditHeure1.visible:=false;
|
||||||
|
SpinEditHeure2.visible:=false;
|
||||||
|
SpinEditMn1.visible:=false;
|
||||||
|
SpinEditMn2.visible:=false;
|
||||||
|
LabelHeureDebut.Visible:=false;
|
||||||
|
LabelHeureFin.Visible:=false;
|
||||||
|
Adr:=Tablo_Action[index].tabloCond[indexCond].adresse;
|
||||||
|
if Adr<100 then Label2InfoFonction.Caption:=NomFonction[adr] else Label2InfoFonction.Caption:='';
|
||||||
end;
|
end;
|
||||||
condBouton :
|
condBouton :
|
||||||
begin
|
begin
|
||||||
@@ -1072,6 +1108,12 @@ begin
|
|||||||
champ1.editLabel.Caption:='Numéro de bouton TCO';
|
champ1.editLabel.Caption:='Numéro de bouton TCO';
|
||||||
champTrain.Text:=Tablo_Action[index].tabloCond[indexCond].train;
|
champTrain.Text:=Tablo_Action[index].tabloCond[indexCond].train;
|
||||||
champ1.Visible:=true;
|
champ1.Visible:=true;
|
||||||
|
SpinEditHeure1.visible:=false;
|
||||||
|
SpinEditHeure2.visible:=false;
|
||||||
|
SpinEditMn1.visible:=false;
|
||||||
|
SpinEditMn2.visible:=false;
|
||||||
|
LabelHeureDebut.Visible:=false;
|
||||||
|
LabelHeureFin.Visible:=false;
|
||||||
end;
|
end;
|
||||||
condMemoireEgal,CondMemoireInf,CondMemoireSup :
|
condMemoireEgal,CondMemoireInf,CondMemoireSup :
|
||||||
begin
|
begin
|
||||||
@@ -1081,8 +1123,33 @@ begin
|
|||||||
champ2.Text:=intToSTR(Tablo_Action[index].tabloCond[indexCond].etat);
|
champ2.Text:=intToSTR(Tablo_Action[index].tabloCond[indexCond].etat);
|
||||||
Champ2.EditLabel.Caption:='Valeur';
|
Champ2.EditLabel.Caption:='Valeur';
|
||||||
Champ2.Visible:=true;
|
Champ2.Visible:=true;
|
||||||
|
SpinEditHeure1.visible:=false;
|
||||||
|
SpinEditHeure2.visible:=false;
|
||||||
|
SpinEditMn1.visible:=false;
|
||||||
|
SpinEditMn2.visible:=false;
|
||||||
|
LabelHeureDebut.Visible:=false;
|
||||||
|
LabelHeureFin.Visible:=false;
|
||||||
|
end;
|
||||||
|
condDetAct :
|
||||||
|
begin
|
||||||
|
champ1.Text:=intToSTR(Tablo_Action[index].tabloCond[indexCond].adresse);
|
||||||
|
champ1.editLabel.Caption:='Adresse';
|
||||||
|
champ1.Visible:=true;
|
||||||
|
champ2.Visible:=false;
|
||||||
|
SpinEditHeure1.visible:=false;
|
||||||
|
SpinEditHeure2.visible:=false;
|
||||||
|
SpinEditMn1.visible:=false;
|
||||||
|
SpinEditMn2.visible:=false;
|
||||||
|
LabelHeureDebut.Visible:=false;
|
||||||
|
LabelHeureFin.Visible:=false;
|
||||||
|
ChampTrain.Visible:=true;
|
||||||
|
ChampTrain.Text:=Tablo_Action[index].tabloCond[indexCond].train;
|
||||||
|
SpinEditEtat2.Value:=Tablo_Action[index].tabloCond[indexCond].etat;
|
||||||
|
SpinEditEtat2.visible:=true;
|
||||||
|
SpinEditEtat2.hint:='Etat du détecteur/actionneur'+#13+
|
||||||
|
'0=non activé'+#13+
|
||||||
|
'1=activé';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@@ -1170,6 +1237,46 @@ begin
|
|||||||
ListBoxOperations.ItemIndex:=clicAction;
|
ListBoxOperations.ItemIndex:=clicAction;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure supprime_condition;
|
||||||
|
var i,indexSrc,idBD,NbCond,NumCond,NumOp : integer;
|
||||||
|
s : string;
|
||||||
|
begin
|
||||||
|
indexSrc:=formModifaction.listboxConditions.ItemIndex;
|
||||||
|
if (indexSrc<0) or (formModifaction.listboxConditions.Count=1) then exit;
|
||||||
|
|
||||||
|
idBD:=ligneClicAct+1;
|
||||||
|
NbCond:=Tablo_Action[idBD].NbCond;
|
||||||
|
if NbCond<1 then exit;
|
||||||
|
|
||||||
|
NumCond:=Tablo_Action[idBD].TabloCond[indexSrc+1].numcondition;
|
||||||
|
// NumOp:=Tablo_Action[idBD].tabloOp[I [indexSrc+1].numcondition;
|
||||||
|
|
||||||
|
s:='Voulez vous supprimer la condition '+#13+conditions[NumCond].Nom+' ?';
|
||||||
|
|
||||||
|
if Application.MessageBox(pchar(s),pchar('confirm'), MB_YESNO or MB_DEFBUTTON2 or MB_ICONQUESTION)=idNo then exit;
|
||||||
|
|
||||||
|
// supprimer
|
||||||
|
FormModifAction.listboxConditions.Items.Delete(indexSrc);
|
||||||
|
for i:=IndexSrc+1 to NbCond-1 do
|
||||||
|
begin
|
||||||
|
Tablo_Action[idBD].TabloCond[i]:=Tablo_Action[idBD].TabloCond[i+1];
|
||||||
|
end;
|
||||||
|
|
||||||
|
dec(NbCond);
|
||||||
|
Tablo_Action[idBD].NbCond:=NbCond;
|
||||||
|
Setlength(Tablo_Action[idBD].tabloCond,NbCond+1);
|
||||||
|
|
||||||
|
Aff_champs(idBD,IndexSrc,1); //???
|
||||||
|
exit;
|
||||||
|
|
||||||
|
// réencoder la ligne
|
||||||
|
s:=encode_actions(idBD);
|
||||||
|
// maj combobox
|
||||||
|
FormModifAction.ComboBoxActions.Items[idBD-1]:=s;
|
||||||
|
FormModifAction.ComboBoxActions.ItemIndex:=idbd-1;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure supprime_operation;
|
procedure supprime_operation;
|
||||||
var i,indexSrc,idBD,NbOp,NumOp : integer;
|
var i,indexSrc,idBD,NbOp,NumOp : integer;
|
||||||
s : string;
|
s : string;
|
||||||
@@ -1641,12 +1748,14 @@ begin
|
|||||||
CondPosAcc : Tablo_Action[ligneclicact+1].tabloCond[cliccond+1].accessoire:=i;
|
CondPosAcc : Tablo_Action[ligneclicact+1].tabloCond[cliccond+1].accessoire:=i;
|
||||||
CondTrainSig : Tablo_Action[ligneclicact+1].tabloCond[cliccond+1].adresse:=i;
|
CondTrainSig : Tablo_Action[ligneclicact+1].tabloCond[cliccond+1].adresse:=i;
|
||||||
CondFonction : begin
|
CondFonction : begin
|
||||||
|
if i>100 then i:=1;
|
||||||
Tablo_Action[ligneclicact+1].tabloCond[cliccond+1].adresse:=i;
|
Tablo_Action[ligneclicact+1].tabloCond[cliccond+1].adresse:=i;
|
||||||
Label2InfoFonction.caption:=NomFonction[i];
|
Label2InfoFonction.caption:=NomFonction[i];
|
||||||
end;
|
end;
|
||||||
CondBouton : Tablo_Action[ligneclicact+1].tabloCond[cliccond+1].adresse:=i;
|
CondBouton : Tablo_Action[ligneclicact+1].tabloCond[cliccond+1].adresse:=i;
|
||||||
CondMemoireEgal,CondMemoireInf,CondMemoireSup
|
CondMemoireEgal,CondMemoireInf,CondMemoireSup
|
||||||
: Tablo_Action[ligneclicact+1].tabloCond[cliccond+1].adresse:=i;
|
: Tablo_Action[ligneclicact+1].tabloCond[cliccond+1].adresse:=i;
|
||||||
|
CondDetAct : Tablo_Action[ligneclicact+1].tabloCond[cliccond+1].adresse:=i;
|
||||||
end;
|
end;
|
||||||
maj_combocactions(ligneclicAct);
|
maj_combocactions(ligneclicAct);
|
||||||
end;
|
end;
|
||||||
@@ -1745,6 +1854,7 @@ begin
|
|||||||
cond:=Tablo_Action[ligneclicact+1].tabloCond[cliccond+1].numcondition;
|
cond:=Tablo_Action[ligneclicact+1].tabloCond[cliccond+1].numcondition;
|
||||||
case cond of
|
case cond of
|
||||||
CondVitTrain,CondTrainSig : Tablo_Action[ligneclicact+1].tabloCond[cliccond+1].train:=ChampTrain.Text;
|
CondVitTrain,CondTrainSig : Tablo_Action[ligneclicact+1].tabloCond[cliccond+1].train:=ChampTrain.Text;
|
||||||
|
CondDetAct : Tablo_Action[ligneclicact+1].tabloCond[cliccond+1].train:=ChampTrain.Text;
|
||||||
end;
|
end;
|
||||||
maj_combocactions(ligneclicAct);
|
maj_combocactions(ligneclicAct);
|
||||||
|
|
||||||
@@ -1764,6 +1874,7 @@ begin
|
|||||||
cond:=Tablo_Action[ligneclicact+1].tabloCond[cliccond+1].numcondition;
|
cond:=Tablo_Action[ligneclicact+1].tabloCond[cliccond+1].numcondition;
|
||||||
case cond of
|
case cond of
|
||||||
CondPosAcc : Tablo_Action[ligneclicact+1].tabloCond[cliccond+1].etat:=i;
|
CondPosAcc : Tablo_Action[ligneclicact+1].tabloCond[cliccond+1].etat:=i;
|
||||||
|
CondDetAct : Tablo_Action[ligneclicact+1].tabloCond[cliccond+1].etat:=i;
|
||||||
end;
|
end;
|
||||||
maj_combocactions(ligneclicAct);
|
maj_combocactions(ligneclicAct);
|
||||||
end;
|
end;
|
||||||
@@ -1802,8 +1913,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TFormModifAction.ListBoxOperationsKeyDown(Sender: TObject;
|
procedure TFormModifAction.ListBoxOperationsKeyDown(Sender: TObject;
|
||||||
var Key: Word; Shift: TShiftState);
|
var Key: Word; Shift: TShiftState);
|
||||||
var nb : integer;
|
var nb : integer;
|
||||||
begin
|
begin
|
||||||
nb:=Tablo_Action[ligneclicAct+1].NbOperations;
|
nb:=Tablo_Action[ligneclicAct+1].NbOperations;
|
||||||
if (nb<1) or clicliste then exit;
|
if (nb<1) or clicliste then exit;
|
||||||
@@ -1889,4 +2000,74 @@ begin
|
|||||||
descend_operation;
|
descend_operation;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TFormModifAction.ButtonAjCondClick(Sender: TObject);
|
||||||
|
var indexSrc,idBD,NbOp,NbCond,i : integer;
|
||||||
|
s : string;
|
||||||
|
begin
|
||||||
|
indexSrc:=listboxCondTot.ItemIndex;
|
||||||
|
if indexSrc<0 then exit;
|
||||||
|
|
||||||
|
s:=ListBoxCondTot.Items[IndexSrc];
|
||||||
|
i:=index_condition(s);
|
||||||
|
if i=0 then exit;
|
||||||
|
|
||||||
|
idBD:=ligneClicAct+1;
|
||||||
|
NbOp:=Tablo_Action[idBD].NbOperations;
|
||||||
|
NbCond:=Tablo_Action[idBD].NbCond;
|
||||||
|
inc(NbCond);
|
||||||
|
Tablo_Action[idBD].NbCond:=NbCond;
|
||||||
|
Setlength(Tablo_Action[idBD].TabloCond,NbCond+1);
|
||||||
|
// le nouveau numéro de condition c'est l'index de la listboxCond
|
||||||
|
Tablo_Action[idBD].tabloCond[NbCond].numcondition:=i;
|
||||||
|
|
||||||
|
Aff_champs(idbd,nbCond,Nbop);
|
||||||
|
clicCond:=NbCond-1;
|
||||||
|
ListBoxOperations.ItemIndex:=clicCond;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TFormModifAction.SpeedButtonSupCondClick(Sender: TObject);
|
||||||
|
begin
|
||||||
|
supprime_condition;
|
||||||
|
end;
|
||||||
|
|
||||||
|
procedure TFormModifAction.ListBoxConditionsKeyDown(Sender: TObject;
|
||||||
|
var Key: Word; Shift: TShiftState);
|
||||||
|
var nb : integer;
|
||||||
|
begin
|
||||||
|
nb:=Tablo_Action[ligneclicAct+1].NbCond;
|
||||||
|
if (nb<1) or clicliste then exit;
|
||||||
|
if key=VK_delete then supprime_Condition;
|
||||||
|
|
||||||
|
if ord(Key)=VK_UP then
|
||||||
|
begin
|
||||||
|
begin
|
||||||
|
if clicCond>0 then
|
||||||
|
begin
|
||||||
|
dec(clicCond);
|
||||||
|
Aff_champs(ligneclicAct+1,ClicCond+1,ClicAction+1);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if ord(Key)=VK_DOWN then
|
||||||
|
begin
|
||||||
|
begin
|
||||||
|
if clicCond<nb-1 then
|
||||||
|
begin
|
||||||
|
inc(clicCond);
|
||||||
|
Aff_champs(ligneclicAct+1,ClicCond+1,ClicAction+1);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
if (Shift = [ssCtrl]) and (key = ord('A')) then
|
||||||
|
begin
|
||||||
|
ListBoxConditions.SelectAll;
|
||||||
|
end;
|
||||||
|
|
||||||
|
clicListe:=false;
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|||||||
+12
-2
@@ -221,7 +221,12 @@ procedure TFormPilote.RadioVertClick(Sender: TObject);
|
|||||||
begin
|
begin
|
||||||
Raz_combine;
|
Raz_combine;
|
||||||
Signaux[0].AncienEtat:=Signaux[0].EtatSignal;
|
Signaux[0].AncienEtat:=Signaux[0].EtatSignal;
|
||||||
if nation=1 then Maj_Etat_Signal(0,vert) else Maj_Etat_Signal(0,vertB) ;
|
if nation=1 then
|
||||||
|
begin
|
||||||
|
if Signaux[index_Signal(AdrPilote)].checkFV then Maj_Etat_Signal(0,blanc)
|
||||||
|
else Maj_Etat_Signal(0,vert);
|
||||||
|
end
|
||||||
|
else Maj_Etat_Signal(0,vertB) ;
|
||||||
dessine_signal_pilote;
|
dessine_signal_pilote;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -254,7 +259,12 @@ procedure TFormPilote.RadioRougeClick(Sender: TObject);
|
|||||||
begin
|
begin
|
||||||
Raz_combine;
|
Raz_combine;
|
||||||
Signaux[0].AncienEtat:=Signaux[0].EtatSignal;
|
Signaux[0].AncienEtat:=Signaux[0].EtatSignal;
|
||||||
Maj_Etat_Signal(0,semaphore);
|
if nation=1 then
|
||||||
|
begin
|
||||||
|
if Signaux[index_Signal(AdrPilote)].checkFV then Maj_Etat_Signal(0,violet)
|
||||||
|
else Maj_Etat_Signal(0,semaphore);
|
||||||
|
end
|
||||||
|
else Maj_Etat_Signal(0,vertB) ;
|
||||||
dessine_signal_pilote;
|
dessine_signal_pilote;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -6310,7 +6310,7 @@ object FormPrinc: TFormPrinc
|
|||||||
Top = 200
|
Top = 200
|
||||||
Width = 393
|
Width = 393
|
||||||
Height = 265
|
Height = 265
|
||||||
ActivePage = TabSheetSig
|
ActivePage = TabSheetTrains
|
||||||
Anchors = []
|
Anchors = []
|
||||||
TabOrder = 5
|
TabOrder = 5
|
||||||
OnChange = PageControlChange
|
OnChange = PageControlChange
|
||||||
|
|||||||
+129
-142
@@ -379,7 +379,6 @@ type
|
|||||||
procedure Demandetataccessoires1Click(Sender: TObject);
|
procedure Demandetataccessoires1Click(Sender: TObject);
|
||||||
procedure LancerCDMrail1Click(Sender: TObject);
|
procedure LancerCDMrail1Click(Sender: TObject);
|
||||||
procedure TrackBarVitChange(Sender: TObject);
|
procedure TrackBarVitChange(Sender: TObject);
|
||||||
procedure EditVitesseChange(Sender: TObject);
|
|
||||||
procedure ButtonEnvClick(Sender: TObject);
|
procedure ButtonEnvClick(Sender: TObject);
|
||||||
procedure OpRoulageClick(Sender: TObject);
|
procedure OpRoulageClick(Sender: TObject);
|
||||||
procedure Demandetatdtecteurs1Click(Sender: TObject);
|
procedure Demandetatdtecteurs1Click(Sender: TObject);
|
||||||
@@ -461,7 +460,6 @@ type
|
|||||||
procedure PageControlChange(Sender: TObject);
|
procedure PageControlChange(Sender: TObject);
|
||||||
procedure Dtacherlecompteur1Click(Sender: TObject);
|
procedure Dtacherlecompteur1Click(Sender: TObject);
|
||||||
procedure PopupMenuCompteursPopup(Sender: TObject);
|
procedure PopupMenuCompteursPopup(Sender: TObject);
|
||||||
procedure Button1Click(Sender: TObject);
|
|
||||||
procedure TrackBarSigChange(Sender: TObject);
|
procedure TrackBarSigChange(Sender: TObject);
|
||||||
procedure Timer2Timer(Sender: TObject);
|
procedure Timer2Timer(Sender: TObject);
|
||||||
private
|
private
|
||||||
@@ -482,11 +480,6 @@ type
|
|||||||
procedure ImCOnDblclic(Sender : TObject);
|
procedure ImCOnDblclic(Sender : TObject);
|
||||||
procedure ImC0Onclic(Sender : Tobject);
|
procedure ImC0Onclic(Sender : Tobject);
|
||||||
procedure ImTBOnChange(Sender : Tobject);
|
procedure ImTBOnChange(Sender : Tobject);
|
||||||
{$IF CompilerVersion >= 28.0}
|
|
||||||
procedure DataReceived(const Data: TidBytes);
|
|
||||||
{$ELSE}
|
|
||||||
procedure DataReceived(const Data: string);
|
|
||||||
{$IFEND}
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@@ -612,6 +605,7 @@ CondBouton=8;
|
|||||||
CondMemoireEgal=9;
|
CondMemoireEgal=9;
|
||||||
CondMemoireSup=10;
|
CondMemoireSup=10;
|
||||||
CondMemoireInf=11;
|
CondMemoireInf=11;
|
||||||
|
CondDetAct=12;
|
||||||
|
|
||||||
// Type d'opération (action)
|
// Type d'opération (action)
|
||||||
Action0=0;
|
Action0=0;
|
||||||
@@ -744,12 +738,12 @@ Taiguillage = record
|
|||||||
end;
|
end;
|
||||||
TtabloDet = array[0..MaxParcoursTablo] of integer;
|
TtabloDet = array[0..MaxParcoursTablo] of integer;
|
||||||
TSignal = record
|
TSignal = record
|
||||||
adresse, aspect : integer; // adresse du signal, aspect (2 feux..9 feux 12=direction 2 feux .. 16=direction 6 feux) (11=signal belge 1)
|
adresse,aspect,AncienAdresse : integer; // adresse du signal, aspect (2 feux..9 feux 12=direction 2 feux .. 16=direction 6 feux) (11=signal belge 1)
|
||||||
Img : TImage; // Pointeur sur structure TImage du signal
|
Img : TImage; // Pointeur sur structure TImage du signal
|
||||||
Lbl : TLabel; // pointeur sur structure Tlabel du signal
|
Lbl : TLabel; // pointeur sur structure Tlabel du signal
|
||||||
checkFB : TCheckBox; // pointeur sur structure Checkbox "demande feu blanc"
|
checkFB : TCheckBox; // pointeur sur structure Checkbox "demande feu blanc"
|
||||||
checkFR : boolean; // demande feu rouge cli
|
checkFR : boolean; // demande feu rouge cli
|
||||||
checkFV : boolean; // demande feu vert cli
|
checkFV : boolean; // demande feu vert cli ou si signal 2 feux, false=signal violet/blanc ou true=vert/rouge
|
||||||
FeuVertCli : boolean ; // avec checkbox ou pas
|
FeuVertCli : boolean ; // avec checkbox ou pas
|
||||||
FeuRougeCli : boolean ; // avec checkbox ou pas
|
FeuRougeCli : boolean ; // avec checkbox ou pas
|
||||||
contrevoie : boolean; // signal de contrevoie (SNCB)
|
contrevoie : boolean; // signal de contrevoie (SNCB)
|
||||||
@@ -1165,10 +1159,11 @@ var
|
|||||||
train : string;
|
train : string;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
// exécution des opérations des actions differées par le timer
|
||||||
seq_actions : array[1..30] of
|
seq_actions : array[1..30] of
|
||||||
record
|
record
|
||||||
indiceAction,IndiceOp, // indice à partir duquel reprendre l'exécution
|
indiceAction,IndiceOp, // indice à partir duquel reprendre l'exécution
|
||||||
op,tick : integer; // opération
|
tick : integer; // opération
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Declencheurs : array[0..10] of
|
Declencheurs : array[0..10] of
|
||||||
@@ -1182,14 +1177,14 @@ var
|
|||||||
NomFonction : array[0..100] of string; // nom de la fonction
|
NomFonction : array[0..100] of string; // nom de la fonction
|
||||||
ArbreFonc : array[0..100,0..100] of integer; // fonction sous forme d'arbre
|
ArbreFonc : array[0..100,0..100] of integer; // fonction sous forme d'arbre
|
||||||
|
|
||||||
blocUSB : array[1..10] of record
|
blocUSB : array[1..10] of record // 10 éléments pour 10 blocs USB
|
||||||
AffTrain : string;
|
AffTrain : string;
|
||||||
rotatifM,rotatifP,clic,increment : integer;
|
rotatifM,rotatifP,clic,increment : integer;
|
||||||
Bp1,bp2,bp3,bp4,bp5,bp6,bp7,bp8,bp9,bp10 : integer;
|
Bp1,bp2,bp3,bp4,bp5,bp6,bp7,bp8,bp9,bp10 : integer; // 10 boutons par bloc
|
||||||
Fbp1,fbp2,fbp3,Fbp4,fbp5,fbp6,Fbp7,fbp8,fbp9,Fbp10 : integer; // fonctions F des BP
|
Fbp1,fbp2,fbp3,Fbp4,fbp5,fbp6,Fbp7,fbp8,fbp9,Fbp10 : integer; // fonctions F des BP
|
||||||
Fnp1,fnp2,fnp3,Fnp4,fnp5,fnp6,Fnp7,fnp8,fnp9,Fnp10 : integer; // état F des BP
|
Fnp1,fnp2,fnp3,Fnp4,fnp5,fnp6,Fnp7,fnp8,fnp9,Fnp10 : integer; // état F des BP
|
||||||
Tbp1,Tbp2,Tbp3,Tbp4,Tbp5,Tbp6,Tbp7,Tbp8,Tbp9,Tbp10 : integer; // temps de retombée de la fonction F
|
Tbp1,Tbp2,Tbp3,Tbp4,Tbp5,Tbp6,Tbp7,Tbp8,Tbp9,Tbp10 : integer; // temps de retombée de la fonction F
|
||||||
Tcp : array[1..10] of integer; // valeur courante de la tempo de retombée
|
Tcp : array[1..10] of integer; // valeur courante de la tempo de retombée de la fonction F
|
||||||
end;
|
end;
|
||||||
|
|
||||||
Memoire : array[0..MaxMemoires] of integer;
|
Memoire : array[0..MaxMemoires] of integer;
|
||||||
@@ -1366,12 +1361,14 @@ function Signal_precedent(adresse : integer) : integer;
|
|||||||
function signal_rouge(adresse : word) : boolean;
|
function signal_rouge(adresse : word) : boolean;
|
||||||
function chaine_signal(adresse : word) : string;
|
function chaine_signal(adresse : word) : string;
|
||||||
function signal_suivant_det(det1,det2 : integer) : integer;
|
function signal_suivant_det(det1,det2 : integer) : integer;
|
||||||
|
procedure envoi_signauxCplx;
|
||||||
procedure composant(c : tComponent;fond,texte : tColor);
|
procedure composant(c : tComponent;fond,texte : tColor);
|
||||||
procedure maj_couleurs;
|
procedure maj_couleurs;
|
||||||
|
{$IF CompilerVersion < 28.0}
|
||||||
procedure AffTexteIncliBordeTexture(c : TCanvas; x,y : integer; Fonte : tFont;
|
procedure AffTexteIncliBordeTexture(c : TCanvas; x,y : integer; Fonte : tFont;
|
||||||
clBord : TColor; EpBord : integer; PenMode : TPenMode;
|
clBord : TColor; EpBord : integer; PenMode : TPenMode;
|
||||||
texte : string; AngleDD : longint);
|
texte : string; AngleDD : longint);
|
||||||
|
{$IFEND}
|
||||||
{$IF CompilerVersion >= 28.0}
|
{$IF CompilerVersion >= 28.0}
|
||||||
procedure change_style;
|
procedure change_style;
|
||||||
{$IFEND}
|
{$IFEND}
|
||||||
@@ -1398,7 +1395,7 @@ procedure trouve_element(el: integer; TypeEl : TEquipement); overload;
|
|||||||
procedure trouve_element_V1(el: integer; TypeEl : TEquipement; Offset,branche_pref,OffsetDsBranche : integer;erreur : boolean;it : integer);
|
procedure trouve_element_V1(el: integer; TypeEl : TEquipement; Offset,branche_pref,OffsetDsBranche : integer;erreur : boolean;it : integer);
|
||||||
procedure procetape(s : string);
|
procedure procetape(s : string);
|
||||||
procedure Affiche_routes_brut;
|
procedure Affiche_routes_brut;
|
||||||
procedure TJD4(adr1,pos1,adr2,pos2 : integer;var c1,c2 : char);
|
procedure TJD4(pos1,pos2 : integer;var c1,c2 : char);
|
||||||
procedure affecte_trains_config;
|
procedure affecte_trains_config;
|
||||||
procedure Fonction_Loco_Operation_XNet(loco,fonction,etat : integer);
|
procedure Fonction_Loco_Operation_XNet(loco,fonction,etat : integer);
|
||||||
procedure calcul_equations_coeff(indexTrain : integer);
|
procedure calcul_equations_coeff(indexTrain : integer);
|
||||||
@@ -1736,20 +1733,7 @@ begin
|
|||||||
with formprinc do
|
with formprinc do
|
||||||
begin
|
begin
|
||||||
if (idTrainClic<1) or (idTrainClic>nTrains) then exit;
|
if (idTrainClic<1) or (idTrainClic>nTrains) then exit;
|
||||||
// Affiche('origine='+intToSTR(origine),clYellow);
|
|
||||||
{if origine=1 then
|
|
||||||
begin
|
|
||||||
// s:=editVitesse.Text;
|
|
||||||
// val(s,vit,erreur);
|
|
||||||
//Affiche('vitconsigne1='+intToSTR(vit),clOrange);
|
|
||||||
if (erreur<>0) or (vit<-128) or (vit>127) then exit;
|
|
||||||
vitesse_loco(trains[IdTrainClic].nom_train,
|
|
||||||
idTrainClic,
|
|
||||||
trains[idTrainClic].adresse,
|
|
||||||
trains[idTrainClic].vitesseCons, // vit
|
|
||||||
10,vientde);
|
|
||||||
end; }
|
|
||||||
//if origine=2 then
|
|
||||||
begin
|
begin
|
||||||
vit:=trains[idTrainUSB].VitesseBlocUSB;
|
vit:=trains[idTrainUSB].VitesseBlocUSB;
|
||||||
VientDe:=consigneBLocUSB; // ne génère pas event_vitesse
|
VientDe:=consigneBLocUSB; // ne génère pas event_vitesse
|
||||||
@@ -2140,7 +2124,7 @@ begin
|
|||||||
if LanceHorl then Demarre_horloge;
|
if LanceHorl then Demarre_horloge;
|
||||||
// création des compteurs
|
// création des compteurs
|
||||||
if (compteur<0) or (compteur>3) then compteur:=1;
|
if (compteur<0) or (compteur>3) then compteur:=1;
|
||||||
for i:=1 to 1 do
|
for i:=1 to 1 do // il n'y a qu'une seule fenetre compteurs
|
||||||
begin
|
begin
|
||||||
formCompteur[i]:=TformCompteur.Create(nil);
|
formCompteur[i]:=TformCompteur.Create(nil);
|
||||||
with formCompteur[i] do
|
with formCompteur[i] do
|
||||||
@@ -2191,11 +2175,10 @@ begin
|
|||||||
|
|
||||||
interface_ou_cdm; // démarrer l'interface , génère les evts détecteurs ; ou cdm
|
interface_ou_cdm; // démarrer l'interface , génère les evts détecteurs ; ou cdm
|
||||||
|
|
||||||
// créer les compteurs après avoir téléchargé la liste des trains de CDM
|
// créer les compteurs GroupBox après avoir téléchargé la liste des trains de CDM
|
||||||
s:='Création des compteurs GB';
|
s:='Création des compteurs GB';
|
||||||
procetape(s);
|
procetape(s);
|
||||||
|
|
||||||
|
|
||||||
for i:=1 to ntrains do
|
for i:=1 to ntrains do
|
||||||
begin
|
begin
|
||||||
cree_GB_compteur(i);
|
cree_GB_compteur(i);
|
||||||
@@ -2205,9 +2188,6 @@ begin
|
|||||||
calcul_equations_coeff(i);
|
calcul_equations_coeff(i);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
s:='Fin du préliminaire';
|
|
||||||
procetape(s);
|
|
||||||
|
|
||||||
formprinc.SetFocus;
|
formprinc.SetFocus;
|
||||||
menu_selec;
|
menu_selec;
|
||||||
|
|
||||||
@@ -2229,8 +2209,16 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
Maj_Signaux(false);
|
Maj_Signaux(false);
|
||||||
|
|
||||||
|
// envoyer les signaux à l'interface
|
||||||
|
for i:=1 to NbreSignaux do
|
||||||
|
Signaux[i].AncienEtat:=9999; // pour forcer le pilotage des signaux sur le changement d'état
|
||||||
|
envoi_signauxCplx;
|
||||||
|
|
||||||
change_clic_train(1); // sélectionne le train 1
|
change_clic_train(1); // sélectionne le train 1
|
||||||
|
|
||||||
|
s:='Fin du préliminaire';
|
||||||
|
procetape(s);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// renvoie une chaine ASCI Hexa affichable à partir d'une chaîne
|
// renvoie une chaine ASCI Hexa affichable à partir d'une chaîne
|
||||||
@@ -2268,7 +2256,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
// procédures liaisons série com usb ------------------------------------------------
|
// procédures liaisons série com usb ------------------------------------------------
|
||||||
// envoie une chaine s à un périphérique COM/USB en fonction du composant comp
|
// envoie une chaine s à un périphérique COM/USB en fonction du composant AsyncPro tApdComport
|
||||||
// contrôle si le pointeur comp est valide par traitement de l'exception
|
// contrôle si le pointeur comp est valide par traitement de l'exception
|
||||||
{$IF CompilerVersion >= 28.0}
|
{$IF CompilerVersion >= 28.0}
|
||||||
procedure envoi_usb_comp(comp : tApdComPort;s : variant);
|
procedure envoi_usb_comp(comp : tApdComPort;s : variant);
|
||||||
@@ -3169,6 +3157,7 @@ begin
|
|||||||
EndPaint(canvashd,ps);
|
EndPaint(canvashd,ps);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{$IF CompilerVersion < 28.0}
|
||||||
// Ecrire sur un canvas un texte avec un angle, avec ou sans bordure, monochrome ou à face texturée
|
// Ecrire sur un canvas un texte avec un angle, avec ou sans bordure, monochrome ou à face texturée
|
||||||
// procédure pour Delphi 7
|
// procédure pour Delphi 7
|
||||||
// params : C = Canvas
|
// params : C = Canvas
|
||||||
@@ -3243,6 +3232,7 @@ begin
|
|||||||
SelectObject(dc,AncBrush);
|
SelectObject(dc,AncBrush);
|
||||||
DeleteObject(NouvBrush);
|
DeleteObject(NouvBrush);
|
||||||
end;
|
end;
|
||||||
|
{$IFEND}
|
||||||
|
|
||||||
// inverse une image (miroir horizontal) et la met dans dest
|
// inverse une image (miroir horizontal) et la met dans dest
|
||||||
// Utilisé pour les signaux belges, et les trains
|
// Utilisé pour les signaux belges, et les trains
|
||||||
@@ -4050,9 +4040,11 @@ procedure dessine_signal2(Acanvas : Tcanvas;x,y : integer;frX,frY : single;EtatS
|
|||||||
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;
|
||||||
|
styleF : boolean;
|
||||||
begin
|
begin
|
||||||
code_to_aspect(Etatsignal,code,combine);
|
code_to_aspect(Etatsignal,code,combine);
|
||||||
rayon:=round(DiamFeu*frX);
|
rayon:=round(DiamFeu*frX);
|
||||||
|
styleF:=signaux[index].checkFV; // si true : c'est un feu vert / rouge
|
||||||
|
|
||||||
// récupérer les dimensions de l'image d'origine du signal
|
// récupérer les dimensions de l'image d'origine du signal
|
||||||
with Formprinc.Image2feux.Picture.Bitmap do
|
with Formprinc.Image2feux.Picture.Bitmap do
|
||||||
@@ -4096,8 +4088,10 @@ begin
|
|||||||
cercle(ACanvas,xViolet,yViolet,rayon,clBlack,GrisF);
|
cercle(ACanvas,xViolet,yViolet,rayon,clBlack,GrisF);
|
||||||
|
|
||||||
// allumages
|
// allumages
|
||||||
if ((code=blanc_cli) and (clignotant)) or (code=blanc) then cercle(ACanvas,xBlanc,yBlanc,rayon,clBlack,clWhite);
|
if not(styleF) and (((code=blanc_cli) and (clignotant)) or (code=blanc)) then cercle(ACanvas,xBlanc,yBlanc,rayon,clBlack,clWhite);
|
||||||
if code=violet then cercle(ACanvas,xViolet,yViolet,rayon,clBlack,clViolet);
|
if styleF and (((code=blanc_cli) and (clignotant)) or (code=blanc)) then cercle(ACanvas,xBlanc,yBlanc,rayon,clBlack,clGreen);
|
||||||
|
if (code=violet) and not(styleF) then cercle(ACanvas,xViolet,yViolet,rayon,clBlack,clViolet);
|
||||||
|
if (code=violet) and styleF then cercle(ACanvas,xViolet,yViolet,rayon,clBlack,clRed);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// dessine les feux sur une cible à 3 feux
|
// dessine les feux sur une cible à 3 feux
|
||||||
@@ -4756,7 +4750,12 @@ begin
|
|||||||
3 : angle:=900;
|
3 : angle:=900;
|
||||||
4 : angle:=1800;
|
4 : angle:=1800;
|
||||||
end;
|
end;
|
||||||
|
{$IF CompilerVersion < 28.0}
|
||||||
AffTexteIncliBordeTexture(Acanvas,XTexte,YTexte,Acanvas.Font,clYellow,0,pmcopy,intToSTR(vitesse),angle);
|
AffTexteIncliBordeTexture(Acanvas,XTexte,YTexte,Acanvas.Font,clYellow,0,pmcopy,intToSTR(vitesse),angle);
|
||||||
|
{$ELSE}
|
||||||
|
font.orientation:=angle;
|
||||||
|
textout(Xtexte,Ytexte,intToSTr(vitesse));
|
||||||
|
{$IFEND}
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end
|
end
|
||||||
@@ -5317,7 +5316,6 @@ begin
|
|||||||
begin
|
begin
|
||||||
Combotrains.ItemIndex:=IdTrainclic-1;
|
Combotrains.ItemIndex:=IdTrainclic-1;
|
||||||
EditAdrTrain.Text:=intToSTR(trains[idTrainClic].adresse);
|
EditAdrTrain.Text:=intToSTR(trains[idTrainClic].adresse);
|
||||||
//Editvitesse.Text:=intToSTR(trains[idTrainClic].vitesseCons);
|
|
||||||
end;
|
end;
|
||||||
// affiche le compteur du train cliqué
|
// affiche le compteur du train cliqué
|
||||||
affiche_train_compteur(1);
|
affiche_train_compteur(1);
|
||||||
@@ -5367,7 +5365,7 @@ begin
|
|||||||
formCompteur[1].Show;
|
formCompteur[1].Show;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// créée une image dynamiquement dans la partie droite pour un nouveau compteur par train
|
// créée les composants trains dynamiquement dans la partie droite pour un nouveau compteur par train
|
||||||
// rang commence à 1
|
// rang commence à 1
|
||||||
procedure cree_GB_compteur(rang : integer);
|
procedure cree_GB_compteur(rang : integer);
|
||||||
const HautTb=10; // hauteur trackbar
|
const HautTb=10; // hauteur trackbar
|
||||||
@@ -5444,7 +5442,7 @@ begin
|
|||||||
|
|
||||||
// le compteurT[].FCBitmap sera créé dans init_compteur
|
// le compteurT[].FCBitmap sera créé dans init_compteur
|
||||||
|
|
||||||
// bouton
|
// bouton RAZ vitesse 0
|
||||||
CompteurT[rang].bouton:=Tbutton.create(CompteurT[rang].gb);
|
CompteurT[rang].bouton:=Tbutton.create(CompteurT[rang].gb);
|
||||||
with compteurT[rang].bouton do
|
with compteurT[rang].bouton do
|
||||||
begin
|
begin
|
||||||
@@ -5473,12 +5471,14 @@ begin
|
|||||||
ctl3D:=false;
|
ctl3D:=false;
|
||||||
onChange:=formprinc.ImTBOnChange;
|
onChange:=formprinc.ImTBOnChange;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
// compteur du train type groupbox (gb)
|
||||||
init_compteur(rang,CompteurT[rang].gb);
|
init_compteur(rang,CompteurT[rang].gb);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
// cliqué sur image, labelnom ou labelvitesse
|
// cliqué sur image, labelnom ou labelvitesse
|
||||||
// cliqué train
|
// cliqué sur train
|
||||||
procedure tFormprinc.ImageTrainonclick(Sender : tObject);
|
procedure tFormprinc.ImageTrainonclick(Sender : tObject);
|
||||||
var P_component : tComponent;
|
var P_component : tComponent;
|
||||||
i : integer;
|
i : integer;
|
||||||
@@ -5889,7 +5889,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
// ajoute une tache dans le tableau taches[]
|
// ajoute une tache dans le tableau taches[]
|
||||||
// pour pilotage dans le timer. On pilotera une tache par tick timer (1/10ème de s)
|
// qui seront ensuite traitées par le timer. On pilotera une tache par tick timer (1/10ème de s)
|
||||||
// ttache=ttacheAcc (pilote acc), ttacheVit (vitesse train) , ttacheFF (fonctionF) , ttacheTempo (temporisation)
|
// ttache=ttacheAcc (pilote acc), ttacheVit (vitesse train) , ttacheFF (fonctionF) , ttacheTempo (temporisation)
|
||||||
// temporisation pour le timer avant action
|
// temporisation pour le timer avant action
|
||||||
// destinataire (1=CDM 2=XpressNet 3=Dccpp)
|
// destinataire (1=CDM 2=XpressNet 3=Dccpp)
|
||||||
@@ -5941,12 +5941,15 @@ end;
|
|||||||
|
|
||||||
// teste la (les) condition(s) d'une action
|
// teste la (les) condition(s) d'une action
|
||||||
// action : index de l'action
|
// action : index de l'action
|
||||||
|
//zizi
|
||||||
function teste_condition(action : integer) : boolean;
|
function teste_condition(action : integer) : boolean;
|
||||||
var condValide : boolean;
|
var condValide,condfinale : boolean;
|
||||||
vit,vit1,vit2,it,pa,m1,m2,hc,n,ncond,cond,etat : integer;
|
vit,vit1,vit2,it,pa,m1,m2,hc,n,ncond,cond,etat : integer;
|
||||||
|
bol : boolean;
|
||||||
tr : string;
|
tr : string;
|
||||||
begin
|
begin
|
||||||
// 1 condition - pas de chaînage avec 1 seule condition
|
// chaînage des conditions en ET
|
||||||
|
CondFinale:=true;
|
||||||
condValide:=false;
|
condValide:=false;
|
||||||
n:=Tablo_Action[action].NbCond;
|
n:=Tablo_Action[action].NbCond;
|
||||||
for ncond:=1 to n do
|
for ncond:=1 to n do
|
||||||
@@ -5963,7 +5966,7 @@ begin
|
|||||||
it:=index_train_nom(tr);
|
it:=index_train_nom(tr);
|
||||||
if it>0 then
|
if it>0 then
|
||||||
begin
|
begin
|
||||||
vit:=Trains[it].vitesseCons;
|
vit:=Trains[it].vitesseCons;
|
||||||
condvalide:=(vit>=vit1) and (vit<=vit2);
|
condvalide:=(vit>=vit1) and (vit<=vit2);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
@@ -6031,9 +6034,20 @@ begin
|
|||||||
condValide:=false;
|
condValide:=false;
|
||||||
if (adr>1) or (adr<=MaxMemoires) then condValide:=memoire[adr]>etat;
|
if (adr>1) or (adr<=MaxMemoires) then condValide:=memoire[adr]>etat;
|
||||||
end;
|
end;
|
||||||
|
condDetAct :
|
||||||
|
begin
|
||||||
|
adr:=Tablo_Action[action].tabloCond[ncond].adresse;
|
||||||
|
etat:=Tablo_Action[action].tabloCond[ncond].etat;
|
||||||
|
bol:=etat=1;
|
||||||
|
tr:=Tablo_Action[action].tabloCond[ncond].train;
|
||||||
|
condValide:=false;
|
||||||
|
if (adr>1) and (adr<=NbMaxDet) then condValide:=(detecteur[Adr].Etat=bol) and (tr=detecteur[adr].Train);
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
|
condFinale:=condFinale and condValide;
|
||||||
|
|
||||||
end;
|
end;
|
||||||
result:=condValide;
|
result:=condFinale;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@@ -6641,8 +6655,6 @@ begin
|
|||||||
if (v=adr_loco) then
|
if (v=adr_loco) then
|
||||||
begin
|
begin
|
||||||
pasChgTBV:=true; // évite de repositionner la trackbar
|
pasChgTBV:=true; // évite de repositionner la trackbar
|
||||||
//Formprinc.TrackBarVit.Position:=vitesse;
|
|
||||||
//formprinc.EditVitesse.text:=intToSTR(vitesse);
|
|
||||||
pasChgTBV:=false;
|
pasChgTBV:=false;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -8809,7 +8821,7 @@ begin
|
|||||||
begin
|
begin
|
||||||
if teste_condition(i) then
|
if teste_condition(i) then
|
||||||
begin
|
begin
|
||||||
Affiche('ZZ test condition',clRed);
|
//Affiche('ZZ test condition',clRed);
|
||||||
action(i); // exécute toutes les opérations de l'actionneur i
|
action(i); // exécute toutes les opérations de l'actionneur i
|
||||||
end
|
end
|
||||||
end;
|
end;
|
||||||
@@ -9019,8 +9031,11 @@ begin
|
|||||||
begin
|
begin
|
||||||
adr:=Signaux[i].adresse;
|
adr:=Signaux[i].adresse;
|
||||||
if not(fermeSC) and (adr<>0) then envoi_signal(adr);
|
if not(fermeSC) and (adr<>0) then envoi_signal(adr);
|
||||||
if not modetache then Sleep(25);
|
if not modetache then
|
||||||
Application.processMessages;
|
begin
|
||||||
|
Sleep(25);
|
||||||
|
Application.processMessages;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -9492,7 +9507,7 @@ end;
|
|||||||
|
|
||||||
|
|
||||||
// renvoie les adresses des 2 aiguillages adjacents au détecteur "adresse" (avant, après)
|
// renvoie les adresses des 2 aiguillages adjacents au détecteur "adresse" (avant, après)
|
||||||
// résultat dans var1 et var2
|
// résultat dans adr1 et adr2
|
||||||
procedure Aig_Adj(adresse : integer;var adr1: integer;var adr2 : integer);
|
procedure Aig_Adj(adresse : integer;var adr1: integer;var adr2 : integer);
|
||||||
var Branche,IndexBranche,i : integer;
|
var Branche,IndexBranche,i : integer;
|
||||||
sortie : boolean;
|
sortie : boolean;
|
||||||
@@ -16160,7 +16175,7 @@ begin
|
|||||||
if adrSuiv>NbMaxDet then
|
if adrSuiv>NbMaxDet then
|
||||||
begin
|
begin
|
||||||
if AdrSuiv=9996 then Affiche_evt('La position de l''aiguillage '+intToSTR(AigMal)+' est inconnue',clred);
|
if AdrSuiv=9996 then Affiche_evt('La position de l''aiguillage '+intToSTR(AigMal)+' est inconnue',clred);
|
||||||
Affiche_evt('Info 1-0 '+intToSTR(AdrSuiv)+' : pas de suivant detecteur_suivant_el '+intToSTR(det1)+' '+intToSTR(det3),clWhite);
|
Affiche_evt('Info 1-0 '+intToSTR(AdrSuiv)+' : pas de suiv det_suivant_el '+intToSTR(det1)+' '+intToSTR(det3),clWhite);
|
||||||
MemZone[det1,det3].etat:=FALSE; // dévalide l'ancienne zone
|
MemZone[det1,det3].etat:=FALSE; // dévalide l'ancienne zone
|
||||||
MemZone[det1,det3].train:='';
|
MemZone[det1,det3].train:='';
|
||||||
MemZone[det1,det3].Adrtrain:=0;
|
MemZone[det1,det3].Adrtrain:=0;
|
||||||
@@ -17442,7 +17457,7 @@ var decl,op,af,access,sortie,t,v,etat,adr : integer;
|
|||||||
Ts : TAccessoire;
|
Ts : TAccessoire;
|
||||||
tr : single;
|
tr : single;
|
||||||
begin
|
begin
|
||||||
// tablo action n'est pas dynamique, mais Tablo_action[].TabloOp oui
|
// tablo action n'est pas un tableau dynamique, mais Tablo_action[].TabloOp oui
|
||||||
if length(Tablo_Action[i].tabloOP)-1<ida then exit;
|
if length(Tablo_Action[i].tabloOP)-1<ida then exit;
|
||||||
st:='Action '+Tablo_Action[i].NomAction+' op='+intToSTR(ida)+' : ';
|
st:='Action '+Tablo_Action[i].NomAction+' op='+intToSTR(ida)+' : ';
|
||||||
op:=Tablo_Action[i].tabloOp[ida].numoperation;
|
op:=Tablo_Action[i].tabloOp[ida].numoperation;
|
||||||
@@ -17557,7 +17572,7 @@ begin
|
|||||||
trainDest:=Tablo_Action[i].tabloOp[ida].train ;
|
trainDest:=Tablo_Action[i].tabloOp[ida].train ;
|
||||||
etat:=Tablo_Action[i].tabloop[ida].etat;
|
etat:=Tablo_Action[i].tabloop[ida].etat;
|
||||||
t:=Tablo_Action[i].tabloop[ida].TempoF;
|
t:=Tablo_Action[i].tabloop[ida].TempoF;
|
||||||
tr:=Tablo_Action[i].tabloop[ida].TempoF; // pour affichage uniquement
|
tr:=Tablo_Action[i].tabloop[ida].TempoF/10; // pour affichage uniquement
|
||||||
Affiche(st+' TrainDest='+trainDest+' F'+IntToSTR(Tablo_Action[i].tabloOp[ida].fonctionF)+':'+intToSTR(etat)+' t='+Format('%.1f', [tr])+'s',clyellow);
|
Affiche(st+' TrainDest='+trainDest+' F'+IntToSTR(Tablo_Action[i].tabloOp[ida].fonctionF)+':'+intToSTR(etat)+' t='+Format('%.1f', [tr])+'s',clyellow);
|
||||||
|
|
||||||
envoie_fonction(Tablo_Action[i].TabloOp[ida].fonctionF,etat,trainDest);
|
envoie_fonction(Tablo_Action[i].TabloOp[ida].fonctionF,etat,trainDest);
|
||||||
@@ -17634,6 +17649,7 @@ procedure action(action : integer);
|
|||||||
var i,nb : integer;
|
var i,nb : integer;
|
||||||
sort : boolean;
|
sort : boolean;
|
||||||
begin
|
begin
|
||||||
|
if index_seqAct>0 then if seq_actions[index_seqAct].indiceAction=action then exit; // si l'action est déja en cours d'exécution dans le timer, ne pas la relancer
|
||||||
nb:=Tablo_Action[action].NbOperations;
|
nb:=Tablo_Action[action].NbOperations;
|
||||||
i:=1;
|
i:=1;
|
||||||
sort:=false;
|
sort:=false;
|
||||||
@@ -17750,6 +17766,7 @@ begin
|
|||||||
if not(fd) and not(fm) then exit;
|
if not(fd) and not(fm) then exit;
|
||||||
|
|
||||||
detecteur[adr].Etat:=etat=1;
|
detecteur[adr].Etat:=etat=1;
|
||||||
|
|
||||||
detecteur[adr].Train:=TrainDecl;
|
detecteur[adr].Train:=TrainDecl;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
@@ -18108,7 +18125,6 @@ var dr,i,AdrSuiv,AdrSignal,AdrDetSignal,index,Etat01,AdrPrec,d1,d2,AdrTrain : in
|
|||||||
TypeSuiv : tequipement;
|
TypeSuiv : tequipement;
|
||||||
s : string;
|
s : string;
|
||||||
begin
|
begin
|
||||||
//Affiche('Event Det '+inTToSTR(adresse)+' '+IntToSTR(etat01)+' '+train,ClCyan);
|
|
||||||
if adresse>NbMaxDet then
|
if adresse>NbMaxDet then
|
||||||
begin
|
begin
|
||||||
Affiche('Erreur 82 : reçu adresse de détecteur trop grande : '+intToSTR(adresse),clred);
|
Affiche('Erreur 82 : reçu adresse de détecteur trop grande : '+intToSTR(adresse),clred);
|
||||||
@@ -18144,6 +18160,8 @@ begin
|
|||||||
//if (train='') and (s<>'') then train:=s;
|
//if (train='') and (s<>'') then train:=s;
|
||||||
if Etat then Etat01:=1 else Etat01:=0;
|
if Etat then Etat01:=1 else Etat01:=0;
|
||||||
|
|
||||||
|
//Affiche('Event Det '+inTToSTR(adresse)+' '+IntToSTR(etat01)+' '+train,ClCyan);
|
||||||
|
|
||||||
if traceliste or (debugRoulage and roulage) then Affiche('Event Det '+inTToSTR(adresse)+' '+IntToSTR(etat01),ClCyan);
|
if traceliste or (debugRoulage and roulage) then Affiche('Event Det '+inTToSTR(adresse)+' '+IntToSTR(etat01),ClCyan);
|
||||||
// vérifier si l'état du détecteur est déja stocké, car on peut reçevoir plusieurs évènements pour le même détecteur dans le même état
|
// vérifier si l'état du détecteur est déja stocké, car on peut reçevoir plusieurs évènements pour le même détecteur dans le même état
|
||||||
// on reçoit un doublon dans deux index consécutifs.
|
// on reçoit un doublon dans deux index consécutifs.
|
||||||
@@ -18205,6 +18223,7 @@ begin
|
|||||||
if AdrTrain<>0 then
|
if AdrTrain<>0 then
|
||||||
begin
|
begin
|
||||||
Maj_detecteurs_canton(i,AdrTrain,Adresse);
|
Maj_detecteurs_canton(i,AdrTrain,Adresse);
|
||||||
|
train:=detecteur[adresse].train;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
inc(i);
|
inc(i);
|
||||||
@@ -18259,12 +18278,19 @@ begin
|
|||||||
if etat then i:=1 else i:=0;
|
if etat then i:=1 else i:=0;
|
||||||
if not(confignulle) then calcul_zones(adresse,true); // *** calcul zones
|
if not(confignulle) then calcul_zones(adresse,true); // *** calcul zones
|
||||||
|
|
||||||
// gérer l'évènement actionneur pour action
|
// gérer l'évènement actionneur pour action sur front montant hors mode CDM
|
||||||
event_act(Adresse,0,i,'');
|
if not(CDM_connecte) then event_act(Adresse,0,i,train);
|
||||||
|
end;
|
||||||
|
|
||||||
|
// gérer l'évènement actionneur pour action sur état à 1 en mode CDM
|
||||||
|
// car le nom du train est passé au 2eme message du détecteur à 1 comIP , et donc
|
||||||
|
// le détecteur n'est plus en front montan
|
||||||
|
if etat and CDM_connecte then
|
||||||
|
begin
|
||||||
|
if train<>'_NONE' then event_act(Adresse,0,i,train);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// détection fronts descendants
|
// détection fronts descendants
|
||||||
|
|
||||||
if ancien_detecteur[Adresse] and not(detecteur[Adresse].etat) and (N_Event_det<Max_event_det) then
|
if ancien_detecteur[Adresse] and not(detecteur[Adresse].etat) and (N_Event_det<Max_event_det) then
|
||||||
begin
|
begin
|
||||||
// si le FD du détecteur a déjà été stocké à l'index précédent ne pas en tenir compte
|
// si le FD du détecteur a déjà été stocké à l'index précédent ne pas en tenir compte
|
||||||
@@ -21055,8 +21081,14 @@ begin
|
|||||||
index:=CondMemoireSup;
|
index:=CondMemoireSup;
|
||||||
famille:=0;
|
famille:=0;
|
||||||
end;
|
end;
|
||||||
|
with Conditions[CondDetAct] do
|
||||||
|
begin
|
||||||
|
nom:='Détecteur/actionneur';
|
||||||
|
index:=CondDetAct;
|
||||||
|
famille:=0;
|
||||||
|
end;
|
||||||
|
|
||||||
NbreConditions:=CondMemoireInf;
|
NbreConditions:=CondDetAct;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure init_declencheurs;
|
procedure init_declencheurs;
|
||||||
@@ -21221,42 +21253,6 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{$IF CompilerVersion >= 28.0}
|
|
||||||
procedure TFormPrinc.DataReceived(const Data: TidBytes);
|
|
||||||
var i,l,j,lo : integer;
|
|
||||||
begin
|
|
||||||
l:=length(data);
|
|
||||||
lo:=long_recue; // longueur ancien recu, non encore traité
|
|
||||||
j:=1;
|
|
||||||
for i:=lo+1 to lo+l do
|
|
||||||
begin
|
|
||||||
chaine_recue[i]:=ord(Data[j]); // mettre recu à la fin
|
|
||||||
inc(j);
|
|
||||||
end;
|
|
||||||
long_recue:=l+lo;
|
|
||||||
|
|
||||||
//if traceTrames then afficheDebug('Tick='+intToSTR(tick)+'/Rec '+chaine_hex(data),clWhite);
|
|
||||||
interprete_reponse;
|
|
||||||
end;
|
|
||||||
{$ELSE}
|
|
||||||
procedure TFormPrinc.DataReceived(const Data: string);
|
|
||||||
var i,l,j,lo : integer;
|
|
||||||
begin
|
|
||||||
l:=length(data);
|
|
||||||
lo:=long_recue; // longueur ancien recu, non encore traité
|
|
||||||
j:=1;
|
|
||||||
for i:=lo+1 to lo+l do
|
|
||||||
begin
|
|
||||||
chaine_recue[i]:=ord(Data[j]); // mettre recu à la fin
|
|
||||||
inc(j);
|
|
||||||
end;
|
|
||||||
long_recue:=l+lo;
|
|
||||||
|
|
||||||
if traceTrames then afficheDebug('Tick='+intToSTR(tick)+'/Rec '+chaine_hex(data),clWhite);
|
|
||||||
interprete_reponse;
|
|
||||||
end;
|
|
||||||
{$IFEND}
|
|
||||||
|
|
||||||
procedure tFormPrinc.ClientInfoError(Sender: TObject; Socket: TCustomWinSocket;ErrorEvent: TErrorEvent; var ErrorCode: Integer);
|
procedure tFormPrinc.ClientInfoError(Sender: TObject; Socket: TCustomWinSocket;ErrorEvent: TErrorEvent; var ErrorCode: Integer);
|
||||||
begin
|
begin
|
||||||
//Affiche('IE',clyellow);
|
//Affiche('IE',clyellow);
|
||||||
@@ -21301,13 +21297,14 @@ end;
|
|||||||
|
|
||||||
// démarrage principal du programme signaux_complexes
|
// démarrage principal du programme signaux_complexes
|
||||||
procedure TFormPrinc.FormCreate(Sender: TObject);
|
procedure TFormPrinc.FormCreate(Sender: TObject);
|
||||||
var n,t,i,j,index,OrgMilieu : integer;
|
var n,t,i,j,index,OrgMilieu,erreur : integer;
|
||||||
s,vc : string;
|
s,vc : string;
|
||||||
trouve : boolean;
|
trouve : boolean;
|
||||||
Sr : TSearchRec;
|
Sr : TSearchRec;
|
||||||
tmP,tmA : tMenuItem;
|
tmP,tmA : tMenuItem;
|
||||||
begin
|
begin
|
||||||
menu_deselec;
|
menu_deselec;
|
||||||
|
Etape:=0;
|
||||||
Ancien_Nom_Style:='';
|
Ancien_Nom_Style:='';
|
||||||
Nom_style_aff:='windows';
|
Nom_style_aff:='windows';
|
||||||
af:='Client TCP-IP ou USB CDM Rail - Système XpressNet DCC++ Version '+VersionSC+sousVersion;
|
af:='Client TCP-IP ou USB CDM Rail - Système XpressNet DCC++ Version '+VersionSC+sousVersion;
|
||||||
@@ -21328,6 +21325,20 @@ begin
|
|||||||
FormCompteur[index]:=nil;
|
FormCompteur[index]:=nil;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
debug:=0;
|
||||||
|
if ParamCount<>0 then
|
||||||
|
begin
|
||||||
|
s:=lowercase(ParamSTR(1));
|
||||||
|
i:=pos('debug=',s);
|
||||||
|
if i<>0 then
|
||||||
|
begin
|
||||||
|
delete(s,1,6);
|
||||||
|
val(s,debug,erreur);
|
||||||
|
end;
|
||||||
|
|
||||||
|
procetape('Démarrage');
|
||||||
|
end;
|
||||||
|
|
||||||
BorderStyle:=bsSizeable;
|
BorderStyle:=bsSizeable;
|
||||||
Caption:=af;
|
Caption:=af;
|
||||||
configPrete:=false; // form config prete
|
configPrete:=false; // form config prete
|
||||||
@@ -21378,7 +21389,8 @@ begin
|
|||||||
GroupBoxTrains.visible:=true;
|
GroupBoxTrains.visible:=true;
|
||||||
OffsetXFC:=0;
|
OffsetXFC:=0;
|
||||||
OffsetYFC:=0;
|
OffsetYFC:=0;
|
||||||
procetape(''); //0
|
|
||||||
|
procetape('Init'); //0
|
||||||
NbreTCO:=0;
|
NbreTCO:=0;
|
||||||
N_Trains:=0;
|
N_Trains:=0;
|
||||||
IdActTr:=0;
|
IdActTr:=0;
|
||||||
@@ -21409,7 +21421,7 @@ begin
|
|||||||
espY:=15;
|
espY:=15;
|
||||||
etat_init_interface:=0;
|
etat_init_interface:=0;
|
||||||
Echelle:=0;
|
Echelle:=0;
|
||||||
debug:=0;
|
|
||||||
heure:=0;
|
heure:=0;
|
||||||
minute:=0;
|
minute:=0;
|
||||||
seconde:=0;
|
seconde:=0;
|
||||||
@@ -21423,7 +21435,7 @@ begin
|
|||||||
|
|
||||||
NbreFL:=0;
|
NbreFL:=0;
|
||||||
compteur:=1;
|
compteur:=1;
|
||||||
etape:=1;
|
|
||||||
affevt:=false;
|
affevt:=false;
|
||||||
EvtClicDet:=false;
|
EvtClicDet:=false;
|
||||||
Algo_localisation:=1; // normal
|
Algo_localisation:=1; // normal
|
||||||
@@ -21591,7 +21603,9 @@ begin
|
|||||||
cheminWin:=GetCurrentProcessEnvVar('windir')+'\System32';
|
cheminWin:=GetCurrentProcessEnvVar('windir')+'\System32';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// création des composants réseaux
|
ProcEtape('Création des composants réseaux socket');
|
||||||
|
|
||||||
|
// création des composants réseaux socket
|
||||||
// client CDM
|
// client CDM
|
||||||
ClientSocketCDM:=tClientSocket.Create(nil);
|
ClientSocketCDM:=tClientSocket.Create(nil);
|
||||||
ClientSocketCDM.OnError:=ClientSocketCDMError;
|
ClientSocketCDM.OnError:=ClientSocketCDMError;
|
||||||
@@ -21781,12 +21795,13 @@ begin
|
|||||||
N_trains:=0;
|
N_trains:=0;
|
||||||
NumTrameCDM:=0;
|
NumTrameCDM:=0;
|
||||||
protocole:=1;
|
protocole:=1;
|
||||||
procetape(''); //1
|
procetape('Remplissage'); //1
|
||||||
for i:=1 to NbMaxDet do
|
for i:=1 to NbMaxDet do
|
||||||
begin
|
begin
|
||||||
Ancien_detecteur[i]:=false;
|
Ancien_detecteur[i]:=false;
|
||||||
detecteur[i].etat:=false;
|
detecteur[i].etat:=false;
|
||||||
detecteur[i].train:='';
|
detecteur[i].train:='';
|
||||||
|
detecteur[i].index:=0;
|
||||||
end;
|
end;
|
||||||
for i:=0 to IdClients do
|
for i:=0 to IdClients do
|
||||||
begin
|
begin
|
||||||
@@ -21835,9 +21850,10 @@ begin
|
|||||||
procetape('Lecture de la configuration');
|
procetape('Lecture de la configuration');
|
||||||
lit_config;
|
lit_config;
|
||||||
|
|
||||||
clientInfo.Open; // &&& se connecte au serveur SC et envoie les infos
|
//clientInfo.Open; // &&& se connecte au serveur SC et envoie les infos
|
||||||
|
|
||||||
{$IF CompilerVersion >= 28.0}
|
{$IF CompilerVersion >= 28.0}
|
||||||
|
procetape('Application des styles');
|
||||||
change_style;
|
change_style;
|
||||||
{$IFEND}
|
{$IFEND}
|
||||||
init_horloge;
|
init_horloge;
|
||||||
@@ -22336,10 +22352,11 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
// traite les taches par le timer
|
// traite les taches par le timer
|
||||||
// une tache est piloter un accessoire, une vitesse de train ou une fonction F
|
// une tache consiste à piloter un accessoire, une vitesse de train ou une fonction F
|
||||||
// tableau taches[].typeTache
|
// tableau taches[].typeTache
|
||||||
// [].chaine
|
// [].chaine
|
||||||
// [].tempo
|
// [].tempo
|
||||||
|
// Pilote 1 tache du tableau suivant la valeur de pointeurTaches
|
||||||
procedure traite_taches;
|
procedure traite_taches;
|
||||||
const affe=false;
|
const affe=false;
|
||||||
var i,j,fonc,sortie,etat :integer;
|
var i,j,fonc,sortie,etat :integer;
|
||||||
@@ -22353,7 +22370,6 @@ begin
|
|||||||
//if affe then Affiche('Tick='+intToSTR(tick)+' Pointeur de taches='+intToSTR(pointeurTaches),clYellow);
|
//if affe then Affiche('Tick='+intToSTR(tick)+' Pointeur de taches='+intToSTR(pointeurTaches),clYellow);
|
||||||
// pilote accessoire
|
// pilote accessoire
|
||||||
i:=1;
|
i:=1;
|
||||||
//repeat
|
|
||||||
with taches[i] do
|
with taches[i] do
|
||||||
begin
|
begin
|
||||||
//if affe then Affiche('Traite adr '+intToSTR(Typetache),clLime);
|
//if affe then Affiche('Traite adr '+intToSTR(Typetache),clLime);
|
||||||
@@ -22455,10 +22471,7 @@ begin
|
|||||||
//affiche('Pointeur='+intToSTR(pointeurtaches),clred);
|
//affiche('Pointeur='+intToSTR(pointeurtaches),clred);
|
||||||
end;
|
end;
|
||||||
Affiche('Erreur tache typ='+intTOSTR(taches[1].typeTache)+' t='+intToSTR(taches[1].tempo),clred);
|
Affiche('Erreur tache typ='+intTOSTR(taches[1].typeTache)+' t='+intToSTR(taches[1].tempo),clred);
|
||||||
exit;
|
|
||||||
inc(i);
|
|
||||||
Affiche('INC',clwhite);
|
|
||||||
//until (i>pointeurtaches);
|
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// timer à 100 ms
|
// timer à 100 ms
|
||||||
@@ -23898,6 +23911,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
// évènement détecteur. Si det=1, Le nom du train est souvent _NONE
|
// évènement détecteur. Si det=1, Le nom du train est souvent _NONE
|
||||||
|
// mais est envoyé une 2eme fois avec le nom du train
|
||||||
// si det=0 le nom du train est toujours _NONE
|
// si det=0 le nom du train est toujours _NONE
|
||||||
i:=pos('CMDACC-ST_DT',commandeCDM);
|
i:=pos('CMDACC-ST_DT',commandeCDM);
|
||||||
if i<>0 then
|
if i<>0 then
|
||||||
@@ -25148,8 +25162,7 @@ begin
|
|||||||
Maj_icone_train(Image_Train[IdTrainClic],IdTrainClic,clWhite);
|
Maj_icone_train(Image_Train[IdTrainClic],IdTrainClic,clWhite);
|
||||||
IdTrainClic:=i;
|
IdTrainClic:=i;
|
||||||
EditAdrTrain.Text:=intToSTR(trains[IdTrainClic].adresse);
|
EditAdrTrain.Text:=intToSTR(trains[IdTrainClic].adresse);
|
||||||
//editVitesse.Text:=intToSTR(trains[idTrainClic].vitesseCons);
|
change_clic_train(i);
|
||||||
Maj_icone_train(Image_Train[IdTrainClic],IdTrainClic,$e0e0e0);
|
|
||||||
|
|
||||||
//mise à jour compteur train
|
//mise à jour compteur train
|
||||||
affiche_train_compteur(1);
|
affiche_train_compteur(1);
|
||||||
@@ -25262,7 +25275,6 @@ begin
|
|||||||
if clicTBFen or clicTBGB then exit;
|
if clicTBFen or clicTBGB then exit;
|
||||||
if affevt then Affiche('Changement TrackBarVit',clyellow);
|
if affevt then Affiche('Changement TrackBarVit',clyellow);
|
||||||
clicTBTrain:=true;
|
clicTBTrain:=true;
|
||||||
//EditVitesse.Text:=intToSTR(TrackBarVit.position);
|
|
||||||
s:=editAdrTrain.Text;
|
s:=editAdrTrain.Text;
|
||||||
val(s,adr,erreur);
|
val(s,adr,erreur);
|
||||||
if (erreur<>0) or (adr<0) then
|
if (erreur<>0) or (adr<0) then
|
||||||
@@ -25271,7 +25283,6 @@ begin
|
|||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
//if not(portCommOuvert) and not(parSocketLenz) and not(CDM_Connecte) then exit;
|
//if not(portCommOuvert) and not(parSocketLenz) and not(CDM_Connecte) then exit;
|
||||||
//s:=editVitesse.Text;
|
|
||||||
val(s,vit,erreur);
|
val(s,vit,erreur);
|
||||||
if (erreur<>0) or (vit<-126) or (vit>126) then
|
if (erreur<>0) or (vit<-126) or (vit>126) then
|
||||||
begin
|
begin
|
||||||
@@ -25293,14 +25304,6 @@ begin
|
|||||||
clicTBTrain:=false;
|
clicTBTrain:=false;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TFormPrinc.EditVitesseChange(Sender: TObject);
|
|
||||||
//var i,e : integer;
|
|
||||||
begin
|
|
||||||
{ if pasChgTBV then exit;
|
|
||||||
val(EditVitesse.Text,i,e);
|
|
||||||
if (e=0) and (i>=-127) and (i<=128) then TrackBarVit.position:=i;}
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFormPrinc.ButtonEnvClick(Sender: TObject);
|
procedure TFormPrinc.ButtonEnvClick(Sender: TObject);
|
||||||
var se,s : string;
|
var se,s : string;
|
||||||
begin
|
begin
|
||||||
@@ -26754,7 +26757,8 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
// renvoie les 2 points d'entrée et de sortie possibles d'une TJD 4 états en fonction de son état passé en paramètres
|
// renvoie les 2 points d'entrée et de sortie possibles d'une TJD 4 états en fonction de son état passé en paramètres
|
||||||
procedure TJD4(adr1,pos1,adr2,pos2 : integer;var c1,c2 : char);
|
// résultat dans C1 et C2
|
||||||
|
procedure TJD4(pos1,pos2 : integer;var c1,c2 : char);
|
||||||
begin
|
begin
|
||||||
if (pos1=const_droit) and (pos2=const_droit) then begin c1:='D';c2:='D';end;
|
if (pos1=const_droit) and (pos2=const_droit) then begin c1:='D';c2:='D';end;
|
||||||
if (pos1=const_devie) and (pos2=const_droit) then begin c1:='D';c2:='S';end;
|
if (pos1=const_devie) and (pos2=const_droit) then begin c1:='D';c2:='S';end;
|
||||||
@@ -28427,9 +28431,6 @@ begin
|
|||||||
Signaux[2].Img.picture.bitmap.width:=l;
|
Signaux[2].Img.picture.bitmap.width:=l;
|
||||||
Signaux[2].Img.picture.bitmap.height:=h;
|
Signaux[2].Img.picture.bitmap.height:=h;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Signaux[2].Img.Canvas.StretchDraw(rect(0,0,l,h),Formprinc.Image7feux.Picture.Bitmap);
|
Signaux[2].Img.Canvas.StretchDraw(rect(0,0,l,h),Formprinc.Image7feux.Picture.Bitmap);
|
||||||
// .Bitmap:=Image7feux.Picture.Bitmap;
|
// .Bitmap:=Image7feux.Picture.Bitmap;
|
||||||
exit;
|
exit;
|
||||||
@@ -28441,6 +28442,7 @@ begin
|
|||||||
Signaux[1].Img.Picture.Bitmap.Modified:=True;
|
Signaux[1].Img.Picture.Bitmap.Modified:=True;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
// changement TrackBar zoom compteurs
|
||||||
procedure TFormPrinc.TrackBarZCChange(Sender: TObject);
|
procedure TFormPrinc.TrackBarZCChange(Sender: TObject);
|
||||||
const maxi=10;
|
const maxi=10;
|
||||||
mini=0;
|
mini=0;
|
||||||
@@ -28459,8 +28461,6 @@ end;
|
|||||||
procedure TFormPrinc.Propritsdescompteurs1Click(Sender: TObject);
|
procedure TFormPrinc.Propritsdescompteurs1Click(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if affEvt then Affiche('Clic propriétés compteurs',clYellow);
|
if affEvt then Affiche('Clic propriétés compteurs',clYellow);
|
||||||
//s:=((Tpopupmenu(Tmenuitem(sender).GetParentMenu).PopupComponent) as TImage).name; // nom du composant, pour récupérer l'index du train (ex: ImageSignal2)
|
|
||||||
//ligneclicTrain:=extract_int(s)-1; // extraire l'adresse (ex 2)
|
|
||||||
formconfig.PageControl.ActivePage:=formconfig.TabSheetCompt;
|
formconfig.PageControl.ActivePage:=formconfig.TabSheetCompt;
|
||||||
formconfig.showmodal;
|
formconfig.showmodal;
|
||||||
formconfig.close;
|
formconfig.close;
|
||||||
@@ -28474,7 +28474,7 @@ end;
|
|||||||
procedure TFormPrinc.Dtacherlecompteur1Click(Sender: TObject);
|
procedure TFormPrinc.Dtacherlecompteur1Click(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
change_clic_train(IdTrainClic);
|
change_clic_train(IdTrainClic);
|
||||||
formCompteur[1].Show;
|
formCompteur[1].Show; // prévu plusieurs fenetres détachables pour les compteurs mais on en utilise qu'une, la 1
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TFormPrinc.PopupMenuCompteursPopup(Sender: TObject);
|
procedure TFormPrinc.PopupMenuCompteursPopup(Sender: TObject);
|
||||||
@@ -28484,20 +28484,7 @@ begin
|
|||||||
menu.Items[1].caption:='Extraire le compteur du train '+trains[IdTrainClic].nom_train;
|
menu.Items[1].caption:='Extraire le compteur du train '+trains[IdTrainClic].nom_train;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TFormPrinc.Button1Click(Sender: TObject);
|
|
||||||
var i : integer;
|
|
||||||
begin
|
|
||||||
init_aiguillages;
|
|
||||||
NivDebug:=3;
|
|
||||||
i:=explore_det(518,523);
|
|
||||||
if (i<>0) and (i<=MaxCantons) then Affiche(intToSTR(canton[i].numero),clYellow);
|
|
||||||
AfficheDebug('=========================',clWhite);
|
|
||||||
i:=explore_det(523,518);
|
|
||||||
if (i<>0) and (i<=MaxCantons) then Affiche(intToSTR(canton[i].numero),clYellow);
|
|
||||||
|
|
||||||
NivDebug:=0;
|
|
||||||
formDebug.show;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TFormPrinc.TrackBarSigChange(Sender: TObject);
|
procedure TFormPrinc.TrackBarSigChange(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
|
|||||||
+2
-2
@@ -1,6 +1,6 @@
|
|||||||
object FormTCO: TFormTCO
|
object FormTCO: TFormTCO
|
||||||
Left = 187
|
Left = 173
|
||||||
Top = 113
|
Top = 188
|
||||||
Width = 1013
|
Width = 1013
|
||||||
Height = 607
|
Height = 607
|
||||||
VertScrollBar.Visible = False
|
VertScrollBar.Visible = False
|
||||||
|
|||||||
+54
-15
@@ -460,6 +460,7 @@ const
|
|||||||
maxUndo=30;
|
maxUndo=30;
|
||||||
ZoomMax=(8191 div MaxCellX)-1; // pour ne pas dépasser un canvas de 8191 pixel maxi
|
ZoomMax=(8191 div MaxCellX)-1; // pour ne pas dépasser un canvas de 8191 pixel maxi
|
||||||
ZoomMin=15;
|
ZoomMin=15;
|
||||||
|
NomFichier_ch='Nom_fichier';
|
||||||
ClFond_ch='CoulFond';
|
ClFond_ch='CoulFond';
|
||||||
clVoies_ch='CoulVoies';
|
clVoies_ch='CoulVoies';
|
||||||
clAllume_ch='CoulAllume';
|
clAllume_ch='CoulAllume';
|
||||||
@@ -632,7 +633,7 @@ var
|
|||||||
route : array[1..500] of record x,y : integer;
|
route : array[1..500] of record x,y : integer;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// tracé en mode dessin
|
// tracé en mode dessin
|
||||||
traceXY : Array[1..50] of record x,y : integer; // en coordonnées grille
|
traceXY : Array[1..50] of record x,y : integer; // en coordonnées grille
|
||||||
@@ -737,7 +738,7 @@ begin
|
|||||||
if c<>0 then
|
if c<>0 then
|
||||||
begin
|
begin
|
||||||
//Affiche('Suppression canton '+intToSTR(c),clorange);
|
//Affiche('Suppression canton '+intToSTR(c),clorange);
|
||||||
for i:=c to ncantons-1 do // supprime le canton c de la liste
|
for i:=c to ncantons-1 do // supprime le canton c de la liste des cantons
|
||||||
canton[i]:=canton[i+1];
|
canton[i]:=canton[i+1];
|
||||||
dec(ncantons);
|
dec(ncantons);
|
||||||
end;
|
end;
|
||||||
@@ -1959,6 +1960,15 @@ begin
|
|||||||
repeat
|
repeat
|
||||||
s:=lit_ligne;
|
s:=lit_ligne;
|
||||||
|
|
||||||
|
sa:=uppercase(NomFichier_ch)+'=';
|
||||||
|
i:=pos(sa,s);
|
||||||
|
if i<>0 then
|
||||||
|
begin
|
||||||
|
inc(nv);
|
||||||
|
delete(s,i,length(sa)); // nom stocké
|
||||||
|
s:='';
|
||||||
|
end;
|
||||||
|
|
||||||
sa:=uppercase(ClFond_ch)+'=';
|
sa:=uppercase(ClFond_ch)+'=';
|
||||||
i:=pos(sa,s);
|
i:=pos(sa,s);
|
||||||
if i<>0 then
|
if i<>0 then
|
||||||
@@ -2529,6 +2539,7 @@ begin
|
|||||||
AssignFile(fichier,nomfichierTCO[i]);
|
AssignFile(fichier,nomfichierTCO[i]);
|
||||||
rewrite(fichier);
|
rewrite(fichier);
|
||||||
Writeln(fichier,'/ Définitions TCO version '+versionSC+sousversion);
|
Writeln(fichier,'/ Définitions TCO version '+versionSC+sousversion);
|
||||||
|
writeln(fichier,NomFichier_ch+'=',NomFichierTCO[i]);
|
||||||
writeln(fichier,ZoomInit_ch+'=',ZoomInit[i]);
|
writeln(fichier,ZoomInit_ch+'=',ZoomInit[i]);
|
||||||
writeln(fichier,XYInit_ch+'=',XInit[i],',',Yinit[i]);
|
writeln(fichier,XYInit_ch+'=',XInit[i],',',Yinit[i]);
|
||||||
Writeln(fichier,clFond_ch+'='+IntToHex(clfond[i],6));
|
Writeln(fichier,clFond_ch+'='+IntToHex(clfond[i],6));
|
||||||
@@ -11470,16 +11481,44 @@ begin
|
|||||||
//Brush.Style:=Bsclear;
|
//Brush.Style:=Bsclear;
|
||||||
|
|
||||||
xt:=0;yt:=0;
|
xt:=0;yt:=0;
|
||||||
if Bimage=2 then begin xt:=LargeurCell[indexTCO] div 2;yt:=1;end;
|
if Bimage=2 then begin xt:=round(14*frxGlob[indexTCO]);yt:=1;end;
|
||||||
if Bimage=3 then begin xt:=3;yt:=hauteurCell[indexTCO]-round(18*fryGlob[indexTCO]);end;
|
if Bimage=3 then begin xt:=round(14*frxGlob[indexTCO]);yt:=hauteurCell[indexTCO]-round(18*fryGlob[indexTCO]);end;
|
||||||
if Bimage=4 then begin xt:=10*round(frxGlob[indexTCO]);yt:=1;end;
|
if Bimage=4 then begin xt:=round(14*frxGlob[indexTCO]);yt:=1;end;
|
||||||
if Bimage=5 then begin xt:=3;yt:=hauteurCell[indexTCO]-round(18*fryGlob[indexTCO]);end;
|
if Bimage=5 then begin xt:=round(14*frxGlob[indexTCO]);yt:=hauteurCell[indexTCO]-round(18*fryGlob[indexTCO]);end;
|
||||||
if Bimage=12 then begin xt:=round(33*fryGlob[indexTCO]);yt:=1;end;
|
if Bimage=12 then begin xt:=round(33*frxGlob[indexTCO]);yt:=1;end;
|
||||||
if Bimage=13 then begin xt:=LargeurCell[indexTCO]-round(30*frxGlob[indexTCO]);yt:=hauteurCell[indexTCO]-round(15*fryGlob[indexTCO]);end;
|
if Bimage=13 then begin xt:=LargeurCell[indexTCO]-round(30*frxGlob[indexTCO]);yt:=hauteurCell[indexTCO]-round(15*fryGlob[indexTCO]);end;
|
||||||
if Bimage=14 then begin xt:=LargeurCell[indexTCO]-round(30*frxGlob[indexTCO]);yt:=1;end;
|
if Bimage=14 then begin xt:=LargeurCell[indexTCO]-round(30*frxGlob[indexTCO]);yt:=1;end;
|
||||||
if Bimage=15 then begin xt:=3;yt:=1;end;
|
if Bimage=15 then
|
||||||
if Bimage=21 then begin xt:=-round(5*frxGlob[indexTCO]);yt:=0;end;
|
begin
|
||||||
if Bimage=22 then begin xt:=(LargeurCell[indexTCO] div 2);yt:=-2;end;
|
if (repr=3) then // texte bas
|
||||||
|
begin
|
||||||
|
xt:=round(25*frxGlob[indexTCO]);yt:=round(37*fryGlob[indexTCO]);
|
||||||
|
end
|
||||||
|
else
|
||||||
|
begin
|
||||||
|
xt:=3;yt:=1;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
if Bimage=21 then
|
||||||
|
begin
|
||||||
|
if (repr=3) then // texte bas
|
||||||
|
begin
|
||||||
|
xt:=round(24*frxGlob[indexTCO]);yt:=round(36*fryGlob[indexTCO]);
|
||||||
|
end else
|
||||||
|
begin
|
||||||
|
xt:=-round(5*frxGlob[indexTCO]);yt:=0;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
if Bimage=22 then
|
||||||
|
begin
|
||||||
|
if (repr=3) then
|
||||||
|
begin
|
||||||
|
xt:=-5;yt:=round(38*fryGlob[indexTCO]) // texte bas
|
||||||
|
end else
|
||||||
|
begin
|
||||||
|
xt:=(LargeurCell[indexTCO] div 2);yt:=-2; // texte haut
|
||||||
|
end;
|
||||||
|
end;
|
||||||
if Bimage=23 then begin xt:=round(33*frxGlob[indexTCO]);yt:=round(35*fryGlob[indexTCO]);end;
|
if Bimage=23 then begin xt:=round(33*frxGlob[indexTCO]);yt:=round(35*fryGlob[indexTCO]);end;
|
||||||
if Bimage=24 then begin xt:=LargeurCell[indexTCO]-round(20*frxGlob[indexTCO]);yt:=hauteurCell[indexTCO]-round(15*fryGlob[indexTCO]);end;
|
if Bimage=24 then begin xt:=LargeurCell[indexTCO]-round(20*frxGlob[indexTCO]);yt:=hauteurCell[indexTCO]-round(15*fryGlob[indexTCO]);end;
|
||||||
if Bimage=25 then begin xt:=round(34*frxGlob[indexTCO]);yt:=round(8*fryGlob[indexTCO]);end;
|
if Bimage=25 then begin xt:=round(34*frxGlob[indexTCO]);yt:=round(8*fryGlob[indexTCO]);end;
|
||||||
@@ -12197,7 +12236,7 @@ procedure Erreur_TCO(indexTCO,x,y : integer);
|
|||||||
var s : string;
|
var s : string;
|
||||||
i,adresse : integer;
|
i,adresse : integer;
|
||||||
begin
|
begin
|
||||||
s:='Erreur 92 TCO - Cellule '+intToSTR(x)+','+intToSTR(y)+' ';
|
s:='Erreur 92 TCO '+intToSTR(indexTCO)+' - Cellule '+intToSTR(x)+','+intToSTR(y)+' ';
|
||||||
adresse:=tco[indextco,x,y].Adresse;
|
adresse:=tco[indextco,x,y].Adresse;
|
||||||
i:=index_aig(adresse);
|
i:=index_aig(adresse);
|
||||||
if i=0 then s:=s+'aiguillage '+intToSTR(adresse)+' inconnu';
|
if i=0 then s:=s+'aiguillage '+intToSTR(adresse)+' inconnu';
|
||||||
@@ -12869,7 +12908,7 @@ var i,ir,adresse,But,Bimage,direction,ancienX,ancienY,x,y,xn,yn,Xdet1,yDet1,iter
|
|||||||
Index_TjdHom:=index_aig(TjdHom); // Index de la TJD homologue
|
Index_TjdHom:=index_aig(TjdHom); // Index de la TJD homologue
|
||||||
position2:=aiguillage[Index_TjdHom].position; // position de la TJD homologue
|
position2:=aiguillage[Index_TjdHom].position; // position de la TJD homologue
|
||||||
|
|
||||||
tjd4(adresse,position,TjdHom,position2,c1,c2); // retourne c1 et C2
|
tjd4(position,position2,c1,c2); // retourne c1 et C2
|
||||||
if (ancienY<y) and (ancienX>x) then // on vient du NE
|
if (ancienY<y) and (ancienX>x) then // on vient du NE
|
||||||
begin
|
begin
|
||||||
if c1=c2 then // si on traverse la TJD
|
if c1=c2 then // si on traverse la TJD
|
||||||
@@ -13073,7 +13112,7 @@ var i,ir,adresse,But,Bimage,direction,ancienX,ancienY,x,y,xn,yn,Xdet1,yDet1,iter
|
|||||||
TjdHom:=aiguillage[index].Ddevie;
|
TjdHom:=aiguillage[index].Ddevie;
|
||||||
Index_TjdHom:=index_aig(TjdHom);
|
Index_TjdHom:=index_aig(TjdHom);
|
||||||
position2:=aiguillage[Index_TjdHom].position;
|
position2:=aiguillage[Index_TjdHom].position;
|
||||||
tjd4(adresse,position,TjdHom,position2,c1,c2); // retourne c1 et C2
|
tjd4(position,position2,c1,c2); // retourne c1 et C2
|
||||||
if (ancienY<y) and (ancienX<x) then // on vient du NO
|
if (ancienY<y) and (ancienX<x) then // on vient du NO
|
||||||
begin
|
begin
|
||||||
if c1=c2 then // si on traverse la TJD
|
if c1=c2 then // si on traverse la TJD
|
||||||
@@ -13279,7 +13318,7 @@ var i,ir,adresse,But,Bimage,direction,ancienX,ancienY,x,y,xn,yn,Xdet1,yDet1,iter
|
|||||||
TjdHom:=aiguillage[index].Ddevie;
|
TjdHom:=aiguillage[index].Ddevie;
|
||||||
Index_TjdHom:=index_aig(TjdHom);
|
Index_TjdHom:=index_aig(TjdHom);
|
||||||
position2:=aiguillage[Index_TjdHom].position;
|
position2:=aiguillage[Index_TjdHom].position;
|
||||||
tjd4(adresse,position,TjdHom,position2,c1,c2); // retourne c1 et C2
|
tjd4(position,position2,c1,c2); // retourne c1 et C2
|
||||||
if (ancienY<y) and (ancienX>x) then // on vient du NE
|
if (ancienY<y) and (ancienX>x) then // on vient du NE
|
||||||
begin
|
begin
|
||||||
if c1=c2 then // si on traverse la TJD
|
if c1=c2 then // si on traverse la TJD
|
||||||
@@ -13507,7 +13546,7 @@ var i,ir,adresse,But,Bimage,direction,ancienX,ancienY,x,y,xn,yn,Xdet1,yDet1,iter
|
|||||||
TjdHom:=aiguillage[index].Ddevie;
|
TjdHom:=aiguillage[index].Ddevie;
|
||||||
Index_TjdHom:=index_aig(TjdHom);
|
Index_TjdHom:=index_aig(TjdHom);
|
||||||
position2:=aiguillage[Index_TjdHom].position;
|
position2:=aiguillage[Index_TjdHom].position;
|
||||||
tjd4(adresse,position,TjdHom,position2,c1,c2); // retourne c1 et C2
|
tjd4(position,position2,c1,c2); // retourne c1 et C2
|
||||||
if (ancienY<y) and (ancienX<x) then // on vient du NO
|
if (ancienY<y) and (ancienX<x) then // on vient du NO
|
||||||
begin
|
begin
|
||||||
if c1=c2 then // si on traverse la TJD
|
if c1=c2 then // si on traverse la TJD
|
||||||
|
|||||||
+1
-1
@@ -26,7 +26,7 @@ var
|
|||||||
f : textFile;
|
f : textFile;
|
||||||
|
|
||||||
Const
|
Const
|
||||||
VersionSC = '10.82'; // sert à la comparaison de la version publiée
|
VersionSC = '10.9'; // sert à la comparaison de la version publiée
|
||||||
SousVersion=' '; // A B C ... en cas d'absence de sous version mettre un espace
|
SousVersion=' '; // A B C ... en cas d'absence de sous version mettre un espace
|
||||||
// pour unzip
|
// pour unzip
|
||||||
SHCONTCH_NOPROGRESSBOX=4;
|
SHCONTCH_NOPROGRESSBOX=4;
|
||||||
|
|||||||
@@ -364,6 +364,12 @@ version 10.81 : Prise en compte des nouveaux champs d'exportation de CDM pour l'
|
|||||||
version 10.82 : Ajout d'une barre de zoom pour la fenetre des signaux.
|
version 10.82 : Ajout d'une barre de zoom pour la fenetre des signaux.
|
||||||
Ajout commande fonctions F trains pour la télécommande par serveur
|
Ajout commande fonctions F trains pour la télécommande par serveur
|
||||||
Corrections diverses
|
Corrections diverses
|
||||||
|
version 10.9 : Possibilité de déclarer des feux verts/rouge pour les signaux à deux feux.
|
||||||
|
Création d'un bouton de propagation du changement d'adresse d'un signal
|
||||||
|
Création d'un bouton de propagation du changement d'adresse d'un détecteur
|
||||||
|
Création d'une condition "détecteur/actionneur" dans les actions
|
||||||
|
version 10.91 Possibilité d'ajouter plusieurs conditions dans les actions
|
||||||
|
Une action ne peuvent être lancée que si la même action précédente est terminée
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user