This commit is contained in:
f1iwq2
2025-09-14 14:15:59 +02:00
parent 659c39512c
commit c1fe725ab3
10 changed files with 209 additions and 92 deletions
+37 -26
View File
@@ -1573,7 +1573,7 @@ object FormConfig: TFormConfig
Top = 8 Top = 8
Width = 633 Width = 633
Height = 505 Height = 505
ActivePage = TabSheetAutonome ActivePage = TabSheetActions
Font.Charset = DEFAULT_CHARSET Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack Font.Color = clBlack
Font.Height = -11 Font.Height = -11
@@ -2098,7 +2098,7 @@ object FormConfig: TFormConfig
'S'#233'lection du style d'#39#39'affichage - Le style sera chang'#233' '#224' la ferm' + 'S'#233'lection du style d'#39#39'affichage - Le style sera chang'#233' '#224' la ferm' +
'eture de la fen'#234'tre'#39 'eture de la fen'#234'tre'#39
Style = csDropDownList Style = csDropDownList
ItemHeight = 13 ItemHeight = 0
ParentShowHint = False ParentShowHint = False
ShowHint = True ShowHint = True
TabOrder = 0 TabOrder = 0
@@ -3340,7 +3340,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
@@ -3471,7 +3471,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
@@ -3779,7 +3779,7 @@ object FormConfig: TFormConfig
Top = 56 Top = 56
Width = 193 Width = 193
Height = 21 Height = 21
ItemHeight = 13 ItemHeight = 0
TabOrder = 0 TabOrder = 0
OnChange = ComboBoxDecodeurPersoChange OnChange = ComboBoxDecodeurPersoChange
end end
@@ -3798,7 +3798,7 @@ object FormConfig: TFormConfig
Width = 145 Width = 145
Height = 21 Height = 21
Style = csDropDownList Style = csDropDownList
ItemHeight = 13 ItemHeight = 0
TabOrder = 2 TabOrder = 2
OnChange = ComboBoxNationChange OnChange = ComboBoxNationChange
end end
@@ -3844,7 +3844,7 @@ object FormConfig: TFormConfig
Width = 193 Width = 193
Height = 21 Height = 21
Style = csDropDownList Style = csDropDownList
ItemHeight = 13 ItemHeight = 0
TabOrder = 6 TabOrder = 6
OnChange = ComboBoxDecCdeChange OnChange = ComboBoxDecCdeChange
end end
@@ -4057,7 +4057,7 @@ object FormConfig: TFormConfig
Top = 96 Top = 96
Width = 137 Width = 137
Height = 21 Height = 21
ItemHeight = 13 ItemHeight = 0
TabOrder = 2 TabOrder = 2
OnChange = ComboBoxOperateurChange OnChange = ComboBoxOperateurChange
OnDrawItem = ComboBoxOperateurDrawItem OnDrawItem = ComboBoxOperateurDrawItem
@@ -4077,7 +4077,7 @@ object FormConfig: TFormConfig
Top = 96 Top = 96
Width = 161 Width = 161
Height = 21 Height = 21
ItemHeight = 13 ItemHeight = 0
ParentShowHint = False ParentShowHint = False
ShowHint = True ShowHint = True
TabOrder = 4 TabOrder = 4
@@ -4147,8 +4147,8 @@ object FormConfig: TFormConfig
OnChange = LabeledEditTrainChange OnChange = LabeledEditTrainChange
end end
object RadioGroupOP: TRadioGroup object RadioGroupOP: TRadioGroup
Left = 48 Left = 72
Top = 32 Top = 24
Width = 89 Width = 89
Height = 57 Height = 57
Caption = 'Op'#233'rateur' Caption = 'Op'#233'rateur'
@@ -4159,6 +4159,17 @@ object FormConfig: TFormConfig
TabOrder = 4 TabOrder = 4
OnClick = RadioGroupOPClick OnClick = RadioGroupOPClick
end end
object LabeledEditZone: TLabeledEdit
Left = 16
Top = 44
Width = 41
Height = 21
EditLabel.Width = 25
EditLabel.Height = 13
EditLabel.Caption = 'Zone'
TabOrder = 5
OnChange = LabeledEditZoneChange
end
end end
object ButtonSupLog: TButton object ButtonSupLog: TButton
Left = 288 Left = 288
@@ -4178,7 +4189,7 @@ object FormConfig: TFormConfig
Width = 145 Width = 145
Height = 21 Height = 21
Style = csDropDownList Style = csDropDownList
ItemHeight = 13 ItemHeight = 0
TabOrder = 7 TabOrder = 7
OnChange = ComboBoxFLChange OnChange = ComboBoxFLChange
end end
@@ -4728,7 +4739,7 @@ object FormConfig: TFormConfig
Height = 21 Height = 21
Hint = 'Nom de l'#39'accessoire d'#233'fini dans l'#39'onglet "p'#233'riph'#233'riques COM/USB"' Hint = 'Nom de l'#39'accessoire 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 = 10 TabOrder = 10
@@ -6455,7 +6466,7 @@ object FormConfig: TFormConfig
Width = 153 Width = 153
Height = 21 Height = 21
Style = csDropDownList Style = csDropDownList
ItemHeight = 13 ItemHeight = 0
TabOrder = 0 TabOrder = 0
OnChange = ComboBoxUSBTrChange OnChange = ComboBoxUSBTrChange
end end
@@ -6635,7 +6646,7 @@ object FormConfig: TFormConfig
Left = 664 Left = 664
Top = 72 Top = 72
Bitmap = { Bitmap = {
494C010109000E00040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 494C01010A000E00040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000004000000001002000000000000040 0000000000003600000028000000400000004000000001002000000000000040
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
@@ -6791,17 +6802,17 @@ object FormConfig: TFormConfig
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000FF000000
FF000000FF000000FF000000FF0000000000000000000000FF000000FF000000
FF000000FF000000FF0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000000000FF000000
0000000000000000000000000000000000000000000000000000000000000000 FF000000FF000000FF000000FF0000000000000000000000FF000000FF000000
0000000000000000000000000000000000000000000000000000000000000000 FF000000FF000000FF0000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
@@ -7155,11 +7166,11 @@ object FormConfig: TFormConfig
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000FFFF000000000000742E000000000000 00000000000000000000000000000000FFFFFFFF00000000742EFFFF00000000
75EE000000000000546A00000000000025E4000000000000742E000000000000 75EEFFFF00000000546AC1830000000025E4C18300000000742EFFFF00000000
FFFF000000000000FFFF00000000000000000000000000000000000000000000 FFFFFFFF00000000FFFFB6DB0000000000000000000000000000B6DB00000000
0000000000000000000000000000000000000000000000000000000000000000 00000000000000000000B6DB000000000000FFFF000000000000FFFF00000000
000000000000000000000000000000000000FFFF000000000000FB4700000000 0000FFFF000000000000FFFF000000000000FFFF000000000000FB4700000000
0000F56F000000000000F56F000000000000F54F000000000000FB6F00000000 0000F56F000000000000F56F000000000000F54F000000000000FB6F00000000
0000FFFF00000000000000000000000000000000000000000000000000000000 0000FFFF00000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
+113 -22
View File
@@ -510,6 +510,7 @@ type
Label83: TLabel; Label83: TLabel;
Label84: TLabel; Label84: TLabel;
LabelTitreTrain: TLabel; LabelTitreTrain: TLabel;
LabeledEditZone: TLabeledEdit;
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;
@@ -808,6 +809,7 @@ type
procedure LabeledEditVit1Change(Sender: TObject); procedure LabeledEditVit1Change(Sender: TObject);
procedure LabeledEditVit2Change(Sender: TObject); procedure LabeledEditVit2Change(Sender: TObject);
procedure LabeledEditVit3Change(Sender: TObject); procedure LabeledEditVit3Change(Sender: TObject);
procedure LabeledEditZoneChange(Sender: TObject);
private private
{ Déclarations privées } { Déclarations privées }
@@ -964,6 +966,7 @@ EtatDCC=5;
EtatDet=6; EtatDet=6;
EtatBoutonTCO=7; EtatBoutonTCO=7;
EtatMemoire=8; EtatMemoire=8;
EtatZone=9;
NomVAR='Fonction logique'; NomVAR='Fonction logique';
NomOpET='Opérateur ET'; NomOpET='Opérateur ET';
NomOpOU='Opérateur OU'; NomOpOU='Opérateur OU';
@@ -973,7 +976,8 @@ NomEtatDCC='Etat DCC';
NomEtatDet='Etat détect./actionn.'; NomEtatDet='Etat détect./actionn.';
NomEtatBoutonTCO='Bouton TCO'; NomEtatBoutonTCO='Bouton TCO';
NomEtatMemoire='Mémoire'; NomEtatMemoire='Mémoire';
NomFonc : array[0..8] of string[25]=(NomVar,NomOpET,NomOpOu,NomOpNonET,NomOpNonOU,NomEtatDCC,NomEtatDet,NomEtatBoutonTCO,NomEtatMemoire); NomEtatZone='Zone';
NomFonc : array[0..9] of string[25]=(NomVar,NomOpET,NomOpOu,NomOpNonET,NomOpNonOU,NomEtatDCC,NomEtatDet,NomEtatBoutonTCO,NomEtatMemoire,NomEtatZone);
var var
@@ -2632,7 +2636,9 @@ begin
s:=intToSTR(i)+','+nomfonc[fonction[j,i].typ]+','; s:=intToSTR(i)+','+nomfonc[fonction[j,i].typ]+',';
s:=s+'N'+intToSTR(fonction[j,i].niveau)+','; s:=s+'N'+intToSTR(fonction[j,i].niveau)+',';
s:=s+'T'+intToSTR(fonction[j,i].typ)+','; s:=s+'T'+intToSTR(fonction[j,i].typ)+',';
s:=s+'A'+intToSTR(fonction[j,i].adresse)+','; s:=s+'A'+intToSTR(fonction[j,i].adresse);
if fonction[j,i].typ=EtatZone then s:=s+'-'+intToSTR(fonction[j,i].adresse2);
s:=s+',';
s:=s+'E'+intToSTR(fonction[j,i].etat)+','; s:=s+'E'+intToSTR(fonction[j,i].etat)+',';
s:=s+'V'+','+fonction[j,i].train+','; s:=s+'V'+','+fonction[j,i].train+',';
s:=s+'O'+intToSTR(fonction[j,i].OpMemoire)+','; s:=s+'O'+intToSTR(fonction[j,i].OpMemoire)+',';
@@ -2954,14 +2960,16 @@ begin
result:=c; result:=c;
end; end;
// renvoie vrai si typ est un opérateur
function isOperateur(typ : integer): boolean; function isOperateur(typ : integer): boolean;
begin begin
result:=(typ>=OpET) and (typ<=OpNonOu); result:=(typ>=OpET) and (typ<=OpNonOu);
end; end;
// renvoie vrai si typ est une variable
function isVariable(typ : integer): boolean; function isVariable(typ : integer): boolean;
begin begin
result:=(typ>=EtatDCC) and (typ<=EtatMemoire); result:=(typ>=EtatDCC) and (typ<=EtatZone);
end; end;
// donne le texte à mettre dans le tree view en fonction de l'index de fonction[] // donne le texte à mettre dans le tree view en fonction de l'index de fonction[]
@@ -3015,6 +3023,10 @@ begin
end; end;
s:=s+intToSTR(fonction[fonc,i].etat); s:=s+intToSTR(fonction[fonc,i].etat);
end; end;
if typ=EtatZone then
begin
s:=s+fonction[fonc,i].train+' '+intToSTR(fonction[fonc,i].adresse)+' '+intToSTR(fonction[fonc,i].adresse2)+' '+intToSTR(fonction[fonc,i].etat);
end;
end; end;
result:=s; result:=s;
end; end;
@@ -3042,10 +3054,14 @@ begin
else s:=s+' inconnu '; else s:=s+' inconnu ';
end; end;
end; end;
if typ=EtatDet then if (typ=EtatDet) then
begin begin
s:=s+intToSTR(fonction[fonc,i].adresse)+' '+intToSTR(fonction[fonc,i].etat); s:=s+intToSTR(fonction[fonc,i].adresse)+' '+intToSTR(fonction[fonc,i].etat);
end; end;
if (typ=EtatZone) then
begin
s:=s+intToSTR(fonction[fonc,i].adresse)+' '+intToSTR(fonction[fonc,i].adresse2)+' '+intToSTR(fonction[fonc,i].etat);
end;
if typ=EtatBoutonTCO then if typ=EtatBoutonTCO then
begin begin
s:=s+'Bt'+intToSTR(fonction[fonc,i].adresse)+' '+intToSTR(fonction[fonc,i].etat); s:=s+'Bt'+intToSTR(fonction[fonc,i].adresse)+' '+intToSTR(fonction[fonc,i].etat);
@@ -4913,24 +4929,33 @@ const LessThanValue=-1;
Fonction[NbreFL+1,i].niveau:=v; Fonction[NbreFL+1,i].niveau:=v;
Delete(s,1,erreur); Delete(s,1,erreur);
Delete(s,1,1); // supprime T Delete(s,1,1); // supprime T (type)
val(s,v,erreur); val(s,v,erreur);
delete(s,1,erreur); delete(s,1,erreur);
erreur:=CompareValue(versR,9.7,0.01); //erreur:=CompareValue(versR,9.7,0.01);
if (erreur=LessThanValue) or (erreur=EqualsValue) then //if (erreur=LessThanValue) or (erreur=EqualsValue) then
begin //begin
if (v>=4) then inc(v); // if (v>=4) then inc(v);
end; //end;
Fonction[NbreFL+1,i].typ:=v; Fonction[NbreFL+1,i].typ:=v; // type
inc(idOperateur); inc(idOperateur);
ArbreFonc[idOperateur,0]:=i; ArbreFonc[idOperateur,0]:=i;
Delete(s,1,1); // supprime A Delete(s,1,1); // supprime A (adresse)
val(s,v,erreur); val(s,v,erreur);
delete(s,1,erreur);
Fonction[NbreFL+1,i].adresse:=v;
Delete(s,1,1); // supprime E Fonction[NbreFL+1,i].adresse:=v;
delete(s,1,erreur-1);
if s[1]='-' then // si adresse 2 pour mémoire de zone
begin
delete(s,1,1);
val(s,v,erreur);
Fonction[NbreFL+1,i].adresse2:=v;
delete(s,1,erreur-1);
end;
delete(s,1,1); // supprime ,
Delete(s,1,1); // supprime E (état)
val(s,v,erreur); val(s,v,erreur);
delete(s,1,erreur); delete(s,1,erreur);
Fonction[NbreFL+1,i].etat:=v; Fonction[NbreFL+1,i].etat:=v;
@@ -8552,10 +8577,9 @@ begin
items.add(NomEtatDet); items.add(NomEtatDet);
items.add(NomEtatBoutonTCO); items.add(NomEtatBoutonTCO);
items.add(NomEtatMemoire); items.add(NomEtatMemoire);
items.Add(NomEtatZone);
end; end;
// actionneurs PN // actionneurs PN
ListBoxPN.Clear; ListBoxPN.Clear;
longestLength:=0; longestLength:=0;
@@ -16576,6 +16600,7 @@ var i,io,j,decl :integer;
s : string; s : string;
begin begin
// remplir la listbox en fonction des opérations de l'action cliquée // remplir la listbox en fonction des opérations de l'action cliquée
//Affiche('Affiche_action',clYellow);
with FormConfig.ListBoxOperations do with FormConfig.ListBoxOperations do
begin begin
clear; clear;
@@ -16590,11 +16615,14 @@ begin
else else
begin begin
io:=Tablo_Action[ligneclicAct+1].tabloOp[i].numoperation; io:=Tablo_Action[ligneclicAct+1].tabloOp[i].numoperation;
affecte_operation(io,formConfig.ListBoxOperations); s:=affecte_operation(io);
if ligneclicAct>0 then if not(Tablo_Action[ligneclicact+1].tabloOp[i].valide) then s:=s+sd;
formConfig.ListBoxOperations.Items.Add(s);
end; end;
itemHeight:=16; itemHeight:=16;
end; end;
end; end;
Application.ProcessMessages;
formConfig.RichEditInfo.clear; formConfig.RichEditInfo.clear;
decl:=Tablo_Action[ligneclicAct+1].declencheur; decl:=Tablo_Action[ligneclicAct+1].declencheur;
@@ -17897,7 +17925,7 @@ begin
exit; exit;
end; end;
end; end;
if (ComboBoxVar.ItemIndex=EtatMemoire-EtatDCC) then if (ComboBoxVar.ItemIndex=EtatZone-EtatDCC) then
begin begin
end; end;
labelInfo.Caption:=''; labelInfo.Caption:='';
@@ -17931,6 +17959,31 @@ begin
node.Text:=s; node.Text:=s;
end; end;
procedure TFormConfig.LabeledEditZoneChange(Sender: TObject);
var node : tTreenode;
i,v,erreur : integer;
s : string;
begin
if clicTree then exit;
node:=TreeViewL.Selected;
if node=nil then exit;
i:=node.AbsoluteIndex;
config_modifie:=true;
val(LabeledEditZone.text,v,erreur);
if v<1 then
begin
labelInfo.Caption:='Erreur';
exit;
end;
labelInfo.Caption:='';
fonction[foncCourante,i].adresse2:=v;
s:=texte_tv(foncCourante,i);
node.Text:=s;
end;
procedure TformConfig.outdployer1Click(Sender: TObject); procedure TformConfig.outdployer1Click(Sender: TObject);
begin begin
@@ -17959,6 +18012,7 @@ begin
LabelEtat.Visible:=true; LabelEtat.Visible:=true;
SpinEditEtat.Visible:=true; SpinEditEtat.Visible:=true;
RadioGroupOP.Visible:=false; RadioGroupOP.Visible:=false;
LabeledEditZone.Visible:=false;
LabeledEditEtatACC.Visible:=false; LabeledEditEtatACC.Visible:=false;
LabeledEditTrain.visible:=false; LabeledEditTrain.visible:=false;
PanelAcc.Visible:=true; PanelAcc.Visible:=true;
@@ -17968,12 +18022,13 @@ begin
LabeledEditDCC.text:=intToSTR(fonction[foncCourante,iNode].adresse); LabeledEditDCC.text:=intToSTR(fonction[foncCourante,iNode].adresse);
end; end;
if i=EtatDet then // actionneur détecteur if (i=EtatDet) then // actionneur détecteur
begin begin
RadioGroupOP.Visible:=false; RadioGroupOP.Visible:=false;
LabelEtat.Visible:=false; LabelEtat.Visible:=false;
LabeledEditTrain.visible:=true; LabeledEditTrain.visible:=true;
SpinEditEtat.Visible:=false; SpinEditEtat.Visible:=false;
LabeledEditZone.Visible:=false;
LabeledEditEtatACC.Visible:=true; LabeledEditEtatACC.Visible:=true;
LabeledEditDcc.EditLabel.Caption:='Adresse'; LabeledEditDcc.EditLabel.Caption:='Adresse';
LabeledEditTrain.Text:=fonction[foncCourante,iNode].train; LabeledEditTrain.Text:=fonction[foncCourante,iNode].train;
@@ -17981,6 +18036,21 @@ begin
LabeledEditDCC.text:=intToSTR(fonction[foncCourante,iNode].adresse); LabeledEditDCC.text:=intToSTR(fonction[foncCourante,iNode].adresse);
end; end;
if (i=EtatZone) then // zone
begin
RadioGroupOP.Visible:=false;
LabelEtat.Visible:=false;
LabeledEditTrain.visible:=true;
SpinEditEtat.Visible:=false;
LabeledEditZone.Visible:=true;
LabeledEditEtatACC.Visible:=true;
LabeledEditDcc.EditLabel.Caption:='Adresse';
LabeledEditTrain.Text:=fonction[foncCourante,iNode].train;
LabeledEditEtatAcc.Text:=intToSTR(fonction[foncCourante,iNode].etat);
LabeledEditDCC.text:=intToSTR(fonction[foncCourante,iNode].adresse);
LabeledEditZone.text:=intToSTR(fonction[foncCourante,iNode].adresse2);
end;
if i=EtatBoutonTCO then if i=EtatBoutonTCO then
begin begin
RadioGroupOP.Visible:=false; RadioGroupOP.Visible:=false;
@@ -17989,6 +18059,7 @@ begin
LabeledEditEtatACC.Visible:=true; LabeledEditEtatACC.Visible:=true;
LabeledEditTrain.visible:=false; LabeledEditTrain.visible:=false;
PanelAcc.Visible:=true; PanelAcc.Visible:=true;
LabeledEditZone.Visible:=false;
LabeledEditDCC.Visible:=true; LabeledEditDCC.Visible:=true;
LabeledEditDcc.EditLabel.Caption:='Numéro de bouton'; LabeledEditDcc.EditLabel.Caption:='Numéro de bouton';
LabeledEditDCC.Text:=intToSTR(fonction[foncCourante,iNode].adresse); LabeledEditDCC.Text:=intToSTR(fonction[foncCourante,iNode].adresse);
@@ -18004,6 +18075,7 @@ begin
top:=8; top:=8;
end; end;
LabeledEditDCC.Visible:=true; LabeledEditDCC.Visible:=true;
LabeledEditZone.Visible:=false;
LabeledEditDcc.EditLabel.Caption:='Numéro de mémoire'; LabeledEditDcc.EditLabel.Caption:='Numéro de mémoire';
LabeledEditTrain.visible:=false; LabeledEditTrain.visible:=false;
LabeledEditEtatACC.Visible:=true; LabeledEditEtatACC.Visible:=true;
@@ -18545,7 +18617,7 @@ begin
end; end;
Function Etat_variable(k,i : integer): boolean ; Function Etat_variable(k,i : integer): boolean ;
var pos,j,typ,adr : integer; var pos,j,typ,adr,adr2 : integer;
resultat : boolean; resultat : boolean;
train : string; train : string;
begin begin
@@ -18560,6 +18632,7 @@ begin
exit; exit;
end; end;
if typ=EtatDet then // si état détecteur / actionneur if typ=EtatDet then // si état détecteur / actionneur
begin begin
resultat:=detecteur[adr].Etat=(fonction[k,i].etat=1); resultat:=detecteur[adr].Etat=(fonction[k,i].etat=1);
@@ -18591,6 +18664,22 @@ begin
end; end;
exit; exit;
end; end;
if typ=EtatZone then // si Zone
begin
adr2:=fonction[k,i].adresse2;
resultat:=MemZone[adr,adr2].Etat=(fonction[k,i].etat=1);
// ajouter ici si on teste un train sur détecteur
train:=fonction[k,i].train;
if train<>'' then
begin
//Affiche('Eval45 '+intToSTR(adr)+' '+Train,clwhite);
if detecteur[adr].Train<>train then resultat:=false;
end;
result:=resultat;
exit;
end;
end; end;
// donne le suivant de même niveau de même index précédent // donne le suivant de même niveau de même index précédent
@@ -18992,7 +19081,7 @@ begin
config_modifie:=true; config_modifie:=true;
if (ComboBoxVar.ItemIndex=EtatMemoire-EtatDCC) then if (ComboBoxVar.ItemIndex=EtatZone-EtatDCC) then
begin begin
fonction[foncCourante,i].opMemoire:=RadioGroupOP.ItemIndex; fonction[foncCourante,i].opMemoire:=RadioGroupOP.ItemIndex;
s:=texte_tv(foncCourante,i); s:=texte_tv(foncCourante,i);
@@ -19651,6 +19740,8 @@ end;
end. end.
+11 -10
View File
@@ -4,7 +4,7 @@ object FormMemZone: TFormMemZone
BorderStyle = bsDialog BorderStyle = bsDialog
Caption = 'Activer / d'#233'sactiver des m'#233'moires de zone' Caption = 'Activer / d'#233'sactiver des m'#233'moires de zone'
ClientHeight = 173 ClientHeight = 173
ClientWidth = 370 ClientWidth = 405
Color = clBtnFace Color = clBtnFace
Font.Charset = DEFAULT_CHARSET Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText Font.Color = clWindowText
@@ -19,15 +19,16 @@ object FormMemZone: TFormMemZone
TextHeight = 13 TextHeight = 13
object Label1: TLabel object Label1: TLabel
Left = 24 Left = 24
Top = 8 Top = 0
Width = 329 Width = 329
Height = 33 Height = 39
Caption = Caption =
'Les m'#233'moires de zone sont constitu'#233'es de deux d'#233'tecteurs contigu' + 'Les m'#233'moires de zone sont constitu'#233'es de deux d'#233'tecteurs contigu' +
's' 's. Si les deux d'#233'tecteurs sont s'#233'par'#233's par un ou des aiguillage(' +
's), il doit '#234'tre correctement positionn'#233
Font.Charset = DEFAULT_CHARSET Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText Font.Color = clWindowText
Font.Height = -13 Font.Height = -11
Font.Name = 'MS Sans Serif' Font.Name = 'MS Sans Serif'
Font.Style = [] Font.Style = []
ParentFont = False ParentFont = False
@@ -40,28 +41,28 @@ object FormMemZone: TFormMemZone
Height = 13 Height = 13
end end
object Shape1: TShape object Shape1: TShape
Left = 216 Left = 240
Top = 88 Top = 88
Width = 137 Width = 137
Height = 9 Height = 9
Brush.Color = clBlue Brush.Color = clBlue
end end
object Shape2: TShape object Shape2: TShape
Left = 232 Left = 256
Top = 83 Top = 83
Width = 25 Width = 25
Height = 20 Height = 20
Brush.Color = clRed Brush.Color = clRed
end end
object Shape3: TShape object Shape3: TShape
Left = 312 Left = 336
Top = 83 Top = 83
Width = 25 Width = 25
Height = 20 Height = 20
Brush.Color = clRed Brush.Color = clRed
end end
object Label2: TLabel object Label2: TLabel
Left = 225 Left = 249
Top = 56 Top = 56
Width = 35 Width = 35
Height = 19 Height = 19
@@ -74,7 +75,7 @@ object FormMemZone: TFormMemZone
ParentFont = False ParentFont = False
end end
object Label3: TLabel object Label3: TLabel
Left = 304 Left = 328
Top = 56 Top = 56
Width = 35 Width = 35
Height = 19 Height = 19
+7 -7
View File
@@ -78,7 +78,6 @@ end;
function valide_det : boolean; function valide_det : boolean;
var erreur : integer; var erreur : integer;
elsuiv : tEquipement;
begin begin
result:=false; result:=false;
val(FormMemZone.labeledEditDet1.text,det1Z,erreur); val(FormMemZone.labeledEditDet1.text,det1Z,erreur);
@@ -93,15 +92,16 @@ begin
end; end;
val(FormMemZone.labeledEditDet2.text,det2Z,erreur); val(FormMemZone.labeledEditDet2.text,det2Z,erreur);
det_contigu(det1Z,det2Z,suivant,ElSuiv); Det_Adj(det1Z); // renvoie les adresses des détecteurs adjacents au détecteur "det1Zrésultat dans adj1 et adj2
if (adj1=det2Z) or (adj2=det2Z) then
if suivant=0 then
begin begin
FormMemZone.LabelInfo.Caption:='Les détecteurs '+intToSTR(det1Z)+' / '+intToSTR(det2Z)+' ne sont pas contigus'; result:=true;
FormMemZone.LabelInfo.caption:='';
exit; exit;
end; end;
FormMemZone.LabelInfo.caption:='';
result:=true; FormMemZone.LabelInfo.Caption:='Les détecteurs '+intToSTR(det1Z)+' / '+intToSTR(det2Z)+' ne sont pas contigus';
result:=false;
end; end;
procedure TFormMemZone.ButtonActClick(Sender: TObject); procedure TFormMemZone.ButtonActClick(Sender: TObject);
+3 -3
View File
@@ -1,6 +1,6 @@
object FormModifAction: TFormModifAction object FormModifAction: TFormModifAction
Left = 395 Left = 542
Top = 166 Top = 189
BorderStyle = bsDialog BorderStyle = bsDialog
Caption = 'Modifier une action' Caption = 'Modifier une action'
ClientHeight = 443 ClientHeight = 443
@@ -60,7 +60,7 @@ object FormModifAction: TFormModifAction
Top = 64 Top = 64
Width = 729 Width = 729
Height = 337 Height = 337
ActivePage = TabSheetDecl ActivePage = TabSheetOp
MultiLine = True MultiLine = True
TabOrder = 1 TabOrder = 1
object TabSheetDecl: TTabSheet object TabSheetDecl: TTabSheet
+30 -19
View File
@@ -154,7 +154,7 @@ var
ClicDeclenche,ClicAction,ClicCond,DeclencheurAffiche,OperationAffiche : integer; ClicDeclenche,ClicAction,ClicCond,DeclencheurAffiche,OperationAffiche : integer;
function Info_action(i : integer) : string; function Info_action(i : integer) : string;
procedure affecte_operation(i : integer;t: TListBox); function affecte_operation(i : integer) : string;
implementation implementation
@@ -219,21 +219,25 @@ begin
end; end;
// ajoute à la listbox t une ligne avec son icone opérations[] // ajoute à la listbox t une ligne avec son icone opérations[]
// i numéro d'opération // i numéro d'opération dans le ytableau operations
procedure affecte_operation(i : integer;t : tListBox); function affecte_operation(i : integer) : string;
var s : string; var s : string;
io : integer;
begin begin
s:=operations[i].nom; //if ligneClicAct>=0 then io:=Tablo_Action[ligneclicAct+1].tabloOp[i].numoperation else io:=0;
if ligneclicAct>0 then if not(Tablo_Action[ligneclicact+1].tabloOp[i].valide) then s:=s+sd; s:='';
if i<ActionBoutonTCO then t.Items.Add(Format('%d%s', [i-1, s])); // valeur d'index de l'icone dans la ImagelistIcones if i<ActionBoutonTCO then s:=(Format('%d%s', [i-1, s])); // valeur d'index de l'icone dans la ImagelistIcones
if i=ActionBoutonTCO then t.Items.Add(Format('%d%s', [IconeBouton, s])); // valeur d'index de l'icone dans la ImagelistIcones if i=ActionBoutonTCO then s:=(Format('%d%s', [IconeBouton, s])); // valeur d'index de l'icone dans la ImagelistIcones
if i=ActionAffecteMemoire then t.Items.Add(Format('%d%s', [IconeActionAffecteMemoire, s])); // valeur d'index de l'icone dans la ImagelistIcones if i=ActionAffecteMemoire then s:=(Format('%d%s', [IconeActionAffecteMemoire, s])); // valeur d'index de l'icone dans la ImagelistIcones
if i=ActionIncMemoire then t.Items.Add(Format('%d%s', [IconeActionIncMemoire, s])); // valeur d'index de l'icone dans la ImagelistIcones if i=ActionIncMemoire then s:=(Format('%d%s', [IconeActionIncMemoire, s])); // valeur d'index de l'icone dans la ImagelistIcones
if i=ActionDecMemoire then t.Items.Add(Format('%d%s', [IconeActionDecMemoire, s])); // valeur d'index de l'icone dans la ImagelistIcones if i=ActionDecMemoire then s:=(Format('%d%s', [IconeActionDecMemoire, s])); // valeur d'index de l'icone dans la ImagelistIcones
s:=s+operations[i].nom;
result:=s;
end; end;
procedure TFormModifAction.FormCreate(Sender: TObject); procedure TFormModifAction.FormCreate(Sender: TObject);
var i,icone : integer; var i,icone : integer;
s : string;
begin begin
ListBoxOper.Style:=lbOwnerDrawVariable; // pour afficher des icones ListBoxOper.Style:=lbOwnerDrawVariable; // pour afficher des icones
ListBoxDeclench.Style:=lbOwnerDrawVariable; ListBoxDeclench.Style:=lbOwnerDrawVariable;
@@ -262,7 +266,8 @@ begin
for i:=1 to NbreOperations do for i:=1 to NbreOperations do
begin begin
affecte_operation(i,formModifAction.ListBoxOper); s:=affecte_operation(i);
formModifAction.ListBoxOper.Items.add(s);
ListBoxOper.itemHeight:=16; // 16 mini taille des éléments pour l'icone ListBoxOper.itemHeight:=16; // 16 mini taille des éléments pour l'icone
end; end;
@@ -376,8 +381,9 @@ begin
begin begin
if (operations[i].famille=famille) or (famille=0) then if (operations[i].famille=famille) or (famille=0) then
begin begin
s:=operations[i].nom; //s:=operations[i].nom;
affecte_operation(i,formModifAction.ListBoxOper); s:=affecte_operation(i);
formModifAction.ListBoxOper.items.Add(s);
end; end;
end; end;
end; end;
@@ -718,7 +724,7 @@ begin
if not(Tablo_Action[index].tabloOp[i].valide) then s:=s+' [dévalidé]'; if not(Tablo_Action[index].tabloOp[i].valide) then s:=s+' [dévalidé]';
if act<1 then icone:=0 else icone:=act-1; if act<1 then icone:=0 else icone:=act-1;
// listbox de la formmodifAction // listboxOperations de la formmodifAction
if act<=ActionTempo then items.Add(Format('%d%s', [icone, s])); // valeur d'index de l'icone dans la ImagelistIcones if act<=ActionTempo then items.Add(Format('%d%s', [icone, s])); // valeur d'index de l'icone dans la ImagelistIcones
if act=ActionBoutonTCO then items.Add(Format('%d%s', [iconeBouton, s])); if act=ActionBoutonTCO then items.Add(Format('%d%s', [iconeBouton, s]));
if act=ActionAffecteMemoire then items.Add(Format('%d%s', [iconeActionAffecteMemoire, s])); if act=ActionAffecteMemoire then items.Add(Format('%d%s', [iconeActionAffecteMemoire, s]));
@@ -728,6 +734,9 @@ begin
// listboxOperations de la formConfig // listboxOperations de la formConfig
if act<=ActionTempo then formConfig.ListBoxOperations.Items.add(Format('%d%s', [act-1, s])); if act<=ActionTempo then formConfig.ListBoxOperations.Items.add(Format('%d%s', [act-1, s]));
if act=ActionBoutonTCO then formConfig.ListBoxOperations.items.Add(Format('%d%s', [IconeBouton, s])); if act=ActionBoutonTCO then formConfig.ListBoxOperations.items.Add(Format('%d%s', [IconeBouton, s]));
if act=ActionAffecteMemoire then formConfig.ListBoxOperations.items.Add(Format('%d%s', [iconeActionAffecteMemoire, s]));
if act=ActionIncMemoire then formConfig.ListBoxOperations.items.Add(Format('%d%s', [iconeActionIncMemoire, s]));
if act=ActionDecMemoire then formConfig.ListBoxOperations.items.Add(Format('%d%s', [iconeActionDecMemoire, s]));
itemHeight:=16; itemHeight:=16;
end; end;
@@ -1083,16 +1092,17 @@ procedure TFormModifAction.FormActivate(Sender: TObject);
var i : integer; var i : integer;
s : string; s : string;
begin begin
ComboBoxActions.Clear; ComboBoxActions.Clear;
for i:=1 to maxTablo_act do for i:=1 to maxTablo_act do
begin begin
s:=encode_actions(i); s:=encode_actions(i);
if s<>'' then ComboBoxActions.Items.Add(s); if s<>'' then ComboBoxActions.Items.Add(s);
end; end;
//ligneclicACt:=0; //ligneclicACt:=0;
ComboBoxActions.ItemIndex:=ligneclicAct; ComboBoxActions.ItemIndex:=ligneclicAct;
LabelDecl.Caption:='Déclencheur de l''action n°'+intToSTR(ComboBoxactions.ItemIndex+1); LabelDecl.Caption:='Déclencheur de l''action n°'+intToSTR(ComboBoxactions.ItemIndex+1);
Aff_champs(ligneclicAct+1,ClicCond+1,ClicAction+1); Aff_champs(ligneclicAct+1,ClicCond+1,ClicAction+1);
if OperationAffiche<>0 then if OperationAffiche<>0 then
@@ -1226,8 +1236,8 @@ begin
for i:=1 to Tablo_Action[idBD].NbOperations do for i:=1 to Tablo_Action[idBD].NbOperations do
begin begin
no:=Tablo_Action[idBD].tabloOp[i].numoperation; no:=Tablo_Action[idBD].tabloOp[i].numoperation;
//items.Add(Format('%d%s', [no-1, operations[no].nom])); // valeur d'index de l'icone dans la ImagelistIcones s:=affecte_operation(no);
affecte_operation(no,ListBoxOperations); ListBoxOperations.Items.add(s);
itemHeight:=16; itemHeight:=16;
end; end;
ItemIndex:=indexSrc-1; ItemIndex:=indexSrc-1;
@@ -1264,7 +1274,8 @@ begin
for i:=1 to Tablo_Action[idBD].NbOperations do for i:=1 to Tablo_Action[idBD].NbOperations do
begin begin
no:=Tablo_Action[idBD].tabloOp[i].numoperation; no:=Tablo_Action[idBD].tabloOp[i].numoperation;
affecte_operation(no,ListBoxOperations); s:=affecte_operation(no);
ListBoxOperations.Items.Add(s);
itemHeight:=16; itemHeight:=16;
end; end;
@@ -1536,7 +1547,7 @@ begin
if not(Tablo_Action[ligneclicact+1].tabloOp[clicaction+1].valide) then s:=s+sd; if not(Tablo_Action[ligneclicact+1].tabloOp[clicaction+1].valide) then s:=s+sd;
listBoxOperations.Items[clicaction]:=s; listBoxOperations.Items[clicaction]:=s;
formconfig.ListBoxOperations.items[clicaction]:=s; //encode_actions(ligneclicAct+1); if formconfig.ListBoxOperations.Count>=clicaction then formconfig.ListBoxOperations.items[clicaction]:=s; //encode_actions(ligneclicAct+1);
maj_combocactions(ligneclicAct); maj_combocactions(ligneclicAct);
end; end;
+4 -4
View File
@@ -778,7 +778,7 @@ Tfonction =
record record
typ : integer; // opOU, EtatDCC, EtatDet ... etc typ : integer; // opOU, EtatDCC, EtatDet ... etc
Indexprec : integer ; // index du niveau précédent d'origine (parent) Indexprec : integer ; // index du niveau précédent d'origine (parent)
adresse,etat : integer; // adresse : l'indice 0 contient le nombre d'éléments adresse,adresse2,etat : integer; // adresse : l'indice 0 contient le nombre d'éléments
OpMemoire : integer; // opérateur "mémoire" : 0=égal 1=> 2=< OpMemoire : integer; // opérateur "mémoire" : 0=égal 1=> 2=<
niveau : integer; // niveau : l'indice 0 contient le numéro de fonction modifiable niveau : integer; // niveau : l'indice 0 contient le numéro de fonction modifiable
traite : boolean; traite : boolean;
@@ -21552,7 +21552,7 @@ 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}
//https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Compiler_Versions //https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Compiler_Versions
@@ -28149,8 +28149,8 @@ end;
procedure TFormPrinc.ButtonEssaiClick(Sender: TObject); procedure TFormPrinc.ButtonEssaiClick(Sender: TObject);
var i : integer; var i : integer;
begin begin
maj_route(515); i:=Tablo_Action[1].tabloOp[10].numoperation;
// aiguillage[5].AdrTrain:=3; Affiche(intToSTR(i),clYellow);
end; end;
procedure TFormPrinc.TrackBarZCChange(Sender: TObject); procedure TFormPrinc.TrackBarZCChange(Sender: TObject);
+1 -1
View File
@@ -26,7 +26,7 @@ var
f : textFile; f : textFile;
Const Const
VersionSC = '10.7'; // sert à la comparaison de la version publiée VersionSC = '10.71'; // 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;
+3
View File
@@ -341,6 +341,9 @@ version 10.6 : Modification pour l'affichage de la barre de zoom du TCO pour les
version 10.7 : Affichage du compteur de train depuis le menu contextuel des cantons du tco. version 10.7 : Affichage du compteur de train depuis le menu contextuel des cantons du tco.
En roulage ou RUN CDM, suppression d'un train non suivi de la liste des trains en roulage. En roulage ou RUN CDM, suppression d'un train non suivi de la liste des trains en roulage.
Correction désaffectation trains sur cantons. Correction désaffectation trains sur cantons.
version 10.71 : Ajout dans les variables des fonctions les mémoires de zone.
Correction bug activation mémoires de zone dans le menu du TCO.
Correction bug affichage des opérations dans les actions.