diff --git a/Notice d'utilisation des signaux_complexes_GL_V8.38.pdf b/Notice d'utilisation des signaux_complexes_GL_V8.4.pdf similarity index 76% rename from Notice d'utilisation des signaux_complexes_GL_V8.38.pdf rename to Notice d'utilisation des signaux_complexes_GL_V8.4.pdf index a522e21..4a4c2a0 100644 Binary files a/Notice d'utilisation des signaux_complexes_GL_V8.38.pdf and b/Notice d'utilisation des signaux_complexes_GL_V8.4.pdf differ diff --git a/Signaux_complexes_GL.cfg b/Signaux_complexes_GL.cfg index 8d97c47..bcc5ab2 100644 --- a/Signaux_complexes_GL.cfg +++ b/Signaux_complexes_GL.cfg @@ -14,8 +14,8 @@ -$N+ -$O- -$P+ --$Q- --$R- +-$Q+ +-$R+ -$S- -$T- -$U- diff --git a/Signaux_complexes_GL.dof b/Signaux_complexes_GL.dof index 5ccec48..454559d 100644 --- a/Signaux_complexes_GL.dof +++ b/Signaux_complexes_GL.dof @@ -17,8 +17,8 @@ M=0 N=1 O=0 P=1 -Q=0 -R=0 +Q=1 +R=1 S=0 T=0 U=0 diff --git a/Signaux_complexes_GL.dpr b/Signaux_complexes_GL.dpr index 6fec6ed..7602ce3 100644 --- a/Signaux_complexes_GL.dpr +++ b/Signaux_complexes_GL.dpr @@ -37,5 +37,9 @@ begin Application.CreateForm(TFormDebug, FormDebug); Application.CreateForm(TFormAnalyseCDM, FormAnalyseCDM); Application.CreateForm(TFormImportation, FormImportation); + {$IF CompilerVersion >= 28.0} + //https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Compiler_Versions + change_style; + {$IFEND} Application.Run; end. diff --git a/Signaux_complexes_GL.exe b/Signaux_complexes_GL.exe new file mode 100644 index 0000000..d7cc07e Binary files /dev/null and b/Signaux_complexes_GL.exe differ diff --git a/Signaux_complexes_GL.map b/Signaux_complexes_GL.map index 17825b9..1acdc49 100644 --- a/Signaux_complexes_GL.map +++ b/Signaux_complexes_GL.map @@ -1,8 +1,8 @@ Start Length Name Class - 0001:00000000 001A397CH .text CODE + 0001:00000000 001AA234H .text CODE 0002:00000000 00002C54H .data DATA - 0002:00002C54 045E204DH .bss BSS + 0002:00002C54 045E3389H .bss BSS Detailed map of segments @@ -82,23 +82,23 @@ Detailed map of segments 0001:00099CC4 00000A18 C=CODE S=.text G=(none) M=MaskUtils ACBP=A9 0001:0009A6DC 00002108 C=CODE S=.text G=(none) M=Mask ACBP=A9 0001:0009C7E4 0000924C C=CODE S=.text G=(none) M=Grids ACBP=A9 - 0001:000A5A30 00001980 C=CODE S=.text G=(none) M=UnitPilote ACBP=A9 - 0001:000A73B0 00000574 C=CODE S=.text G=(none) M=Importation ACBP=A9 - 0001:000A7924 00014800 C=CODE S=.text G=(none) M=UnitAnalyseSegCDM ACBP=A9 - 0001:000BC124 00002D20 C=CODE S=.text G=(none) M=UnitConfigTCO ACBP=A9 - 0001:000BEE44 00000D10 C=CODE S=.text G=(none) M=Unit_Pilote_aig ACBP=A9 - 0001:000BFB54 00004DD8 C=CODE S=.text G=(none) M=UnitConfigCellTCO ACBP=A9 - 0001:000C492C 00045854 C=CODE S=.text G=(none) M=UnitTCO ACBP=A9 - 0001:0010A180 00003160 C=CODE S=.text G=(none) M=UnitSR ACBP=A9 - 0001:0010D2E0 000028D4 C=CODE S=.text G=(none) M=UnitCDF ACBP=A9 - 0001:0010FBB4 00001833 C=CODE S=.text G=(none) M=verif_version ACBP=A9 - 0001:001113E8 000011D0 C=CODE S=.text G=(none) M=UnitPareFeu ACBP=A9 - 0001:001125B8 00043720 C=CODE S=.text G=(none) M=UnitConfig ACBP=A9 - 0001:00155CD8 00002BC8 C=CODE S=.text G=(none) M=UnitDebug ACBP=A9 - 0001:001588A0 00000D2C C=CODE S=.text G=(none) M=UnitSimule ACBP=A9 - 0001:001595CC 00002678 C=CODE S=.text G=(none) M=Unitplace ACBP=A9 - 0001:0015BC44 000478A8 C=CODE S=.text G=(none) M=UnitPrinc ACBP=A9 - 0001:001A34EC 0000048D C=CODE S=.text G=(none) M=Signaux_complexes_GL ACBP=A9 + 0001:000A5A30 000019A8 C=CODE S=.text G=(none) M=UnitPilote ACBP=A9 + 0001:000A73D8 00000574 C=CODE S=.text G=(none) M=Importation ACBP=A9 + 0001:000A794C 000192B0 C=CODE S=.text G=(none) M=UnitAnalyseSegCDM ACBP=A9 + 0001:000C0BFC 00002D2C C=CODE S=.text G=(none) M=UnitConfigTCO ACBP=A9 + 0001:000C3928 00000D10 C=CODE S=.text G=(none) M=Unit_Pilote_aig ACBP=A9 + 0001:000C4638 00004DE4 C=CODE S=.text G=(none) M=UnitConfigCellTCO ACBP=A9 + 0001:000C941C 0004587C C=CODE S=.text G=(none) M=UnitTCO ACBP=A9 + 0001:0010EC98 000031F0 C=CODE S=.text G=(none) M=UnitSR ACBP=A9 + 0001:00111E88 00002950 C=CODE S=.text G=(none) M=UnitCDF ACBP=A9 + 0001:001147D8 00044EF4 C=CODE S=.text G=(none) M=UnitConfig ACBP=A9 + 0001:001596CC 00001857 C=CODE S=.text G=(none) M=verif_version ACBP=A9 + 0001:0015AF24 000011D0 C=CODE S=.text G=(none) M=UnitPareFeu ACBP=A9 + 0001:0015C0F4 00002BC8 C=CODE S=.text G=(none) M=UnitDebug ACBP=A9 + 0001:0015ECBC 00000D2C C=CODE S=.text G=(none) M=UnitSimule ACBP=A9 + 0001:0015F9E8 00002688 C=CODE S=.text G=(none) M=Unitplace ACBP=A9 + 0001:00162070 00047D34 C=CODE S=.text G=(none) M=UnitPrinc ACBP=A9 + 0001:001A9DA4 0000048D C=CODE S=.text G=(none) M=Signaux_complexes_GL ACBP=A9 0002:00000000 000000CC C=DATA S=.data G=DGROUP M=System ACBP=A9 0002:000000CC 00000020 C=DATA S=.data G=DGROUP M=SysInit ACBP=A9 0002:000000EC 00000254 C=DATA S=.data G=DGROUP M=SysUtils ACBP=A9 @@ -215,13 +215,13 @@ Detailed map of segments 0002:00018770 00418700 C=BSS S=.bss G=DGROUP M=UnitTCO ACBP=A9 0002:00430E70 00000010 C=BSS S=.bss G=DGROUP M=UnitSR ACBP=A9 0002:00430E80 00000014 C=BSS S=.bss G=DGROUP M=UnitCDF ACBP=A9 - 0002:00430E94 00000018 C=BSS S=.bss G=DGROUP M=verif_version ACBP=A9 - 0002:00430EAC 00000004 C=BSS S=.bss G=DGROUP M=UnitPareFeu ACBP=A9 - 0002:00430EB0 000004FC C=BSS S=.bss G=DGROUP M=UnitConfig ACBP=A9 - 0002:004313AC 0000002C C=BSS S=.bss G=DGROUP M=UnitDebug ACBP=A9 - 0002:004313D8 0000000C C=BSS S=.bss G=DGROUP M=UnitSimule ACBP=A9 - 0002:004313E4 00000008 C=BSS S=.bss G=DGROUP M=Unitplace ACBP=A9 - 0002:004313EC 041B3C60 C=BSS S=.bss G=DGROUP M=UnitPrinc ACBP=A9 + 0002:00430E94 00000500 C=BSS S=.bss G=DGROUP M=UnitConfig ACBP=A9 + 0002:00431394 00000018 C=BSS S=.bss G=DGROUP M=verif_version ACBP=A9 + 0002:004313AC 00000004 C=BSS S=.bss G=DGROUP M=UnitPareFeu ACBP=A9 + 0002:004313B0 0000002C C=BSS S=.bss G=DGROUP M=UnitDebug ACBP=A9 + 0002:004313DC 0000000C C=BSS S=.bss G=DGROUP M=UnitSimule ACBP=A9 + 0002:004313E8 00000008 C=BSS S=.bss G=DGROUP M=Unitplace ACBP=A9 + 0002:004313F0 041B4F98 C=BSS S=.bss G=DGROUP M=UnitPrinc ACBP=A9 Bound resource files @@ -237,8 +237,8 @@ UnitConfigCellTCO.dfm UnitTCO.dfm UnitSR.dfm UnitCDF.dfm -verif_version.dfm UnitConfig.dfm +verif_version.dfm UnitDebug.dfm UnitSimule.dfm Unitplace.dfm @@ -247,4 +247,4 @@ Signaux_complexes_GL.res Signaux_complexes_GL.drf -Program entry point at 0001:001A37FC +Program entry point at 0001:001AA0B4 diff --git a/UnitAnalyseSegCDM.pas b/UnitAnalyseSegCDM.pas index 82f326b..653776d 100644 --- a/UnitAnalyseSegCDM.pas +++ b/UnitAnalyseSegCDM.pas @@ -150,7 +150,7 @@ type Tsegment = record numero : integer; - typ : string[20]; // arc aiguillage,... + typ : string[20]; // arc, turnout, ... nport,nperiph,nInter : integer; // nombre de ports et de peripheriques et d'intersections port : array of TPort; periph : array of TPeriph; @@ -191,7 +191,6 @@ implementation uses Importation; - {$R *.dfm} // @@ -873,7 +872,7 @@ end; function degtoRad(angle : double) : double; begin - degtoRad:=angle*pi/180; + degtoRad:=angle*pisur180; end; procedure D_Arc(Canvas: TCanvas; CenterX,CenterY: integer; @@ -1194,6 +1193,7 @@ procedure dessine_aig_courbe(canvas : Tcanvas;i : integer); var numseg,milieuX,milieuY,centreX,centreY,x0,y0,x1,y1,x2,y2,rayon : integer; b,pente,rayonD,alpha : double; coul : Tcolor; + s : string; begin numseg:=segment[i].numero; //Affiche('----'+intToSTR(numseg)+' aig '+intToSTR(segment[i].adresse),clorange); @@ -1219,13 +1219,16 @@ begin // // méthode calculée + str(pente:2:2, s); + Affiche(intToSTR(segment[i].numero)+' Pente='+s,clLime); + alpha:=arctan(pente); - rayonD:=5500; + rayonD:=5750; centreX:=round(rayonD*cos(alpha))+MilieuX; centreY:=round(pente*centreX+b); - canvas.pen.Width:=1; + canvas.pen.Width:=2; canvas.pen.color:=clred; - ligneCDM(canvas,milieuX,milieuY,centreX,centreY); + //ligneCDM(canvas,milieuX,milieuY,centreX,centreY); //ligneCDM(canvas,x0,y0,x1,y1); arc_xy(canvas,centreX,centreY,round(rayonD)+250,x1,y1,x0,y0); @@ -1233,11 +1236,9 @@ begin centreY:=round(pente*centreX+b); canvas.pen.Width:=1; canvas.pen.color:=clyellow; - ligneCDM(canvas,milieuX,milieuY,centreX,centreY); + //ligneCDM(canvas,milieuX,milieuY,centreX,centreY); //ligneCDM(canvas,x0,y0,x1,y1); arc_xy(canvas,centreX,centreY,round(rayonD)+250,x1,y1,x0,y0); - - exit; // méthode directe @@ -1905,7 +1906,7 @@ end; // trouve les index Segment et port contenant le détecteur est detecteur function trouve_IndexSegPortDetecteur(detecteur : integer;var indexSeg,indexPeriph : integer) : boolean; -var i,j,p,np,ns : integer; +var i,j,p,np : integer; trouve : boolean; begin i:=0; @@ -2788,7 +2789,7 @@ begin n:=0; repeat k:=Segment[indexSeg].periph[n].OnDevicePort; // numéro de port sur lequel est le détecteur - if k=IndexPort then // si le port contenant le det est celui qu'on explore + if k=IndexPort then // si le port contenant le det est celui qu'on explore begin if Segment[indexSeg].periph[nperiph].typ='detector' then begin @@ -3172,8 +3173,8 @@ end; // procédure principale de création des branches procedure creee_branches; -var i,j,k,adresse,detecteur,indexSeg,det2,erreur,index : integer; - trouve,bjd : boolean; +var i,j,k,adresse,detecteur,indexSeg,det2,erreur : integer; + trouve : boolean; c : char; s : string; begin @@ -3616,9 +3617,7 @@ end; // importe la base de données CDM dans la base de données Signaux complexes // et crée les branches procedure Importation; -var Adr,AdrAig,AdrDet,i,j,n,baseBJD,segId,seg,PeriphId,NumPort : integer; - c : char; - t : tequipement; +var i,n : integer; s: string; begin if MaxAiguillage<>0 then @@ -3912,7 +3911,7 @@ begin end; inc(nligne); until (nligne>nombre); - Affiche('fin de la compilation des segments',cllime); + Affiche('Fin de la compilation des segments',cllime); // balayer les segments pour transformer les bjd en créant 1 croisement et 4 aiguillages dans les segments, puis on supprime la bjd des segments i:=0; @@ -4163,7 +4162,7 @@ begin until i>=nseg-1; Affichage(false); - Affiche('nombre de détecteurs='+intToSTR(NDet_cdm),clyellow); + Affiche('Nombre de détecteurs='+intToSTR(NDet_cdm),clyellow); formAnalyseCDM.Show; formprinc.ButtonAffAnalyseCDM.Visible:=true; @@ -4263,7 +4262,6 @@ begin end; - procedure TFormAnalyseCDM.CheckPortsClick(Sender: TObject); begin Affichage(false); @@ -4276,14 +4274,14 @@ var pt : Tpoint; trouve : boolean; debug : boolean; ctype,s : string; - canvas : Tcanvas; + canvasI : Tcanvas; begin clic:=true; pt:= formAnalyseCDM.ImageCDM.ScreenToClient(Mouse.CursorPos); // coordonnées par rapport à l'image xSouris:=pt.x; ySouris:=pt.y; - canvas:=FormAnalyseCDM.ImageCDM.Canvas; + canvasI:=FormAnalyseCDM.ImageCDM.Canvas; i:=0; repeat @@ -4307,14 +4305,12 @@ begin trouve:=point_Sur_Segment(Xsouris,Ysouris,x1,y1,x2,y2); if trouve then begin - with canvas do + with canvasI do begin Pen.Width:=largeur_voie; pen.Color:=clred; MoveTo(x1,y1); LineTo(x2,y2); - TextOut(x1,y1+5,'P0:'+intToSTR(segment[i].port[0].numero)); - TextOut(x2,y2+5,'P1:'+intToSTR(segment[i].port[1].numero)); end; x1:=(x1+x2) div 2; @@ -4322,19 +4318,18 @@ begin x2:=segment[i].port[2].x; y2:=segment[i].port[2].y; coords(x2,y2); - with canvas do + with canvasI do begin MoveTo(x1,y1); LineTo(x2,y2); - TextOut(x2,y2+5,'P2:'+intToSTR(segment[i].port[2].numero)); end; if ctype='turnout_3way' then begin - canvas.moveTo(x1,y1); + canvasI.moveTo(x1,y1); x2:=segment[i].port[3].x; y2:=segment[i].port[3].y; coords(x2,y2); - canvas.LineTo(x2,y2); + canvasI.LineTo(x2,y2); end; xAig:=x1;yAig:=y1-5; @@ -4361,16 +4356,15 @@ begin trouve:=point_Sur_Segment(Xsouris,Ysouris,x1,y1,x2,y2); if trouve then begin - - s:=intToSTR(Segment[i].adresse); + s:=intToSTR(Segment[i].adresse); if Segment[i].adresse2<>0 then s:=s+'/'+intToSTR(Segment[i].adresse2); formAnalyseCDM.EditAdresse.Text:=s; s:='Ports 0/1/2/3 = '+IntToSTR(Segment[i].port[0].numero)+'/'+IntToSTR(Segment[i].port[1].numero)+'/'+ IntToSTR(Segment[i].port[2].numero)+'/'+IntToSTR(Segment[i].port[3].numero); formAnalyseCDM.LabelPorts.Caption:=s; - Canvas.Pen.Width:=largeur_voie; - Canvas.pen.Color:=clred; + CanvasI.Pen.Width:=largeur_voie; + CanvasI.pen.Color:=clred; x1:=segment[i].port[1].x; y1:=segment[i].port[1].y; @@ -4378,12 +4372,10 @@ begin y2:=segment[i].port[3].y; coords(x1,y1); coords(x2,y2); - with canvas do + with canvasI do begin MoveTo(x1,y1); LineTo(x2,y2); - TextOut(x1,y1+5,'P1:'+intToSTR(segment[i].port[1].numero)); - TextOut(x2,y2+5,'P3:'+intToSTR(segment[i].port[3].numero)); end; x1:=segment[i].port[0].x; @@ -4392,16 +4384,15 @@ begin y2:=segment[i].port[2].y; coords(x1,y1); coords(x2,y2); - with canvas do + with canvasI do begin MoveTo(x1,y1); LineTo(x2,y2); - TextOut(x1,y1+5,'P0:'+intToSTR(segment[i].port[0].numero)); - TextOut(x2,y2+5,'P2:'+intToSTR(segment[i].port[2].numero)); end; xAig:=x1;yAig:=y1-5; end; + end; // le précurve est un type droit!! @@ -4420,10 +4411,13 @@ begin s:='Ports 0/1 = '+InttoSTR(Segment[i].port[0].numero)+'/'+IntToSTR(Segment[i].port[1].numero); formAnalyseCDM.LabelPorts.Caption:=s; - Canvas.Pen.Width:=largeur_voie; - Canvas.pen.Color:=clred; - canvas.MoveTo(x1,y1); - canvas.LineTo(x2,y2); + with canvasI do + begin + Pen.Width:=largeur_voie; + pen.Color:=clred; + MoveTo(x1,y1); + LineTo(x2,y2); + end; end; end; @@ -4439,8 +4433,8 @@ begin //Affiche('Segment index '+intToSTR(i)+' Numéro='+intToSTR(numero),clOrange); if stopAngle<0 then - canvas.Pen.color:=clred - else canvas.Pen.color:=clOrange; + canvasI.Pen.color:=clred + else canvasI.Pen.color:=clOrange; trouve:=point_sur_arc(xSouris,ySouris,CentreX,centreY,rayon,StartAngle,StopAngle,debug) ; if trouve then @@ -4451,9 +4445,10 @@ begin if not(debug) then begin - Canvas.Pen.Width:=largeur_voie; - Canvas.pen.Color:=clred; - D_arc(formAnalyseCDM.ImageCDM.Canvas,centreX,centreY,rayon,StartAngle,StopAngle); + CanvasI.Pen.Width:=largeur_voie; + CanvasI.pen.Color:=clred; + D_arc(CanvasI,centreX,centreY,rayon,StartAngle,StopAngle); + end; end; end; @@ -4482,10 +4477,14 @@ begin begin s:=s+#13+'Adr='+intToSTR(x1); if Segment[i].adresse2<>0 then s:=s+'/'+intToSTR(Segment[i].adresse2); - for j:=0 to segment[i].nport-1 do - begin - s:=s+#13+'Port '+intToSTR(j)+' : '+intToSTR(Segment[i].port[j].numero); - end; + end; + for j:=0 to segment[i].nport-1 do + begin + s:=s+#13+'Port '+intToSTR(j)+' : '+intToSTR(Segment[i].port[j].numero); + x1:=Segment[i].port[j].x; + y1:=Segment[i].port[j].y; + coords(x1,y1); + canvasI.TextOut(x1,y1+5,'P'+intToSTR(j)+':'+intToSTR(Segment[i].port[j].numero)); end; Hint:=s; showHint:=true; diff --git a/UnitCDF.dfm b/UnitCDF.dfm index caafe13..34013ab 100644 --- a/UnitCDF.dfm +++ b/UnitCDF.dfm @@ -1,6 +1,6 @@ object FormCDF: TFormCDF - Left = 368 - Top = 141 + Left = 369 + Top = 142 BorderStyle = bsDialog Caption = 'Configuration du d'#233'codeur CDF' ClientHeight = 466 diff --git a/UnitCDF.pas b/UnitCDF.pas index b98e041..dcf72c8 100644 --- a/UnitCDF.pas +++ b/UnitCDF.pas @@ -116,8 +116,7 @@ begin end; procedure TFormCDF.FormActivate(Sender: TObject); -var i,erreur : integer; - c : tcomponent; +var erreur : integer; begin Val(FormConfig.EditAdrSig.text,Adresse,erreur); index:=index_Signal(Adresse); @@ -206,7 +205,7 @@ begin case Signaux[i].aspect of // feux de signalisation 2 : dessine_signal2(Vcanvas,0,0,1,1,EtatFeupilote,1); - 3 : dessine_signal3(Vcanvas,0,0,1,1,EtatFeupilote,AncienEtat,1); + 3 : dessine_signal3(Vcanvas,0,0,1,1,EtatFeupilote,1); 4 : dessine_signal4(VCanvas,0,0,1,1,EtatFeupilote,1); 5 : dessine_signal5(VCanvas,0,0,1,1,EtatFeupilote,1); 7 : dessine_signal7(VCanvas,0,0,1,1,EtatFeupilote,1); @@ -487,6 +486,7 @@ end; procedure TFormCDF.FormCreate(Sender: TObject); begin + position:=poMainFormCenter; if debug=1 then Affiche('Fin création fenetre CDF',clLime); couleurs_cdf; if debug=1 then Affiche('Fin création fenetre CDF',clLime); diff --git a/UnitConfig.dfm b/UnitConfig.dfm index 987e5d9..34cc35e 100644 --- a/UnitConfig.dfm +++ b/UnitConfig.dfm @@ -1,6 +1,6 @@ object FormConfig: TFormConfig - Left = 238 - Top = 145 + Left = 230 + Top = 120 Hint = 'Modifie la configuration selon les s'#233'lections choisies' BorderStyle = bsDialog Caption = 'Configuration g'#233'n'#233'rale' @@ -639,6 +639,19 @@ object FormConfig: TFormConfig Visible = False WordWrap = True end + object LabelD11: TLabel + Left = 752 + Top = 64 + Width = 40 + Height = 31 + Caption = 'D11' + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -27 + Font.Name = 'Arial Narrow' + Font.Style = [fsBold, fsItalic] + ParentFont = False + end object ButtonAppliquerEtFermer: TButton Left = 240 Top = 520 @@ -830,7 +843,7 @@ object FormConfig: TFormConfig Left = 312 Top = 8 Width = 297 - Height = 169 + Height = 121 Caption = 'Au d'#233'marrage de CDM Rail : serveur' TabOrder = 2 object RadioButtonSS: TRadioButton @@ -874,9 +887,9 @@ object FormConfig: TFormConfig TabOrder = 4 end object RadioButtonECOS: TRadioButton - Left = 8 - Top = 128 - Width = 233 + Left = 192 + Top = 32 + Width = 89 Height = 17 Caption = 'Ecos ESU' TabOrder = 5 @@ -884,23 +897,23 @@ object FormConfig: TFormConfig object RadioButtonRS: TRadioButton Left = 8 Top = 96 - Width = 209 + Width = 177 Height = 17 Caption = 'RS2PC (Rs FeedBack interface)' TabOrder = 6 end object RadioButtonDCCpl: TRadioButton - Left = 8 - Top = 144 - Width = 209 + Left = 192 + Top = 16 + Width = 73 Height = 17 Caption = 'DCC++' TabOrder = 7 end object RadioButtonDCCpp: TRadioButton - Left = 8 - Top = 112 - Width = 161 + Left = 192 + Top = 48 + Width = 89 Height = 17 Caption = 'DCCpp' TabOrder = 8 @@ -908,7 +921,7 @@ object FormConfig: TFormConfig end object GroupBox7: TGroupBox Left = 312 - Top = 184 + Top = 136 Width = 297 Height = 81 Caption = 'Au d'#233'marrage de CDM Rail : interface LENZ / XpressNet' @@ -1030,11 +1043,11 @@ object FormConfig: TFormConfig TabOrder = 4 end end - object GroupBox15: TGroupBox + object GroupBoxDivers: TGroupBox Left = 312 - Top = 272 + Top = 224 Width = 297 - Height = 177 + Height = 217 Caption = 'Divers' TabOrder = 5 object Label31: TLabel @@ -1120,9 +1133,8 @@ object FormConfig: TFormConfig Width = 233 Height = 17 Hint = - 'Contr'#244'le si une adresse DCC se trouve dans la plage 257-272 si o' + - 'n utilise Xpressnet. Ne pas cocher si XpressNet n'#39'est pas utilis' + - #233 + 'Contr'#244'le si une adresse DCC se trouve '#224' partir de 257 si on util' + + 'ise Xpressnet. Ne pas cocher si XpressNet n'#39'est pas utilis'#233 Caption = 'V'#233'rification des adresses XpressNet' ParentShowHint = False ShowHint = True @@ -1261,7 +1273,7 @@ object FormConfig: TFormConfig Top = 24 Width = 225 Height = 17 - Caption = '0 : Sans ent'#234'te (interfaces s'#233'rie)' + Caption = '0 : Sans ent'#234'te (interfaces s'#233'rie, Genli...)' TabOrder = 0 end object RadioButton2: TRadioButton @@ -1361,30 +1373,13 @@ object FormConfig: TFormConfig ReadOnly = True TabOrder = 5 end - object Memo4: TMemo - Left = 312 - Top = 240 - Width = 297 - Height = 49 - BevelInner = bvLowered - BevelKind = bkFlat - BorderStyle = bsNone - Lines.Strings = ( - - '4. Pour l'#39'utilisation d'#39'interfaces s'#233'rie (GENLI), cette valeur d' + - 'oit ' - #234'tre '#224' 0. Pour les interfaces utilisant nativement de l'#39'USB, ' - 'cette valeur doit '#234'tre '#224' 1. ') - ReadOnly = True - TabOrder = 6 - end object GroupBox9: TGroupBox Left = 8 Top = 280 Width = 297 Height = 161 Caption = 'Au d'#233'marrage de signaux complexes en mode autonome' - TabOrder = 7 + TabOrder = 6 object Label32: TLabel Left = 14 Top = 42 @@ -1472,11 +1467,11 @@ object FormConfig: TFormConfig end object GroupBox22: TGroupBox Left = 312 - Top = 368 + Top = 320 Width = 297 Height = 65 Caption = 'Protocole de connexion '#224' la centrale ou '#224' l'#39'interface' - TabOrder = 8 + TabOrder = 7 object RadioButtonDCC: TRadioButton Left = 8 Top = 40 @@ -1502,21 +1497,21 @@ object FormConfig: TFormConfig end object GroupBox25: TGroupBox Left = 312 - Top = 304 + Top = 248 Width = 297 - Height = 57 + Height = 65 Caption = 'Divers' - TabOrder = 9 + TabOrder = 8 object Label58: TLabel Left = 16 - Top = 20 + Top = 24 Width = 155 Height = 13 Caption = 'Filtrage des d'#233'tecteurs (x100 ms)' end object EditFiltrDet: TEdit Left = 224 - Top = 16 + Top = 20 Width = 25 Height = 21 Hint = 'Temps de filtrage des d'#233'tecteurs qui passent '#224' 0' @@ -1548,7 +1543,7 @@ object FormConfig: TFormConfig Left = 328 Top = 32 Width = 289 - Height = 417 + Height = 441 Caption = 'Description de l'#39'aiguillage' TabOrder = 0 object LabelAdresse: TLabel @@ -1565,8 +1560,8 @@ object FormConfig: TFormConfig ParentFont = False end object LabelCrois: TLabel - Left = 88 - Top = 280 + Left = 96 + Top = 312 Width = 187 Height = 26 Caption = @@ -1577,7 +1572,7 @@ object FormConfig: TFormConfig end object GroupBox10: TGroupBox Left = 8 - Top = 80 + Top = 112 Width = 177 Height = 73 Caption = 'Vitesse de franchissement d'#233'vi'#233' :' @@ -1650,7 +1645,7 @@ object FormConfig: TFormConfig end object CheckInverse: TCheckBox Left = 16 - Top = 277 + Top = 317 Width = 137 Height = 17 Hint = 'Cocher si l'#39'aiguillage est invers'#233' dans CDM rail' @@ -1670,11 +1665,12 @@ object FormConfig: TFormConfig ShowHint = True TabOrder = 2 OnChange = EditAdrAigChange + OnExit = EditAdrAigExit end object ComboBoxAig: TComboBox - Left = 8 + Left = 16 Top = 48 - Width = 145 + Width = 161 Height = 21 Style = csDropDownList ItemHeight = 13 @@ -1689,7 +1685,7 @@ object FormConfig: TFormConfig end object GroupBox16: TGroupBox Left = 8 - Top = 160 + Top = 192 Width = 273 Height = 113 Caption = 'Repr'#233'sentation' @@ -1904,8 +1900,8 @@ object FormConfig: TFormConfig end end object ButtonRestaureAig: TButton - Left = 200 - Top = 48 + Left = 16 + Top = 80 Width = 75 Height = 25 Hint = @@ -1928,28 +1924,28 @@ object FormConfig: TFormConfig end object GroupBox21: TGroupBox Left = 8 - Top = 312 + Top = 344 Width = 273 - Height = 97 + Height = 89 Caption = 'Initialisation de l'#39'aiguillage en mode autonome' TabOrder = 7 object Label37: TLabel Left = 8 - Top = 26 + Top = 34 Width = 66 Height = 13 Caption = 'D'#233'vi'#233' ou droit' end object Label38: TLabel Left = 8 - Top = 50 + Top = 58 Width = 129 Height = 13 Caption = 'Temporisation (1/10'#232'me s)' end object EditTempo10: TEdit Left = 160 - Top = 48 + Top = 56 Width = 41 Height = 21 Hint = @@ -1962,7 +1958,7 @@ object FormConfig: TFormConfig end object ComboBoxDD: TComboBox Left = 160 - Top = 24 + Top = 32 Width = 97 Height = 21 Style = csDropDownList @@ -1977,7 +1973,7 @@ object FormConfig: TFormConfig end object GroupBoxEtatTJD: TGroupBox Left = 192 - Top = 80 + Top = 112 Width = 89 Height = 73 Caption = 'Type TJD-TJS' @@ -2007,6 +2003,21 @@ object FormConfig: TFormConfig OnClick = RadioButtonTJD4Click end end + object ButtonPropage: TButton + Left = 192 + Top = 56 + Width = 89 + Height = 49 + Hint = + 'Change les adresses dans les points de connexions des aiguillage' + + 's et des branches si on a chang'#233' l'#39'adresse d'#39'un aiguillage' + Caption = 'Propager le changement d'#39'adresse' + ParentShowHint = False + ShowHint = True + TabOrder = 9 + WordWrap = True + OnClick = ButtonPropageClick + end end object ButtonNouvAig: TButton Left = 0 @@ -2903,7 +2914,7 @@ object FormConfig: TFormConfig TabOrder = 0 object GroupBoxRadio: TGroupBox Left = 8 - Top = 24 + Top = 16 Width = 249 Height = 89 Caption = 'Type d'#39'action' @@ -3061,7 +3072,7 @@ object FormConfig: TFormConfig end end object GroupBox19: TGroupBox - Left = 8 + Left = 32 Top = 168 Width = 233 Height = 137 @@ -3276,8 +3287,8 @@ object FormConfig: TFormConfig end end object GroupBoxPNA: TGroupBox - Left = 72 - Top = 104 + Left = 64 + Top = 96 Width = 169 Height = 121 Caption = 'Actionneurs PN simples' @@ -3292,7 +3303,7 @@ object FormConfig: TFormConfig TabOrder = 3 end object GroupBoxPN: TGroupBox - Left = 184 + Left = 8 Top = 24 Width = 249 Height = 193 @@ -3416,7 +3427,7 @@ object FormConfig: TFormConfig end object RadioGroupActPN: TRadioGroup Left = 8 - Top = 24 + Top = 16 Width = 217 Height = 57 Hint = 'action par accessoire DCC ou commande COM/USB' @@ -4230,8 +4241,7 @@ object FormConfig: TFormConfig Top = 468 end object PopupMenuRichedit: TPopupMenu - Left = 728 - Top = 88 + Left = 688 object outslectionner1: TMenuItem Caption = 'Tout s'#233'lectionner' OnClick = Toutslectionner1Click @@ -4249,8 +4259,7 @@ object FormConfig: TFormConfig end end object PopupMenuListes: TPopupMenu - Left = 800 - Top = 88 + Left = 728 object Slectionnertout1: TMenuItem Caption = 'S'#233'lectionner tout' Hint = 'S'#233'lectionne toutes les lignes' diff --git a/UnitConfig.pas b/UnitConfig.pas index a3bc4fc..c2f5926 100644 --- a/UnitConfig.pas +++ b/UnitConfig.pas @@ -6,7 +6,12 @@ uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls , jpeg, ComCtrls ,StrUtils, Unitprinc, MMSystem, Buttons , UnitPareFeu, verif_version, Menus, ClipBrd, - Grids ; + Grids + + {$IF CompilerVersion >= 28.0} + ,Vcl.Themes + {$IFEND} + ; type TFormConfig = class(TForm) @@ -77,7 +82,6 @@ type Memo1: TMemo; Memo2: TMemo; Memo3: TMemo; - Memo4: TMemo; GroupBox9: TGroupBox; GroupBox11: TGroupBox; LabelAdresse: TLabel; @@ -118,7 +122,7 @@ type CheckInverse: TCheckBox; RadioButtonAccess: TRadioButton; CheckFenEt: TCheckBox; - GroupBox15: TGroupBox; + GroupBoxDivers: TGroupBox; EditNbDetDist: TEdit; Label31: TLabel; CheckBoxInitAig: TCheckBox; @@ -355,6 +359,8 @@ type CheckBoxSombre: TCheckBox; ButtonCouleur: TButton; ColorDialogFond: TColorDialog; + LabelD11: TLabel; + ButtonPropage: TButton; procedure ButtonAppliquerEtFermerClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormCreate(Sender: TObject); @@ -420,7 +426,6 @@ type procedure EditDet4Change(Sender: TObject); procedure EditSuiv4Change(Sender: TObject); procedure EditSpecUniChange(Sender: TObject); - procedure EditAdrAigChange(Sender: TObject); procedure EditAigTripleChange(Sender: TObject); procedure EditPointe_BGChange(Sender: TObject); procedure EditDroit_BDChange(Sender: TObject); @@ -538,6 +543,9 @@ type procedure EditDevieS2Change(Sender: TObject); procedure ButtonCouleurClick(Sender: TObject); procedure ColorDialogFondShow(Sender: TObject); + procedure ButtonPropageClick(Sender: TObject); + procedure EditAdrAigExit(Sender: TObject); + procedure EditAdrAigChange(Sender: TObject); private { Déclarations privées } @@ -550,6 +558,9 @@ type procedure tb_onChange(sender : TObject); procedure Bt_onclick(sender : Tobject); procedure tbCde_onchange(Sender : Tobject); + {$IF CompilerVersion >= 28.0} + procedure modif_ComboStyle(Sender : Tobject); + {$IFEND} end; const @@ -601,6 +612,7 @@ EnvAigDccpp_ch='EnvAigDccpp'; AdrBaseDetDccpp_ch='AdrBaseDetDccpp'; AvecVerifIconesTCO_ch='AvecVerifIconesTCO'; NomModuleCDM_ch='NomModuleCDM'; +Style_ch='Style'; Nba_ch='NombreAdresses'; nation_ch='Nation'; Periph_ch='Periph'; @@ -634,7 +646,8 @@ var ligneclicAig,AncLigneClicAig,ligneClicSig,AncligneClicSig,EnvAigDccpp,AdrBaseDetDccpp, ligneClicBr,AncligneClicBr,ligneClicAct,AncLigneClicAct,IndexSignalclic,NumTrameCDM, Algo_localisation,Verif_AdrXpressNet,ligneclicTrain,AncligneclicTrain,AntiTimeoutEthLenz, - ligneDCC,decCourant,AffMemoFenetre,ligneClicAccPeriph,AncligneClicAccPeriph,ligneCherche,compt_Ligne : integer; + ligneDCC,decCourant,AffMemoFenetre,ligneClicAccPeriph,AncligneClicAccPeriph,ligneCherche, + compt_Ligne,Style_aff,Ancien_Style : integer; ack_cdm,clicliste,config_modifie,clicproprietes,confasauver,trouve_MaxPort, modif_branches,ConfigPrete,trouve_section_dccpp,trouve_section_trains,trouve_section_acccomusb, @@ -659,7 +672,9 @@ var TextBoxCde : array[1..19] of Tedit; LabelPortCde,LbPnVoie1,LbAPnVoie1,LbAPnVoie2,LbAPnVoie3,LbAPnVoie4,LbAPnVoie5,LbATitre, - LbZTitre,LbZPnVoie1,LbZPnVoie2,LbZPnVoie3,LbZPnVoie4,LbZPnVoie5,LabelMP,LabelNumeroP : Tlabel; + LbZTitre,LbZPnVoie1,LbZPnVoie2,LbZPnVoie3,LbZPnVoie4,LbZPnVoie5,LabelMP,LabelNumeroP, + LabelStyle : Tlabel; + LabelDecCde : array[1..19] of TLabel; shape1,ShapeZ : Tshape; @@ -668,7 +683,7 @@ var BoutonCom : Tbutton; ComboL1,ComboL2,ComboTS1,ComboTS2 : Array[1..10] of TComboBox; - + ComboStyle : TcomboBox; function config_com(s : string) : boolean; function envoi_CDM(s : string) : boolean; @@ -1717,7 +1732,7 @@ begin // taille de la fonte writeln(fichierN,Fonte_ch+'=',TailleFonte); FormPrinc.FenRich.Font.Size:=TailleFonte; - + writeln(fichierN,Style_ch+'=',Style_aff); writeln(fichierN,Protocole_ch+'=',protocole); writeln(fichierN,Verif_AdrXpressNet_ch+'=',Verif_AdrXpressNet); @@ -2478,7 +2493,7 @@ var s,sa,SOrigine: string; repeat s:=lit_ligne; inc(Nligne); - //Affiche(s,ClLime); + //Affiche(s,ClLime); //chaine:=s; if debugconfig then Affiche(s,ClLime); if (s<>'0') then @@ -2503,6 +2518,7 @@ var s,sa,SOrigine: string; if erreur<>0 then Affiche('Erreur aiguillage '+intToSTR(adraig)+' ; caractère '+enregistrement[erreur]+' inconnu',clred); if debugConfig then Affiche('Adresse='+IntToSTR(adraig)+' enregistrement='+Enregistrement,clyellow); aiguillage[maxaiguillage].Adresse:=adraig; + aiguillage[maxaiguillage].AncienAdresse:=adraig; tablo_index_aiguillage[adrAig]:=maxaiguillage; // stockage index avant tri aiguillage[maxaiguillage].AdroitB:='Z'; aiguillage[maxaiguillage].AdevieB:='Z'; aiguillage[maxaiguillage].DdroitB:='Z'; aiguillage[maxaiguillage].DdevieB:='Z'; @@ -3173,6 +3189,18 @@ var s,sa,SOrigine: string; if avecRoulage=1 then Formprinc.roulage1.visible:=true; end; + sa:=uppercase(Style_ch)+'='; + i:=pos(sa,s); + if i=1 then + begin + delete(s,i,length(sa)); + val(s,Style_aff,erreur); + {$IF CompilerVersion >= 28.0} + i:=length(TStyleManager.StyleNames); + if Style_Aff>i then Style_Aff:=i-1; + {$IFEND} + end; + sa:=uppercase(Fonte_ch)+'='; i:=pos(sa,s); if i=1 then @@ -4100,7 +4128,7 @@ begin if sombre then Formconfig.editAdrSig.Color:=couleurfond else FormConfig.EditAdrSig.Color:=clWindow; - aff_champs_signaux(index); // affiche les champs du feu + aff_champs_signaux(index); // affiche les champs du signal clicliste:=false; end; @@ -4145,6 +4173,9 @@ begin EditTempoAig.Text:=IntToSTR(Tempo_Aig); EditFiltrDet.text:=intToSTR(filtrageDet0); + {$IF CompilerVersion >= 28.0} + ComboStyle.itemIndex:=Style_Aff; + {$IFEND} EditComUSB.Text:=PortCom; EditFonte.text:=IntToSTR(TailleFonte); editdebug.Text:=IntToSTR(debug); @@ -4575,6 +4606,18 @@ begin until i>NbreDecPers; end; +// ComboBox du changement de style (Delphi11) +{$IF CompilerVersion >= 28.0} +procedure TformConfig.modif_ComboStyle(Sender : Tobject); +var i : integer; +begin + if clicListe then exit; + i:=ComboStyle.ItemIndex; + // il faut changer le style dans la fenetre principale, sinon çà plante si on choisit windows. + Style_Aff:=i; +end; +{$IFEND} + // textbox du protocole procedure TformConfig.tb_onChange(sender : TObject); var s,te : string; @@ -4692,7 +4735,7 @@ var i,j,y,l,LongestLength,PixelLength : integer; begin if debug=1 then Affiche('Création fenêtre config',clLime); clicListe:=true; - + position:=poMainFormCenter; cs:='ColorA='+IntToHex(couleurFond,6); // pour rajouter aux couleurs personnalisées de la fenetre couleur colorDialogFond.CustomColors.Add(cs); ButtonCouleur.Hint:='Change la couleur de fond de toutes les fenêtres de Signaux_Complexes.'+#13+ @@ -4708,11 +4751,13 @@ begin clicListe:=false; ligneCherche:=0; Compt_ligne:=0; - ConfigPrete:=true; richBranche.HideSelection:=false; // pour pouvoir copier coller la fenetre groupBox21.Top:=304; GroupBox21.Left:=8; + ButtonPropage.Hint:='Change les adresses dans les points de connexions'+#13+ + 'des aiguillages, des branches et des signaux'+#13+ + 'si on a changé l''adresse d''un aiguillage'; if debug=1 then Affiche('Fin création fenêtre config',clLime); EditNbreAdr.Text:='2'; @@ -5623,6 +5668,49 @@ begin onclick:=formconfig.cb_onclick; end; + // compilation avec D11---------------------------------------- + {$IF CompilerVersion >= 28.0} + labelD11.Visible:=true; + // Styles (Embarcadero Dephi11) + LabelStyle:=TLabel.Create(FormConfig.GroupBoxDivers); + with LabelStyle do + begin + Left:=10;Top:=CheckBoxVerifXpressNet.top+24;Width:=170;Height:=12; + caption:='Styles d''affichage'; + name:='LabelStyle'; + parent:=GroupBoxDivers; + hint:='Styles d''affichage'; + ShowHint:=true; + end; + ComboStyle:=TComboBox.create(FormConfig.TabSheetDecodeurs); + with ComboStyle do + begin + Name:='ComboStyle'+intToSTR(i); + left:=130;Top:=LabelStyle.top-2;Width:=150;Height:=13; + text:=''; + parent:=GroupBoxDivers; + itemIndex:=-1; + s:='Sélection du style d''affichage - Le style sera changé à la fermeture de la fenêtre'; + Hint:=s; + ShowHint:=true; + visible:=true; + Style:=csDropDownList; + onChange:=formConfig.modif_ComboStyle; + end; + + // remplir la combobox avec les styles disponibles + for s in TStyleManager.StyleNames do + ComboStyle.Items.Add(s); + + ComboStyle.itemIndex:=Style_Aff; + + CheckBoxSombre.Visible:=false; + ButtonCouleur.Visible:=false; + + {$ELSE} //- Delphi7 ----------------------------------------- + labelD11.Visible:=false; + GroupBoxDivers.Height:=180; + {$IFEND} {if FileExists('Image_Signaux.jpg') then ImageSignaux.Picture.LoadFromFile('Image_Signaux.jpg') else @@ -5630,6 +5718,13 @@ begin } ImageSignaux.picture.Assign(formpilote.ImageSignaux.Picture); + EditComUSB.Hint:='COMX:vitesse,parité,nombre de bits,bits de stop,protocole'+#13+ + 'procotole = 0 : sans protocole, avec temporisation d''envoi (Genli, LZV200)'+#13+ + ' = 1 ou 3 : protocole logiciel XON-XOFF avec temporisation d''envoi'+#13+ + ' = 2 : protocole matériel RTS-CTS sans temporisation d''envoi (Interfaces Lenz LI)'+#13+ + ' = 4 : contrôle de la ligne CTS avant d''émettre un caractère avec temporisation d''envoi'; + EditComUSB.showHint:=true; + ligneclicAig:=-1; AncLigneClicAig:=-1; ligneClicSig:=-1; @@ -6276,7 +6371,7 @@ begin picture.Bitmap:=Select_dessin_Signal(Signaux[i].aspect); end; - if Signaux[i].contrevoie then inverse_image(formCOnfig.ImageSignal,Formprinc.ImageSignal20); + if Signaux[i].contrevoie then inverse_image(formConfig.ImageSignal,Formprinc.ImageSignal20); with formconfig do begin @@ -6290,7 +6385,7 @@ begin decodeur:=Signaux[i].decodeur; ButtonConfigSR.Visible:=false; - case decodeur of + case decodeur of 2,7 : ButtonConfigSR.Visible:=true; 5 : ButtonConfigSR.Visible:=true ; // digikeijs 6 : begin @@ -6320,9 +6415,10 @@ begin if (decodeur<>6) and (decodeur<>10) then begin EditSpecUni.Visible:=false;LabelUni.Visible:=false;end; + // plus tard !! if decodeur>=11 then ButtonConfigSR.Visible:=true; - d:=Signaux[i].aspect; - case d of + d:=Signaux[i].aspect; + case d of 2 : ComboBoxAsp.ItemIndex:=0; 3 : ComboBoxAsp.ItemIndex:=1; 4 : ComboBoxAsp.ItemIndex:=2; @@ -6330,178 +6426,170 @@ begin 7 : ComboBoxAsp.ItemIndex:=4; 9 : ComboBoxAsp.ItemIndex:=5; 20 : ComboBoxAsp.ItemIndex:=11; - else - ComboBoxAsp.ItemIndex:=d-10+4; - end; + else + ComboBoxAsp.ItemIndex:=d-10+4; + end; - // affiche ou non les checkbox en fonction de l'aspect - if (((d=2) or (d>=5)) and (d<10)) or (d=20) then - begin - checkBoxFB.Visible:=true; - Label69.Visible:=true; - MemoBlanc.Visible:=true; - end - else - begin - checkBoxFB.Visible:=false; - Label69.Visible:=false; - MemoBlanc.Visible:=false; - end; + // affiche ou non les checkbox en fonction de l'aspect + if (((d=2) or (d>=5)) and (d<10)) or (d=20) then + begin + checkBoxFB.Visible:=true; + Label69.Visible:=true; + MemoBlanc.Visible:=true; + end + else + begin + checkBoxFB.Visible:=false; + Label69.Visible:=false; + MemoBlanc.Visible:=false; + end; - if d>2 then - begin - checkFVC.Visible:=true; - checkFRC.Visible:=true; + if d>2 then + begin + checkFVC.Visible:=true; + checkFRC.Visible:=true; + end + else + begin + checkFVC.Visible:=false; + checkFRC.Visible:=false; + end; - end - else - begin - checkFVC.Visible:=false; - checkFRC.Visible:=false; - end; - - if ((d>3) and (d<10)) or (d=20) then CheckVerrouCarre.Visible:=true else CheckVerrouCarre.Visible:=false; - if d=20 then - begin - CheckBoxVersContrevoie.Visible:=true; - CheckBoxContrevoie.Visible:=true; - CheckBoxContrevoie.Checked:=Signaux[i].contrevoie; - CheckBoxVersContrevoie.Checked:=Signaux[i].Verscontrevoie; - - if Signaux[i].Btype_suiv1=Aig then s:='Permet d''afficher le chevron sur le signal si l''aiguillage '+intToSTR(Signaux[i].Adr_el_suiv1)+' est dévié' + if ((d>3) and (d<10)) or (d=20) then CheckVerrouCarre.Visible:=true else CheckVerrouCarre.Visible:=false; + if d=20 then + begin + CheckBoxVersContrevoie.Visible:=true; + CheckBoxContrevoie.Visible:=true; + CheckBoxContrevoie.Checked:=Signaux[i].contrevoie; + CheckBoxVersContrevoie.Checked:=Signaux[i].Verscontrevoie; + if Signaux[i].Btype_suiv1=Aig then s:='Permet d''afficher le chevron sur le signal si l''aiguillage '+intToSTR(Signaux[i].Adr_el_suiv1)+' est dévié' else s:='Permet d''afficher le chevron sur le signal si son aiguillage est dévié;'+char(13)+'mais ce signal n''est pas suivi d''un aiguillage'; - CheckBoxversContrevoie.Hint:=s; - CheckBoxFB.caption:='Avec demande Blanc rouge'; - checkVerrouCarre.Caption:='verrouillable au rouge'; - checkVerrouCarre.Hint:='Positionne le feu au rouge si aucun train n''est présent 3 cantons avant le signal'; - checkFVC.visible:=false; - checkFRC.visible:=false; - end - else + CheckBoxversContrevoie.Hint:=s; + CheckBoxFB.caption:='Avec demande Blanc rouge'; + checkVerrouCarre.Caption:='verrouillable au rouge'; + checkVerrouCarre.Hint:='Positionne le feu au rouge si aucun train n''est présent 3 cantons avant le signal'; + checkFVC.visible:=false; + checkFRC.visible:=false; + end + else + begin + CheckBoxVersContrevoie.Visible:=false; + CheckBoxContrevoie.Visible:=false; + CheckBoxFB.caption:='Avec demande feu blanc'; + checkVerrouCarre.Caption:='verrouillable au carré'; + checkVerrouCarre.Hint:='Positionne le feu au carré si aucun train n''est présent 3 cantons avant le signal'; + end; + + // signal normal + if (d<10) or (d>=20) then + begin + Label17.Caption:='Conditions supplémentaires d''affichage du carré par les aiguillages :'; + label17.Width:=131; + LabelDetAss.visible:=true; + LabelElSuiv.visible:=true; + label43.Visible:=true; + + EditDet1.Visible:=true;EditDet2.Visible:=true;EditDet3.Visible:=true;EditDet4.Visible:=true; + EditSuiv1.Visible:=true;EditSuiv2.Visible:=true;EditSuiv3.Visible:=true;EditSuiv4.Visible:=true; + Label24.Visible:=true; Label25.Visible:=true;Label26.Visible:=true;Label27.Visible:=true; + EditDet1.Text:=IntToSTR(Signaux[i].Adr_det1); + EditSuiv1.Text:=TypeEl_To_char(Signaux[i].Btype_suiv1)+IntToSTR(Signaux[i].Adr_el_suiv1); + + EditSuiv1.Hint:=chaine_element(Signaux[i].Btype_suiv1,Signaux[i].Adr_el_suiv1); + j:=Signaux[i].Adr_det2; + if j<>0 then begin - CheckBoxVersContrevoie.Visible:=false; - CheckBoxContrevoie.Visible:=false; - CheckBoxFB.caption:='Avec demande feu blanc'; - checkVerrouCarre.Caption:='verrouillable au carré'; - checkVerrouCarre.Hint:='Positionne le feu au carré si aucun train n''est présent 3 cantons avant le signal'; - end; - - // signal normal - if (d<10) or (d>=20) then + Editdet2.Text:=IntToSTR(j);EditSuiv2.Text:=TypeEl_To_char(Signaux[i].Btype_suiv2)+IntToSTR(Signaux[i].Adr_el_suiv2); + EditSuiv2.Hint:=chaine_element(Signaux[i].Btype_suiv2,Signaux[i].Adr_el_suiv2); + end else begin EditDet2.Text:='';EditSuiv2.Text:='';EditSuiv2.Hint:='';end; + j:=Signaux[i].Adr_det3; + if j<>0 then begin - Label17.Caption:='Conditions supplémentaires d''affichage du carré par les aiguillages :'; - label17.Width:=131; - LabelDetAss.visible:=true; - LabelElSuiv.visible:=true; - label43.Visible:=true; - - EditDet1.Visible:=true;EditDet2.Visible:=true;EditDet3.Visible:=true;EditDet4.Visible:=true; - EditSuiv1.Visible:=true;EditSuiv2.Visible:=true;EditSuiv3.Visible:=true;EditSuiv4.Visible:=true; - Label24.Visible:=true; Label25.Visible:=true;Label26.Visible:=true;Label27.Visible:=true; - EditDet1.Text:=IntToSTR(Signaux[i].Adr_det1); - EditSuiv1.Text:=TypeEl_To_char(Signaux[i].Btype_suiv1)+IntToSTR(Signaux[i].Adr_el_suiv1); - - EditSuiv1.Hint:=chaine_element(Signaux[i].Btype_suiv1,Signaux[i].Adr_el_suiv1); - j:=Signaux[i].Adr_det2; - if j<>0 then - begin - Editdet2.Text:=IntToSTR(j);EditSuiv2.Text:=TypeEl_To_char(Signaux[i].Btype_suiv2)+IntToSTR(Signaux[i].Adr_el_suiv2); - EditSuiv2.Hint:=chaine_element(Signaux[i].Btype_suiv2,Signaux[i].Adr_el_suiv2); - end else begin EditDet2.Text:='';EditSuiv2.Text:='';EditSuiv2.Hint:='';end; - j:=Signaux[i].Adr_det3; - if j<>0 then - begin - EditDet3.Text:=IntToSTR(j);EditSuiv3.Text:=TypeEl_To_char(Signaux[i].Btype_suiv3)+IntToSTR(Signaux[i].Adr_el_suiv3); - EditSuiv3.Hint:=chaine_element(Signaux[i].Btype_suiv3,Signaux[i].Adr_el_suiv3); - end - else begin EditDet3.Text:='';EditSuiv3.Text:='';EditSuiv3.Hint:='';end; - j:=Signaux[i].Adr_det4; - if j<>0 then - begin - EditDet4.Text:=IntToSTR(j);EditSuiv4.Text:=TypeEl_To_char(Signaux[i].Btype_suiv4)+IntToSTR(Signaux[i].Adr_el_suiv4); - EditSuiv4.Hint:=chaine_element(Signaux[i].Btype_suiv4,Signaux[i].Adr_el_suiv4); - end - else begin EditDet4.Text:='';EditSuiv4.Text:='';EditSuiv4.Hint:='';end; - - checkVerrouCarre.Checked:=Signaux[i].VerrouCarre; - checkBoxFB.Checked:=Signaux[i].FeuBlanc; - checkFVC.Checked:=Signaux[i].checkFV; - checkFRC.Checked:=Signaux[i].checkFR; - - // conditions supplémentaires du carré par aiguillages - l:=1; - repeat - nc:=Length(Signaux[i].condcarre[l])-1 ; - if nc<>-1 then - begin - s:=''; - for k:=1 to nc do - begin - s:=s+'A'+IntToSTR(Signaux[i].condcarre[l][k].Adresse)+Signaux[i].condcarre[l][k].PosAig; - if k6); - // scrolle le MemoCarre sur la première ligne - MemoCarre.SelStart:=0; - MemoCarre.Perform(EM_SCROLLCARET,0,0); - - // conditions supplémentaires du feu blanc par aiguillages - l:=1; - repeat - nc:=Length(Signaux[i].condFeuBlanc[l])-1 ; - if nc<>-1 then - begin - s:=''; - for k:=1 to nc do - begin - s:=s+'A'+IntToSTR(Signaux[i].condFeuBlanc[l][k].Adresse)+Signaux[i].condFeuBlanc[l][k].PosAig; - if k6); - // scrolle le MemoCarre sur la première ligne - MemoBlanc.SelStart:=0; - MemoBlanc.Perform(EM_SCROLLCARET,0,0); - + EditDet3.Text:=IntToSTR(j);EditSuiv3.Text:=TypeEl_To_char(Signaux[i].Btype_suiv3)+IntToSTR(Signaux[i].Adr_el_suiv3); + EditSuiv3.Hint:=chaine_element(Signaux[i].Btype_suiv3,Signaux[i].Adr_el_suiv3); end - else - begin // directionnel - Label17.Caption:='Conditions d''affichage du feu directionnel :'; - label17.Width:=131; - label43.Visible:=false; - LabelDetAss.visible:=false; - LabelElSuiv.visible:=false; - EditDet1.Visible:=false;EditDet2.Visible:=false;EditDet3.Visible:=false;EditDet4.Visible:=false; - EditSuiv1.Visible:=false;EditSuiv2.Visible:=false;EditSuiv3.Visible:=false;EditSuiv4.Visible:=false; - CheckVerrouCarre.Visible:=false; - checkFVC.visible:=false; - checkFRC.visible:=false; - - Label24.Visible:=false; Label25.Visible:=false;Label26.Visible:=false;Label27.Visible:=false; - - // conditions d'affichage du signal directionnel - L:=Signaux[i].aspect-10; //nombre de feux du signal directionnel - for p:=1 to L+1 do + else begin EditDet3.Text:='';EditSuiv3.Text:='';EditSuiv3.Hint:='';end; + j:=Signaux[i].Adr_det4; + if j<>0 then + begin + EditDet4.Text:=IntToSTR(j);EditSuiv4.Text:=TypeEl_To_char(Signaux[i].Btype_suiv4)+IntToSTR(Signaux[i].Adr_el_suiv4); + EditSuiv4.Hint:=chaine_element(Signaux[i].Btype_suiv4,Signaux[i].Adr_el_suiv4); + end + else begin EditDet4.Text:='';EditSuiv4.Text:='';EditSuiv4.Hint:='';end; + checkVerrouCarre.Checked:=Signaux[i].VerrouCarre; + checkBoxFB.Checked:=Signaux[i].FeuBlanc; + checkFVC.Checked:=Signaux[i].checkFV; + checkFRC.Checked:=Signaux[i].checkFR; + // conditions supplémentaires du carré par aiguillages + l:=1; + repeat + nc:=Length(Signaux[i].condcarre[l])-1 ; + if nc<>-1 then begin s:=''; - nc:=Length(Signaux[i].AigDirection[p])-1; for k:=1 to nc do begin - s:=s+'A'+IntToSTR(Signaux[i].AigDirection[p][k].adresse) + Signaux[i].AigDirection[p][k].posaig; + s:=s+'A'+IntToSTR(Signaux[i].condcarre[l][k].Adresse)+Signaux[i].condcarre[l][k].PosAig; if k6); + // scrolle le MemoCarre sur la première ligne + MemoCarre.SelStart:=0; + MemoCarre.Perform(EM_SCROLLCARET,0,0); + // conditions supplémentaires du feu blanc par aiguillages + l:=1; + repeat + nc:=Length(Signaux[i].condFeuBlanc[l])-1 ; + if nc<>-1 then + begin + s:=''; + for k:=1 to nc do + begin + s:=s+'A'+IntToSTR(Signaux[i].condFeuBlanc[l][k].Adresse)+Signaux[i].condFeuBlanc[l][k].PosAig; + if k6); + // scrolle le MemoCarre sur la première ligne + MemoBlanc.SelStart:=0; + MemoBlanc.Perform(EM_SCROLLCARET,0,0); + end + else + begin // directionnel + Label17.Caption:='Conditions d''affichage du feu directionnel :'; + label17.Width:=131; + label43.Visible:=false; + LabelDetAss.visible:=false; + LabelElSuiv.visible:=false; + EditDet1.Visible:=false;EditDet2.Visible:=false;EditDet3.Visible:=false;EditDet4.Visible:=false; + EditSuiv1.Visible:=false;EditSuiv2.Visible:=false;EditSuiv3.Visible:=false;EditSuiv4.Visible:=false; + CheckVerrouCarre.Visible:=false; + checkFVC.visible:=false; + checkFRC.visible:=false; + Label24.Visible:=false; Label25.Visible:=false;Label26.Visible:=false;Label27.Visible:=false; + // conditions d'affichage du signal directionnel + L:=Signaux[i].aspect-10; //nombre de feux du signal directionnel + for p:=1 to L+1 do + begin + s:=''; + nc:=Length(Signaux[i].AigDirection[p])-1; + for k:=1 to nc do + begin + s:=s+'A'+IntToSTR(Signaux[i].AigDirection[p][k].adresse) + Signaux[i].AigDirection[p][k].posaig; + if k0 then + if Tablo_PN[i].voie[1].detZ2F=0 then begin RadioButtonSimple.Checked:=true; RadioButtonZone.Checked:=false; @@ -8224,93 +8312,6 @@ begin end; -procedure TFormConfig.EditAdrAigChange(Sender: TObject); - var s : string; - nEtat,i,vide,erreur,index,adr2 : integer; - modele: TEquipement; - c : char; -begin - if clicliste then exit; - if ligneclicAig<0 then exit; - if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAig then - with Formconfig do - begin - s:=EditAdrAig.Text; - Val(s,i,erreur); - if (erreur<>0) or (i<=0) or (i>MaxAcc) then - begin - EditAdrAig.Color:=clred; - LabelInfo.caption:='Erreur adresse Aiguillage ';exit; - end; - - index:=ligneclicAig+1; - if index=0 then exit; - - modele:=aiguillage[index].modele; - // si normal ou triple - if (erreur<>0) or (i>MaxAcc) then begin LabelInfo.caption:='Erreur adresse aiguillage ';exit;end; - // vérifier si l'adresse de l'aiguillage existe déja - - if (aiguillage[Index_Aig(i)].modele<>rien) then - begin - EditAdrAig.Color:=clred; - LabelInfo.caption:='aiguillage '+IntToSTR(i)+' existe déjà - ne sera pas écrasé' ; - exit; - end; - - if sombre then editAdrAig.Color:=couleurfond else EditAdrAig.Color:=clWindow; - LabelInfo.caption:=' '; - - if (modele=aig) or (modele=triple) or (modele=crois) then - begin - EditAdrAig.Color:=clWindow; - LabelInfo.caption:=' '; - aiguillage[index].adresse:=i; - aiguillage[index].modifie:=true; - tablo_index_aiguillage[i]:=index; - s:=encode_aig(index); - formconfig.ListBoxAig.items[ligneclicAig]:=s; - formconfig.ListBoxAig.selected[ligneclicAig]:=true; - end; - - if (modele=tjd) or (modele=tjs) then - begin - clicListe:=true; - nEtat:=aiguillage[index].EtatTJD; - if nEtat=4 then - begin - // modifier les champs P1 et P2 avec la nouvelle adresse - val(editP1.Text,vide,erreur); - if erreur<>0 then c:=editP1.text[erreur] else c:='D'; - editP1.Text:=IntToSTR(i)+c; - val(editP2.Text,vide,erreur); - if erreur<>0 then c:=editP2.text[erreur] else c:='D'; - editP2.Text:=IntToSTR(i)+c; - end; - clicListe:=false; - - aiguillage[index].adresse:=i; - tablo_index_aiguillage[i]:=index; - aiguillage[index].modifie:=true; - s:=encode_aig(index); - formconfig.ListBoxAig.items[index-1]:=s; - formconfig.ListBoxAig.selected[ligneclicAig]:=true; - - // modif homologue - adr2:=aiguillage[index].Ddroit; - index:=index_aig(adr2); - if index<>0 then - begin - aiguillage[index].dDroit:=i; - aiguillage[index].dDevie:=i; - s:=encode_aig(index); - formconfig.ListBoxAig.items[index-1]:=s; - end; - ListBoxSig.selected[ligneClicSig]:=true; - end; - end; -end; - procedure TFormConfig.ComboBoxAspChange(Sender: TObject); var indexTCO,x,y,i,index,aspect,adresseFeu : integer; s : string; @@ -8797,8 +8798,17 @@ begin perform(WM_VSCROLL,SB_BOTTOM,0); end; - formconfig.GroupBoxRadio.Visible:=false; - formconfig.LabelInfo.caption:=''; + with formConfig do + begin + GroupBoxPNA.Visible:=true; + GroupBoxPNZ.Visible:=false; + + RadioButtonSimple.Checked:=true; + RadioButtonZone.Checked:=false; + + GroupBoxRadio.Visible:=false; + LabelInfo.caption:=''; + end; LigneCliqueePN:=NbrePN-1; AncLigneCliqueePN:=LigneCliqueePN; tablo_PN[lignecliqueePN+1].Pulse:=1; @@ -11056,8 +11066,8 @@ begin detect:=NbMaxDet; code:=false; end; - BrancheN[i,j].adresse:=detect; // adresse - BrancheN[i,j].btype:=det;// ident détecteur + BrancheN[i,j].adresse:=detect; // adresse + BrancheN[i,j].btype:=det; // ident détecteur detecteur[detect].NumBranche:=i; // detecteur[] est indexé par le détecteur detecteur[detect].IndexBranche:=j; @@ -11434,6 +11444,13 @@ begin formCDF.showmodal; formCDF.close; end; + + if decodeur>=11 then + begin + FormConfig.PageControl.ActivePage:=TabSheetDecodeurs; + ComboBoxDecodeurPerso.ItemIndex:=decodeur-11; + end; + ListBoxSig.selected[ligneClicSig]:=true; clicListe:=false; end; @@ -11730,6 +11747,7 @@ var i,adr,cmd,erreur : integer; begin i:=ligneCliqueePN+1; if i<1 then exit; + // pilotage DCC if Tablo_PN[i].TypeCde=0 then begin val(editAdrFerme.Text,adr,erreur);if erreur<>0 then exit; @@ -11740,6 +11758,7 @@ begin aff_acc:=false; end else + // par socket begin cmd:=Tablo_PN[i].AdresseFerme; // numéro accessoire cmd:=com_socket(cmd); // si cmd ou socket @@ -12686,7 +12705,7 @@ end; procedure TFormConfig.ComboBoxDecodeurPersoChange(Sender: TObject); -var it,i : integer; +var it,i,k : integer; s: string; begin if affevt then Affiche('Evt ComboBoxDecodeurPerso',clyellow); @@ -12708,14 +12727,16 @@ begin decodeur_pers[decCourant].nom:=s; decodeur[NbDecodeurdeBase+DecCourant-1]:=s; - ComboBoxDec.Items[NbDecodeurdeBase+DecCourant-1]:=s; + + k:=comBoBoxDec.ItemIndex; + ComboBoxDec.Items[NbDecodeurdeBase+DecCourant-1]:=s; // combobox du décodeur, onglet signaux - change son itemindex + ComboBoxDec.ItemIndex:=k; //vérifier si le décodeur est utilisé dans les signaux pour changer son hint for i:=1 to NbreSignaux do begin if Signaux[i].decodeur=NbDecodeurdeBase+decCourant-1 then Maj_Hint_Signal(i); end; - end; EditNbreAdr.Text:=intToSTR(decodeur_pers[decCourant].NbreAdr); @@ -13677,6 +13698,271 @@ procedure TFormConfig.ColorDialogFondShow(Sender: TObject); SetWindowText(ColorDialogFond.Handle,pchar(s)); end; +procedure TFormConfig.ButtonPropageClick(Sender: TObject); + var i,adresse,AncienAdresse,AdresseBr,v,erreur : integer; + typ : tEquipement; + s,Nb : string; +begin + adresse:=aiguillage[ligneclicAig+1].Adresse; + if adresse=0 then exit; + index:=Index_Aig(Adresse); + AncienAdresse:=aiguillage[index].AncienAdresse; + if Adresse=AncienAdresse then exit; + + Affiche('Propagation de l''adresse '+intToSTR(adresse)+' en remplacement de l''ancienne adresse '+intToSTR(AncienAdresse),clOrange); + + // --------- aiguillages ----------- + for i:=1 to maxaiguillage do + begin + typ:=aiguillage[i].modele; + if (typ=aig) or (typ=triple) then + begin + if aiguillage[i].ADroit=AncienAdresse then + begin + aiguillage[i].ADroit:=adresse; + Affiche('Réaffectation aiguillage '+intToSTR(aiguillage[i].Adresse)+' droit',clyellow); + config_modifie:=true; + end; + if aiguillage[i].ADevie=AncienAdresse then + begin + aiguillage[i].ADevie:=adresse; + Affiche('Réaffectation aiguillage '+intToSTR(aiguillage[i].Adresse)+' dévié',clyellow); + config_modifie:=true; + end; + if aiguillage[i].APointe=AncienAdresse then + begin + aiguillage[i].APointe:=adresse; + Affiche('Réaffectation aiguillage '+intToSTR(aiguillage[i].Adresse)+' pointe',clyellow); + config_modifie:=true; + end; + end; + if typ=triple then if aiguillage[index].AdrTriple=AncienAdresse then + begin + aiguillage[i].AdrTriple:=adresse; + Affiche('Réaffectation aiguillage '+intToSTR(aiguillage[i].Adresse)+' triple',clyellow); + config_modifie:=true; + end; + if (typ=tjd) or (typ=tjs) or (typ=crois) then + begin + if aiguillage[i].ADroit=AncienAdresse then + begin + aiguillage[i].ADroit:=adresse; + Affiche('Réaffectation aiguillage '+intToSTR(aiguillage[i].Adresse)+' Adroit',clyellow); + config_modifie:=true; + end; + if aiguillage[i].ADevie=AncienAdresse then + begin + aiguillage[i].ADevie:=adresse; + Affiche('Réaffectation aiguillage '+intToSTR(aiguillage[i].Adresse)+' Ddevie',clyellow); + config_modifie:=true; + end; + if aiguillage[i].DDroit=AncienAdresse then + begin + aiguillage[i].DDroit:=adresse; + Affiche('Réaffectation aiguillage '+intToSTR(aiguillage[i].Adresse)+' Ddroit',clyellow); + config_modifie:=true; + end; + if aiguillage[i].DDevie=AncienAdresse then + begin + aiguillage[i].DDevie:=adresse; + Affiche('Réaffectation aiguillage '+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; + + // branches ---------------------------------- + for i:=1 to NbreBranches do + begin + Nb:='';v:=0; + s:=Branche[i]; + repeat + v:=posEX(',',s,v+1); + if s[1]='A' then + begin + delete(s,1,1); + val(s,adresseBr,erreur); + if adresseBr=ancienAdresse then + begin + Affiche('Changement dans branche '+intToSTR(i),clYellow); + AdresseBr:=Adresse; + config_modifie:=true; + end; + Nb:=Nb+'A'+intToSTR(adresseBr)+','; + end + else + begin + val(s,adresseBr,erreur); + Nb:=Nb+intToSTR(adresseBr)+','; + end; + + v:=pos(',',s); + delete(s,1,v); + + until (v=0); + delete(Nb,length(nb),1); + branche[i]:=nb; + compile_branche(nb,i); + end; + + clicListe:=true; + 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; + With RichBranche do + begin + SelStart:=0; + Perform(EM_SCROLLCARET,0,0); + end; + + // --------- signaux + for i:=1 to NbreSignaux do + begin + if (signaux[i].Adr_el_suiv1=AncienAdresse) and (signaux[i].Btype_suiv1=aig) then + begin + signaux[i].Adr_el_suiv1:=adresse; + Affiche('Changement dans signal '+intToSTR(signaux[i].adresse),clYellow); + config_modifie:=true; + end; + if (signaux[i].Adr_el_suiv2=AncienAdresse) and (signaux[i].Btype_suiv1=aig) then + begin + signaux[i].Adr_el_suiv2:=adresse; + Affiche('Changement dans signal '+intToSTR(signaux[i].adresse),clYellow); + config_modifie:=true; + end; + if (signaux[i].Adr_el_suiv3=AncienAdresse) and (signaux[i].Btype_suiv1=aig) then + begin + signaux[i].Adr_el_suiv3:=adresse; + Affiche('Changement dans signal '+intToSTR(signaux[i].adresse),clYellow); + config_modifie:=true; + end; + if (signaux[i].Adr_el_suiv4=AncienAdresse) and (signaux[i].Btype_suiv1=aig) then + begin + signaux[i].Adr_el_suiv4:=adresse; + Affiche('Changement dans signal '+intToSTR(signaux[i].adresse),clYellow); + config_modifie:=true; + end; + end; + + clicListe:=false; +end; + +procedure change_adr_aig; + var s : string; + nEtat,i,vide,erreur,index,adr2 : integer; + modele: TEquipement; + c : char; +begin + if clicliste then exit; + if ligneclicAig<0 then exit; + if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAig then + with Formconfig do + begin + s:=EditAdrAig.Text; + Val(s,i,erreur); + if (erreur<>0) or (i<=0) or (i>MaxAcc) then + begin + EditAdrAig.Color:=clred; + LabelInfo.caption:='Erreur adresse Aiguillage ';exit; + end; + + index:=ligneclicAig+1; + if index=0 then exit; + + modele:=aiguillage[index].modele; + // si normal ou triple + if (erreur<>0) or (i>MaxAcc) then begin LabelInfo.caption:='Erreur adresse aiguillage ';exit;end; + // vérifier si l'adresse de l'aiguillage existe déja + + if (aiguillage[Index_Aig(i)].modele<>rien) then + begin + EditAdrAig.Color:=clred; + LabelInfo.caption:='aiguillage '+IntToSTR(i)+' existe déjà - ne sera pas écrasé' ; + exit; + end; + + if sombre then editAdrAig.Color:=couleurfond else EditAdrAig.Color:=clWindow; + LabelInfo.caption:=' '; + + if (modele=aig) or (modele=triple) or (modele=crois) then + begin + EditAdrAig.Color:=clWindow; + LabelInfo.caption:=' '; + aiguillage[index].adresse:=i; + aiguillage[index].modifie:=true; + tablo_index_aiguillage[i]:=index; + s:=encode_aig(index); + formconfig.ListBoxAig.items[ligneclicAig]:=s; + formconfig.ListBoxAig.selected[ligneclicAig]:=true; + end; + + if (modele=tjd) or (modele=tjs) then + begin + clicListe:=true; + nEtat:=aiguillage[index].EtatTJD; + if nEtat=4 then + begin + // modifier les champs P1 et P2 avec la nouvelle adresse + val(editP1.Text,vide,erreur); + if erreur<>0 then c:=editP1.text[erreur] else c:='D'; + editP1.Text:=IntToSTR(i)+c; + val(editP2.Text,vide,erreur); + if erreur<>0 then c:=editP2.text[erreur] else c:='D'; + editP2.Text:=IntToSTR(i)+c; + end; + clicListe:=false; + + aiguillage[index].adresse:=i; + tablo_index_aiguillage[i]:=index; + aiguillage[index].modifie:=true; + s:=encode_aig(index); + formconfig.ListBoxAig.items[index-1]:=s; + formconfig.ListBoxAig.selected[ligneclicAig]:=true; + + // modif homologue + adr2:=aiguillage[index].Ddroit; + index:=index_aig(adr2); + if index<>0 then + begin + aiguillage[index].dDroit:=i; + aiguillage[index].dDevie:=i; + s:=encode_aig(index); + formconfig.ListBoxAig.items[index-1]:=s; + end; + ListBoxSig.selected[ligneClicSig]:=true; + end; + end; +end; + +procedure TFormConfig.EditAdrAigExit(Sender: TObject); +begin + exit; + change_adr_aig; +end; + + +procedure TFormConfig.EditAdrAigChange(Sender: TObject); + var i : integer; +begin + i:=ligneclicAig+1; + if (i<1) or (i>MaxAiguillage) then exit; + change_adr_aig; +end; + end. diff --git a/UnitConfigCellTCO.pas b/UnitConfigCellTCO.pas index a665255..fae281d 100644 --- a/UnitConfigCellTCO.pas +++ b/UnitConfigCellTCO.pas @@ -457,6 +457,7 @@ var i : integer; c : tcomponent; begin // fenetre toujours dessus + position:=poMainFormCenter; if affevt then Affiche('FormConfCellTCO create',clyellow); actualize:=false; SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0,SWP_NoMove or SWP_NoSize); diff --git a/UnitConfigTCO.pas b/UnitConfigTCO.pas index 75fb247..e772b4e 100644 --- a/UnitConfigTCO.pas +++ b/UnitConfigTCO.pas @@ -550,6 +550,7 @@ var i : integer; c : tcomponent; begin if debug=1 then Affiche('Création fenetre configTCO',clLime); + position:=poMainFormCenter; for i:=0 to stringGridTCO.RowCount - 1 do with stringGridTCO do begin diff --git a/UnitDebug.pas b/UnitDebug.pas index 7f5b07c..bb8c67f 100644 --- a/UnitDebug.pas +++ b/UnitDebug.pas @@ -657,7 +657,6 @@ begin end; procedure TFormDebug.ButtonReserveClick(Sender: TObject); -var i,adr,erreur,AncDebug,det1,det2 : integer; begin {Val(EditSigSuiv.Text,Adr,erreur); if erreur<>0 then exit; ancdebug:=NivDebug; diff --git a/UnitPilote.dfm b/UnitPilote.dfm index da87211..feca56f 100644 --- a/UnitPilote.dfm +++ b/UnitPilote.dfm @@ -1,6 +1,6 @@ object FormPilote: TFormPilote - Left = 464 - Top = 227 + Left = 465 + Top = 228 BorderStyle = bsDialog Caption = 'Pilotage' ClientHeight = 350 diff --git a/UnitPilote.pas b/UnitPilote.pas index 39d6b51..dfb892e 100644 --- a/UnitPilote.pas +++ b/UnitPilote.pas @@ -132,7 +132,7 @@ begin case Signaux[i].aspect of // feux de signalisation 2 : dessine_signal2(Vcanvas,0,0,1,1,EtatFeupilote,1); - 3 : dessine_signal3(Vcanvas,0,0,1,1,EtatFeupilote,AncienEtat,1); + 3 : dessine_signal3(Vcanvas,0,0,1,1,EtatFeupilote,1); 4 : dessine_signal4(VCanvas,0,0,1,1,EtatFeupilote,1); 5 : dessine_signal5(VCanvas,0,0,1,1,EtatFeupilote,1); 7 : dessine_signal7(VCanvas,0,0,1,1,EtatFeupilote,1); @@ -274,6 +274,7 @@ procedure couleurs_pilote; var i : integer; c : tcomponent; begin + {$IFNDEF DELPHI11} if sombre then with formPilote do begin Color:=Couleurfond; @@ -283,10 +284,12 @@ begin composant(c,couleurFond,couleurTexte); end; end; + {$ENDIF} end; procedure TFormPilote.FormCreate(Sender: TObject); begin + position:=poMainFormCenter; couleurs_pilote; end; diff --git a/UnitPrinc.dfm b/UnitPrinc.dfm index e9fda08..9277635 100644 --- a/UnitPrinc.dfm +++ b/UnitPrinc.dfm @@ -1,6 +1,6 @@ object FormPrinc: TFormPrinc - Left = 112 - Top = 157 + Left = 107 + Top = 204 Width = 1149 Height = 689 Anchors = [akLeft, akTop, akRight] @@ -19,8 +19,8 @@ object FormPrinc: TFormPrinc OnCreate = FormCreate OnResize = FormResize DesignSize = ( - 1141 - 638) + 1133 + 631) PixelsPerInch = 96 TextHeight = 13 object LabelTitre: TLabel @@ -1429,8 +1429,8 @@ object FormPrinc: TFormPrinc end object StatusBar1: TStatusBar Left = 0 - Top = 616 - Width = 1141 + Top = 609 + Width = 1133 Height = 22 Panels = < item @@ -2102,7 +2102,7 @@ object FormPrinc: TFormPrinc Caption = 'Afficher' object Affichagenormal1: TMenuItem Caption = 'Affichage normal' - Hint = 'Permet de r'#233'cup'#233'r'#233'r l'#39'affichage en deux parties' + Hint = 'Permet de r'#233'cup'#233'rer l'#39'affichage en deux parties' OnClick = Affichagenormal1Click end object Sauvegarderla1: TMenuItem diff --git a/UnitPrinc.pas b/UnitPrinc.pas index 2d935ce..7384121 100644 --- a/UnitPrinc.pas +++ b/UnitPrinc.pas @@ -1,5 +1,5 @@ Unit UnitPrinc; -// 11/1 16h +// 25/1 22h (******************************************** Programme signaux complexes Graphique Lenz Delphi 7 + activeX Tmscomm + clientSocket @@ -56,14 +56,17 @@ Unit UnitPrinc; //{$Q-} // pas de vérification du débordement des opérations de calcul //{$R-} // pas de vérification des limites d'index du tableau et des variables - interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, OleCtrls, ExtCtrls, jpeg, ComCtrls, ShellAPI, TlHelp32, ImgList, ScktComp, StrUtils, Menus, ActnList, MSCommLib_TLB, MMSystem , - Buttons, NB30, comObj, activeX; + Buttons, NB30, comObj, activeX + {$IF CompilerVersion >= 28.0} + ,Vcl.Themes + {$IFEND} + ; type TFormPrinc = class(TForm) @@ -463,6 +466,7 @@ TBranche = record Taiguillage = record Adresse : integer; // adresse de l'aiguillage + AncienAdresse : integer; modele : TEquipement; // rien, aig, tjd ... position, // position actuelle : 1=dévié 2=droit (centrale LENZ) posInit, // position d'initialisation 1=dévié 2=droit 9=non positionné @@ -471,17 +475,17 @@ Taiguillage = record InversionCDM : integer ; // pour les aiguillages déclarés inversés dans CDM, utilisé en mode autonome (paramètre I1) vitesse : integer; // vitesse de franchissement de l'aiguillage en position déviée (60 ou 90) AdrTrain : integer; // adresse du train qui a réservé l'aiguillage - ADroit : integer ; // adresse (TJD:identifiant extérieur) connecté sur la position droite en talon + ADroit : integer ; // adresse (TJD:identifiant extérieur) connecté sur la position droite en talon ADroitB : char ; // P D S Z - ADevie : integer ; // adresse (TJD:identifiant extérieur) adresse de l'élément connecté en position déviée + ADevie : integer ; // adresse (TJD:identifiant extérieur) adresse de l'élément connecté en position déviée ADevieB : char; // caractère (D ou S)si aiguillage de l'élément connecté en position déviée - APointe : integer; // adresse de l'élément connecté en position droite ; + APointe : integer; // adresse de l'élément connecté en position droite ; APointeB : char; // P D S Z - DDroit : integer; // destination de la TJD en position droite + DDroit : integer; // destination de la TJD en position droite DDroitB : char ; - DDevie : integer; // destination de la TJD en position déviée ou 2eme adresse de la TJD + DDevie : integer; // destination de la TJD en position déviée ou 2eme adresse de la TJD DDevieB : char ; - tjsint : integer; // pour TJS + tjsint : integer; // pour TJS tjsintb : char ; // éléments connectés sur la branche déviée 2 (cas d'un aiguillage triple) Adevie2 : integer; @@ -507,7 +511,7 @@ TSignal = record contrevoie : boolean; // signal de contrevoie (SNCB) Verscontrevoie : boolean; // signal vers contrevoie (SNCB) FeuBlanc : boolean ; // avec checkbox ou pas - decodeur : integer; // type du décodeur // 'rien','DigitalBahn','CDF','LDT','LEB','Digikeijs','Unisemaf','SR' + decodeur : integer; // type du décodeur // 'rien','DigitalBahn','CDF','LS-DEC-SNCF','LEB','Digikeijs','Unisemaf','SR','Arcomora',LS_DEC_NMBS,Bmodels, puis les perso Adr_det1 : integer; // adresse du détecteur1 sur lequel il est implanté Adr_det2 : integer; // adresse du détecteur2 sur lequel il est implanté (si un signal est pour plusieurs voies) Adr_det3 : integer; // adresse du détecteur3 sur lequel il est implanté (si un signal est pour plusieurs voies) @@ -525,6 +529,7 @@ TSignal = record modifie : boolean; // feu modifié EtatSignal : word ; // état du signal AncienEtat : word ; // ancien état du signal + AncienAff : word ; // état ancien affichage UniSemaf : integer ; // définition supplémentaire de la cible pour les décodeurs UNISEMAF AigDirection : array[1..7] of array of record // pour les signaux directionnels : contient la liste des aiguillages associés Adresse : integer; // 6 feux max associés à un tableau dynamique décrivant les aiguillages +1 position 0 @@ -792,7 +797,7 @@ var function Index_Signal(adresse : integer) : integer; function Index_Aig(adresse : integer) : integer; procedure dessine_signal2(Acanvas : Tcanvas;x,y : integer;frX,frY : real;EtatSignal : word;orientation : integer); -procedure dessine_signal3(Acanvas : Tcanvas;x,y : integer;frX,frY : real;EtatSignal,AncienEtat : word;orientation : integer); +procedure dessine_signal3(Acanvas : Tcanvas;x,y : integer;frX,frY : real;EtatSignal : word;orientation : integer); procedure dessine_signal4(Acanvas : Tcanvas;x,y : integer;frX,frY : real;EtatSignal : word;orientation : integer); procedure dessine_signal5(Acanvas : Tcanvas;x,y : integer;frX,frY : real;EtatSignal : word;orientation : integer); procedure dessine_signal7(Acanvas : Tcanvas;x,y : integer;frX,frY : real;EtatSignal : word;orientation : integer); @@ -868,6 +873,7 @@ procedure maj_couleurs; procedure AffTexteIncliBordeTexture(c : TCanvas; x,y : integer; Fonte : tFont; clBord : TColor; EpBord : integer; PenMode : TPenMode; Texture : tBitMap; texte : string; AngleDD : longint); +procedure change_style; implementation @@ -891,6 +897,24 @@ begin end; } +// change le style en fonction de Style_aff +// Cette procédure doit être appellée depuis le module principal UnitPrinc +procedure change_style; +begin + {$IF CompilerVersion >= 28.0} + if Ancien_Style<>Style_Aff then + begin + TStyleManager.TrySetStyle(TStyleManager.StyleNames[0]); // repasse en windows pour éviter exception + TStyleManager.TrySetStyle(TStyleManager.StyleNames[Style_Aff]); + // permet que le richedit affiche en couleurs + Formprinc.FenRich.StyleName:='Windows'; + if formDebug<>nil then FormDebug.RichDebug.StyleName:='Windows'; + if formConfig<>nil then FormConfig.RichBranche.StyleName:='Windows'; + Ancien_style:=Style_aff; + end; + {$IFEND} +end; + procedure procetape(s : string); begin if debug<>2 then exit; @@ -900,7 +924,6 @@ end; procedure Tformprinc.DoHint(Sender : Tobject); // le sender est tApplication var s,nomForm: string; - c : tcomponent; FormeTCO : boolean; begin s:=Application.Hint; // texte du hint @@ -1145,14 +1168,88 @@ begin end; // dessine les feux sur une cible à 3 feux -procedure dessine_signal3(Acanvas : Tcanvas;x,y : integer;frX,frY : real;EtatSignal,AncienEtat : word;orientation : integer); +procedure dessine_signal3x(Acanvas : Tcanvas;x,y : integer;frX,frY : real;EtatSignal : word;orientation,index : integer); var Temp,rayon,xSem,Ysem,xJaune,Yjaune,Xvert,Yvert, - LgImage,HtImage,code,combine,AncCode,AncCombine : integer; + LgImage,HtImage,code,combine : integer; + ech : real; +begin + code_to_aspect(Etatsignal,code,combine); + // Affiche('nouveau='+intToSTR(Etatsignal)+' ancien='+intToSTR(ancienEtat),clred); + + rayon:=round(6*frX); + + with Formprinc.Image3feux.Picture.Bitmap do + begin + LgImage:=Width; + HtImage:=Height; + end; + Xvert:=13; Yvert:=11; + xSem:=13; ySem:=22; + xJaune:=13; yJaune:=33; + + if (orientation=2) then + begin + ech:=frY;frY:=frX;FrX:=ech; + Temp:=HtImage-yjaune;YJaune:=XJaune;Xjaune:=Temp; + Temp:=HtImage-ySem;YSem:=XSem;XSem:=Temp; + Temp:=HtImage-yvert;Yvert:=Xvert;Xvert:=Temp; + end; + + if (orientation=3) then + begin + //rotation 90° vers la droite des signaux + ech:=frY;frY:=frX;FrX:=ech; + Temp:=LgImage-Xjaune;XJaune:=YJaune;Yjaune:=Temp; + Temp:=LgImage-XSem;XSem:=YSem;YSem:=Temp; + Temp:=LgImage-Xvert;Xvert:=Yvert;Yvert:=Temp; + end; + + if (orientation=4) then + begin + //rotation 180° + Xjaune:=LgImage-Xjaune;YJaune:=HtImage-YJaune; + XSem:=LgImage-XSem; YSem:=HtImage-YSem; + XVert:=LgImage-Xvert; Yvert:=HtImage-Yvert; + end; + + + XJaune:=round(Xjaune*Frx)+x; YJaune:=round(Yjaune*Fry)+Y; + Xvert:=round(Xvert*FrX)+x; Yvert:=round(Yvert*FrY)+Y; + XSem:=round(XSem*FrX)+x; YSem:=round(YSem*FrY)+Y; + + + if signaux[index].AncienAff<>EtatSignal then + begin + Affiche('efface tout',clred); + cercle(ACanvas,xVert,yVert,rayon,GrisF); + cercle(ACanvas,xSem,ySem,rayon,GrisF); + cercle(ACanvas,xJaune,yJaune,rayon,GrisF); + signaux[index].AncienAff:=EtatSignal; + end; + + if (code=vert_cli) and not(clignotant) then cercle(ACanvas,xVert,yVert,rayon,GrisF); + if (code=jaune_cli) and not(clignotant) then cercle(ACanvas,xJaune,yJaune,rayon,GrisF); + if (code=semaphore_cli) and not(clignotant) then cercle(ACanvas,xSem,ySem,rayon,GrisF); + + if (code=vert_cli) and not(clignotant) then Affiche('efface vert',clred); + if (code=jaune_cli) and not(clignotant) then Affiche('efface jaune',clred); + if (code=semaphore_cli) and not(clignotant) then Affiche('efface rouge',clred); + + + // allumages + if ((code=vert_cli) and (clignotant)) or (code=vert) then cercle(ACanvas,xVert,yVert,rayon,clGreen); + if ((code=jaune_cli) and (clignotant)) or (code=jaune) then cercle(Acanvas,xJaune,yJaune,rayon,clOrange); + if ((code=semaphore_cli) and (clignotant)) or (code=semaphore) then cercle(ACanvas,xSem,ySem,rayon,clRed); +end; + +// dessine les feux sur une cible à 3 feux +procedure dessine_signal3(Acanvas : Tcanvas;x,y : integer;frX,frY : real;EtatSignal : word;orientation : integer); +var Temp,rayon,xSem,Ysem,xJaune,Yjaune,Xvert,Yvert, + LgImage,HtImage,code,combine,AncCode : integer; ech : real; begin // Affiche('dessine_feu3',clred); code_to_aspect(Etatsignal,code,combine); - code_to_aspect(AncienEtat,Anccode,Anccombine); //Affiche(intToSTR(ancienEtat),clred); rayon:=round(6*frX); @@ -1216,6 +1313,7 @@ begin if ((code=semaphore_cli) and (clignotant)) or (code=semaphore) then cercle(ACanvas,xSem,ySem,rayon,clRed); end; + // dessine les feux sur une cible à 4 feux // orientation=1 vertical procedure dessine_signal4(Acanvas : Tcanvas;x,y : integer;frX,frY : real;EtatSignal : word;orientation : integer); @@ -2178,7 +2276,7 @@ begin case aspect of // signaux 2 : dessine_signal2(CanvasDest,x,y,frx,fry,Signaux[i].EtatSignal,orientation); - 3 : dessine_signal3(CanvasDest,x,y,frx,fry,Signaux[i].EtatSignal,Signaux[i].AncienEtat,orientation); // essai + 3 : dessine_signal3(CanvasDest,x,y,frx,fry,Signaux[i].EtatSignal,orientation); 4 : dessine_signal4(CanvasDest,x,y,frx,fry,Signaux[i].EtatSignal,orientation); 5 : dessine_signal5(CanvasDest,x,y,frx,fry,Signaux[i].EtatSignal,orientation); 7 : dessine_signal7(CanvasDest,x,y,frx,fry,Signaux[i].EtatSignal,orientation); @@ -2503,7 +2601,11 @@ begin Sleep(TempoOctet); end; end; - if (prot_serie=0) then FormPrinc.MSCommUSBInterface.Output:=s; + if (prot_serie=0) then + begin + FormPrinc.MSCommUSBInterface.Output:=s; + Sleep(TempoOctet); + end; end; // par socket (ethernet) @@ -10800,7 +10902,7 @@ end; procedure Event_Aig(adresse,pos : integer); var s: string; faire_event,inv,bjd : boolean; - AdrCDM,prov,index,i,id,etatact,typ,adr : integer; + prov,index,i,id,etatact,typ,adr : integer; begin if AffAigDet then AfficheDebug('Tick='+IntToSTR(tick)+' Event Aig '+intToSTR(adresse)+'='+intToSTR(pos),clorange); index:=index_aig(adresse); @@ -10956,7 +11058,11 @@ var groupe,temp,indexAig,AdrTrain : integer ; s : string; begin //Affiche(IntToSTR(adresse)+' '+intToSTr(octet),clYellow); - + if adresse=0 then + begin + result:=false; + exit; + end; pilotage:=octet; // test si pilotage aiguillage inversé if (acc=aigP) then @@ -11962,8 +12068,7 @@ function com_socket(i : integer) : integer; var s : string; begin result:=0; - if i>NbMaxi_Periph then exit; - + if (i=0) or (i>NbMaxi_Periph) then exit; s:=Tablo_periph[i].protocole; if pos('COM',uppercase(s))<>0 then result:=1; if Ipok(s) then result:=2; @@ -12736,11 +12841,9 @@ var cGB : TGroupBox; cCB : tComboBox; cPa : tPanel; cLa : tLabel; - cSc : tScrollBox; cSB : tcheckBox; cSh : tShape; cMe : tMemo; - cBu : Tbutton; cRa : tRadioGroup; cRb : tRadioButton; begin @@ -12873,8 +12976,11 @@ procedure TFormPrinc.FormCreate(Sender: TObject); var n,t,i,index,OrgMilieu : integer; s : string; begin - AF:='Client TCP-IP CDM Rail ou USB - système XpressNet DCC++ Version '+Version+sousVersion; - Caption:=AF; + af:='Client TCP-IP ou USB CDM Rail - système XpressNet DCC++ Version '+Version+sousVersion; + {$IF CompilerVersion >= 28.0} + af:=af+' D11'; + {$IFEND} + Caption:=af; TraceSign:=True; configPrete:=false; // form config prete PremierFD:=false; @@ -13365,6 +13471,9 @@ begin //Affiche(GetMACAddress,clred); //formPrinc.left:=-1000; ConfCellTCO:=false; + + + if debug=1 then Affiche('Fini',clLime); end; @@ -15238,6 +15347,9 @@ begin if ConfigPrete then begin formconfig.showmodal; + {$IF CompilerVersion >= 28.0} + change_style; + {$IFEND} // ne pas faire close : déja provoqué par le self de la fermeture end; end; @@ -15366,14 +15478,15 @@ procedure TFormPrinc.ButtonAffTCOClick(Sender: TObject); var i : integer; begin for i:=1 to NbreTCO do - begin + { begin if formTCO[i]<>nil then begin formTCO[i].windowState:=wsNormal; //Maximized; formTCO[i].show; formTCO[i].BringToFront; - end; - end; + end; + end;} + Affiche_Fenetre_TCO(i,true); end; procedure TFormPrinc.ButtonLanceCDMClick(Sender: TObject); @@ -15528,9 +15641,16 @@ end; procedure TFormPrinc.Apropos1Click(Sender: TObject); var i,t,t1 : integer; + s: string; begin Affiche(' ',clyellow); - Affiche('Signaux complexes GL version '+version+sousVersion+' (C) 2022-24 F1IWQ Gily TDR',clWhite); + s:='Signaux complexes GL version '+version+sousVersion; + {$IF CompilerVersion >= 28.0} + s:=s+' D11'; + {$IFEND} + s:=s+' (C) 2022-24 F1IWQ Gily TDR'; + Affiche(s,clWhite); + Affiche('Double cliquez sur un des liens ci-dessous',clWhite); FenRich.SelStart:=length(FenRich.Text); @@ -16277,15 +16397,7 @@ end; procedure TFormPrinc.AffichertouslesTCO1Click(Sender: TObject); var i : integer; begin - for i:=1 to NbreTCO do - begin - if formTCO[i]<>nil then - begin - formTCO[i].windowState:=wsNormal; //Maximized; - formTCO[i].show; - formTCO[i].BringToFront; - end; - end; + for i:=1 to NbreTCO do Affiche_fenetre_TCO(i,true); end; procedure mosaiqueH; @@ -16585,9 +16697,12 @@ begin formTCO[i].Left:=Ecran[e].x0; formTCO[i].Top:=Ecran[e].y0; - formTCO[i].windowState:=wsMaximized; formTCO[i].BringToFront; + // pour maximiser la fenêtre, obligé de faire wsnormal avant + formTCO[i].windowState:=wsNormal; + formTCO[i].windowState:=wsMaximized; + if not(laisseOuvert) then formTCO[i].Close; // .. et si on en veut pas, on la ferme. end; @@ -17338,6 +17453,8 @@ end; + + end. diff --git a/UnitSR.pas b/UnitSR.pas index b4d2363..8209891 100644 --- a/UnitSR.pas +++ b/UnitSR.pas @@ -482,8 +482,8 @@ end; procedure TFormSR.FormCreate(Sender: TObject); var i : integer; - c : tcomponent; begin + position:=poMainFormCenter; for i:=0 to 19 do begin ComboBoxAdr1.items.add(etats[i]); diff --git a/UnitTCO.dfm b/UnitTCO.dfm index 05b8665..45d39b6 100644 --- a/UnitTCO.dfm +++ b/UnitTCO.dfm @@ -1,6 +1,6 @@ object FormTCO: TFormTCO - Left = 83 - Top = 123 + Left = 65 + Top = 39 Width = 1212 Height = 661 VertScrollBar.Visible = False @@ -24,8 +24,8 @@ object FormTCO: TFormTCO OnKeyPress = FormKeyPress OnMouseWheel = FormMouseWheel DesignSize = ( - 1196 - 602) + 1204 + 610) PixelsPerInch = 96 TextHeight = 13 object LabelZoom: TLabel @@ -110,7 +110,7 @@ object FormTCO: TFormTCO object PanelBas: TPanel Left = 2 Top = 461 - Width = 1143 + Width = 1199 Height = 140 Anchors = [akLeft, akRight, akBottom] Color = clActiveBorder @@ -123,7 +123,7 @@ object FormTCO: TFormTCO TabOrder = 2 OnDragOver = PanelBasDragOver DesignSize = ( - 1143 + 1199 140) object Label1: TLabel Left = 240 @@ -906,11 +906,11 @@ object FormTCO: TFormTCO ParentFont = False end object ButtonSauveTCO: TButton - Left = 1037 + Left = 1090 Top = 8 Width = 96 Height = 33 - Anchors = [akTop] + Anchors = [akTop, akRight] Caption = 'Sauvegarder TCO' TabOrder = 0 TabStop = False @@ -918,18 +918,18 @@ object FormTCO: TFormTCO OnClick = ButtonSauveTCOClick end object ButtonConfigTCO: TButton - Left = 1037 + Left = 1090 Top = 48 Width = 96 Height = 33 - Anchors = [akTop] + Anchors = [akTop, akRight] Caption = 'Configuration TCO' TabOrder = 1 TabStop = False OnClick = ButtonConfigTCOClick end object ButtonSimu: TButton - Left = 822 + Left = 878 Top = 80 Width = 113 Height = 25 @@ -940,11 +940,11 @@ object FormTCO: TFormTCO OnClick = ButtonSimuClick end object ButtonMasquer: TButton - Left = 1037 + Left = 1090 Top = 88 Width = 96 Height = 33 - Anchors = [akTop] + Anchors = [akTop, akRight] Caption = 'Masquer bandeau' TabOrder = 3 TabStop = False @@ -1134,7 +1134,7 @@ object FormTCO: TFormTCO end end object buttonRaz: TButton - Left = 931 + Left = 987 Top = 88 Width = 97 Height = 33 @@ -1146,7 +1146,7 @@ object FormTCO: TFormTCO OnClick = buttonRazClick end object ButtonCalibrage: TButton - Left = 862 + Left = 918 Top = 56 Width = 75 Height = 25 @@ -1157,7 +1157,7 @@ object FormTCO: TFormTCO OnClick = ButtonCalibrageClick end object ButtonDessiner: TButton - Left = 931 + Left = 987 Top = 48 Width = 97 Height = 33 @@ -1173,7 +1173,7 @@ object FormTCO: TFormTCO OnClick = ButtonDessinerClick end object ButtonAffSC: TButton - Left = 931 + Left = 987 Top = 8 Width = 97 Height = 33 @@ -1185,7 +1185,7 @@ object FormTCO: TFormTCO OnClick = ButtonAffSCClick end object RadioGroupSel: TRadioGroup - Left = 783 + Left = 839 Top = 8 Width = 138 Height = 49 diff --git a/Unitplace.pas b/Unitplace.pas index b413885..bce6d93 100644 --- a/Unitplace.pas +++ b/Unitplace.pas @@ -546,10 +546,9 @@ begin end; procedure TFormPlace.FormCreate(Sender: TObject); -var c : tcomponent; - i : integer; begin if debug=1 then Affiche('Début création fenetre Place',clLime); + position:=poMainFormCenter; PlaceAffiche:=true; couleurs_place; if debug=1 then Affiche('Fin création fenetre Place',clLime); diff --git a/reseau_gily_signal_ajoute_top.cdm b/reseau_gily_signal_ajoute_top.cdm index 8e44c2b..ee5d51a 100644 --- a/reseau_gily_signal_ajoute_top.cdm +++ b/reseau_gily_signal_ajoute_top.cdm @@ -8,7 +8,7 @@ Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 lXc=24160 lYc=8709 Longueur=0 longueurDev=0 DeltaDev=0 CurveOffset=-1 xc0=0 yc0=-1 DeltaDev2=0 xc=0 yc=-1 -Adresse=126 Adresse2=0 Duree=0 +Adresse=0 Adresse2=0 Duree=0 Port=3 port x=27731 y=12280 z=0 Angle=13500 Local=0 Connecte=1 ConnecteAuPort=15 ConnecteAuSegment=13 @@ -160,7 +160,7 @@ Adresse=0 Adresse2=0 Duree=0 Location=2 Adresse=518 Status=1 Segment=172 arc -Nport=2 Nperiph=4 Ninter=0 +Nport=2 Nperiph=2 Ninter=0 Xmin=-2817 Ymin=3909 Xmax=1081 Ymax=5992 StartAngle=-13500 ArcAngle=4500 Rayon=4380 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -177,15 +177,9 @@ Adresse=0 Adresse2=0 Duree=0 Periph=2271 Type=signal Pere=172 x=-731 y=4543 z=0 Angle=-10881 Bright=0 Bdown=0 Location=58 Adresse=47 Status=1 - Periph=2272 Type=detector Pere=172 x=-731 y=4543 z=0 - Angle=-10881 Bright=0 Bdown=0 - Location=58 Adresse=0 Status=0 Periph=2757 Type=detector Pere=172 x=-731 y=4543 z=0 Angle=-10907 Bright=1 Bdown=1 Location=58 Adresse=518 Status=1 - Periph=4544 Type=actuator Pere=172 x=-212 y=4401 z=0 - Angle=-10176 Bright=0 Bdown=0 - Location=73 Adresse=817 Status=23 Segment=202 crossing Nport=4 Nperiph=0 Ninter=0 @@ -210,7 +204,7 @@ Adresse=100 Adresse2=0 Duree=0 ConnecteAuPort=2102 ConnecteAuSegment=2099 Segment=213 straight -Nport=2 Nperiph=3 Ninter=0 +Nport=2 Nperiph=2 Ninter=0 Xmin=3641 Ymin=3909 Xmax=7791 Ymax=4709 StartAngle=0 ArcAngle=0 Rayon=0 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -227,15 +221,12 @@ Adresse=0 Adresse2=0 Duree=0 Periph=966 Type=signal Pere=213 x=5232 y=4309 z=0 Angle=-9000 Bright=1 Bdown=1 Location=35 Adresse=0 Status=0 - Periph=967 Type=detector Pere=213 x=5232 y=4309 z=0 - Angle=-9000 Bright=1 Bdown=1 - Location=35 Adresse=0 Status=0 Periph=4542 Type=actuator Pere=213 x=4816 y=4309 z=0 Angle=-9000 Bright=0 Bdown=0 Location=23 Adresse=813 Status=23 Segment=218 straight -Nport=2 Nperiph=4 Ninter=0 +Nport=2 Nperiph=2 Ninter=0 Xmin=2028 Ymin=3253 Xmax=6178 Ymax=4054 StartAngle=0 ArcAngle=0 Rayon=0 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -252,15 +243,9 @@ Adresse=0 Adresse2=0 Duree=0 Periph=2259 Type=signal Pere=218 x=2865 y=3654 z=0 Angle=-9002 Bright=0 Bdown=1 Location=13 Adresse=57 Status=1 - Periph=2260 Type=detector Pere=218 x=2865 y=3654 z=0 - Angle=-9002 Bright=0 Bdown=1 - Location=13 Adresse=0 Status=0 Periph=3655 Type=actuator Pere=218 x=2718 y=3654 z=0 Angle=-9002 Bright=1 Bdown=1 Location=8 Adresse=808 Status=23 - Periph=2758 Type=detector Pere=218 x=3930 y=3654 z=0 - Angle=-9002 Bright=0 Bdown=0 - Location=44 Adresse=519 Status=1 Segment=257 straight Nport=2 Nperiph=0 Ninter=0 @@ -298,7 +283,7 @@ Adresse=0 Adresse2=0 Duree=0 Location=33 Adresse=523 Status=1 Segment=266 arc -Nport=2 Nperiph=3 Ninter=0 +Nport=2 Nperiph=2 Ninter=0 Xmin=27331 Ymin=1389 Xmax=29610 Ymax=5760 StartAngle=-4500 ArcAngle=4500 Rayon=5050 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -315,9 +300,6 @@ Adresse=0 Adresse2=0 Duree=0 Periph=1534 Type=signal Pere=266 x=28724 y=3197 z=0 Angle=-2536 Bright=1 Bdown=0 Location=43 Adresse=0 Status=0 - Periph=1535 Type=detector Pere=266 x=28724 y=3197 z=0 - Angle=-2536 Bright=1 Bdown=0 - Location=43 Adresse=0 Status=0 Periph=3656 Type=actuator Pere=266 x=29052 y=4102 z=0 Angle=-1442 Bright=1 Bdown=1 Location=67 Adresse=812 Status=23 @@ -339,7 +321,7 @@ Adresse=0 Adresse2=0 Duree=0 ConnecteAuPort=267 ConnecteAuSegment=266 Segment=275 arc -Nport=2 Nperiph=4 Ninter=0 +Nport=2 Nperiph=2 Ninter=0 Xmin=26847 Ymin=1843 Xmax=28930 Ymax=5740 StartAngle=-4500 ArcAngle=4500 Rayon=4380 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -356,15 +338,9 @@ Adresse=0 Adresse2=0 Duree=0 Periph=2273 Type=signal Pere=275 x=28523 y=5097 z=0 Angle=-318 Bright=0 Bdown=0 Location=92 Adresse=53 Status=1 - Periph=2274 Type=detector Pere=275 x=28523 y=5097 z=0 - Angle=-318 Bright=0 Bdown=0 - Location=92 Adresse=0 Status=0 Periph=2749 Type=detector Pere=275 x=28358 y=4126 z=0 Angle=-1661 Bright=1 Bdown=1 Location=64 Adresse=526 Status=1 - Periph=5500 Type=actuator Pere=275 x=28377 y=4193 z=0 - Angle=-1518 Bright=1 Bdown=0 - Location=66 Adresse=820 Status=23 Segment=278 arc Nport=2 Nperiph=0 Ninter=0 @@ -421,7 +397,7 @@ Adresse=0 Adresse2=0 Duree=0 Location=49 Adresse=526 Status=1 Segment=287 straight -Nport=2 Nperiph=2 Ninter=0 +Nport=2 Nperiph=1 Ninter=0 Xmin=10178 Ymin=3250 Xmax=14328 Ymax=4051 StartAngle=0 ArcAngle=0 Rayon=0 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -438,9 +414,6 @@ Adresse=0 Adresse2=0 Duree=0 Periph=1674 Type=signal Pere=287 x=13569 y=3650 z=0 Angle=-9002 Bright=0 Bdown=0 Location=89 Adresse=0 Status=0 - Periph=1675 Type=detector Pere=287 x=13569 y=3650 z=0 - Angle=-9002 Bright=0 Bdown=0 - Location=89 Adresse=0 Status=0 Segment=295 straight Nport=2 Nperiph=1 Ninter=0 @@ -462,7 +435,7 @@ Adresse=0 Adresse2=0 Duree=0 Location=97 Adresse=523 Status=1 Segment=298 arc -Nport=2 Nperiph=5 Ninter=0 +Nport=2 Nperiph=3 Ninter=0 Xmin=17041 Ymin=2822 Xmax=20464 Ymax=4709 StartAngle=4500 ArcAngle=4500 Rayon=3710 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -479,15 +452,9 @@ Adresse=0 Adresse2=0 Duree=0 Periph=1722 Type=signal Pere=298 x=17945 y=4275 z=0 Angle=8220 Bright=0 Bdown=1 Location=82 Adresse=37 Status=1 - Periph=1723 Type=detector Pere=298 x=17945 y=4275 z=0 - Angle=8220 Bright=0 Bdown=1 - Location=82 Adresse=0 Status=0 Periph=2703 Type=signal Pere=298 x=17945 y=4275 z=0 Angle=8017 Bright=0 Bdown=0 Location=82 Adresse=0 Status=0 - Periph=2704 Type=detector Pere=298 x=17945 y=4275 z=0 - Angle=8017 Bright=0 Bdown=0 - Location=82 Adresse=0 Status=0 Periph=2774 Type=actuator Pere=298 x=18767 y=4064 z=0 Angle=6906 Bright=0 Bdown=1 Location=53 Adresse=801 Status=23 @@ -592,7 +559,7 @@ Adresse=11 Adresse2=0 Duree=2 MirrorZ=1000 MirrorParent=0 Segment=884 straight -Nport=2 Nperiph=3 Ninter=0 +Nport=2 Nperiph=2 Ninter=0 Xmin=3564 Ymin=9607 Xmax=10486 Ymax=13130 StartAngle=0 ArcAngle=0 Rayon=0 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -609,15 +576,12 @@ Adresse=0 Adresse2=0 Duree=0 Periph=1530 Type=signal Pere=884 x=5743 y=11939 z=0 Angle=6602 Bright=0 Bdown=0 Location=70 Adresse=0 Status=0 - Periph=1531 Type=detector Pere=884 x=5743 y=11939 z=0 - Angle=6602 Bright=0 Bdown=0 - Location=70 Adresse=0 Status=0 Periph=2772 Type=actuator Pere=884 x=4622 y=12437 z=0 Angle=6602 Bright=0 Bdown=1 Location=89 Adresse=802 Status=23 Segment=1016 straight -Nport=2 Nperiph=2 Ninter=0 +Nport=2 Nperiph=1 Ninter=0 Xmin=28810 Ymin=6640 Xmax=29610 Ymax=9110 StartAngle=0 ArcAngle=0 Rayon=0 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -634,9 +598,6 @@ Adresse=0 Adresse2=0 Duree=0 Periph=2275 Type=signal Pere=1016 x=29210 y=7843 z=0 Angle=18000 Bright=0 Bdown=0 Location=51 Adresse=77 Status=1 - Periph=2276 Type=detector Pere=1016 x=29210 y=7843 z=0 - Angle=18000 Bright=0 Bdown=0 - Location=51 Adresse=0 Status=0 Segment=1021 straight Nport=2 Nperiph=0 Ninter=0 @@ -655,7 +616,7 @@ Adresse=0 Adresse2=0 Duree=0 ConnecteAuPort=22 ConnecteAuSegment=20 Segment=1026 straight -Nport=2 Nperiph=3 Ninter=2 +Nport=2 Nperiph=2 Ninter=2 Xmin=18720 Ymin=13360 Xmax=24560 Ymax=14161 StartAngle=0 ArcAngle=0 Rayon=0 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -672,9 +633,6 @@ Adresse=0 Adresse2=0 Duree=0 Periph=1726 Type=signal Pere=1026 x=19187 y=13760 z=0 Angle=-8999 Bright=0 Bdown=0 Location=1 Adresse=49 Status=1 - Periph=1727 Type=detector Pere=1026 x=19187 y=13760 z=0 - Angle=-8999 Bright=0 Bdown=0 - Location=1 Adresse=0 Status=0 Periph=2762 Type=detector Pere=1026 x=21522 y=13760 z=0 Angle=-8999 Bright=1 Bdown=1 Location=47 Adresse=524 Status=1 @@ -684,7 +642,7 @@ Adresse=0 Adresse2=0 Duree=0 MirrorZ=1000 MirrorParent=0 Segment=1043 arc -Nport=2 Nperiph=3 Ninter=4 +Nport=2 Nperiph=2 Ninter=4 Xmin=25962 Ymin=6690 Xmax=28622 Ymax=9523 StartAngle=1996 ArcAngle=4500 Rayon=3600 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -701,9 +659,6 @@ Adresse=0 Adresse2=0 Duree=0 Periph=1737 Type=signal Pere=1043 x=27285 y=8502 z=0 Angle=4718 Bright=0 Bdown=1 Location=60 Adresse=0 Status=0 - Periph=1738 Type=detector Pere=1043 x=27285 y=8502 z=0 - Angle=4718 Bright=0 Bdown=1 - Location=60 Adresse=0 Status=0 Periph=3029 Type=actuator Pere=1043 x=28111 y=7360 z=0 Angle=2461 Bright=0 Bdown=0 Location=10 Adresse=810 Status=23 @@ -717,7 +672,7 @@ Adresse=0 Adresse2=0 Duree=0 MirrorZ=1000 MirrorParent=0 Segment=1090 straight -Nport=2 Nperiph=4 Ninter=0 +Nport=2 Nperiph=2 Ninter=0 Xmin=5315 Ymin=4577 Xmax=10245 Ymax=5377 StartAngle=0 ArcAngle=0 Rayon=0 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -734,18 +689,12 @@ Adresse=0 Adresse2=0 Duree=0 Periph=2263 Type=signal Pere=1090 x=6820 y=4977 z=0 Angle=-9000 Bright=0 Bdown=1 Location=26 Adresse=55 Status=1 - Periph=2264 Type=detector Pere=1090 x=6820 y=4977 z=0 - Angle=-9000 Bright=0 Bdown=1 - Location=26 Adresse=0 Status=0 Periph=2754 Type=detector Pere=1090 x=6820 y=4977 z=0 Angle=-9000 Bright=0 Bdown=0 Location=26 Adresse=515 Status=1 - Periph=4545 Type=actuator Pere=1090 x=5769 y=4977 z=0 - Angle=-9000 Bright=0 Bdown=1 - Location=1 Adresse=818 Status=23 Segment=1097 straight -Nport=2 Nperiph=4 Ninter=0 +Nport=2 Nperiph=2 Ninter=0 Xmin=5187 Ymin=5220 Xmax=8987 Ymax=6020 StartAngle=0 ArcAngle=0 Rayon=0 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -762,18 +711,12 @@ Adresse=0 Adresse2=0 Duree=0 Periph=2261 Type=signal Pere=1097 x=7760 y=5620 z=0 Angle=-9000 Bright=0 Bdown=1 Location=72 Adresse=0 Status=0 - Periph=2262 Type=detector Pere=1097 x=7760 y=5620 z=0 - Angle=-9000 Bright=0 Bdown=1 - Location=72 Adresse=0 Status=0 Periph=3017 Type=detector Pere=1097 x=5669 y=5620 z=0 Angle=-9000 Bright=0 Bdown=0 Location=2 Adresse=514 Status=1 - Periph=3030 Type=actuator Pere=1097 x=6219 y=5620 z=0 - Angle=-9000 Bright=0 Bdown=0 - Location=21 Adresse=816 Status=23 Segment=1145 straight -Nport=2 Nperiph=3 Ninter=0 +Nport=2 Nperiph=2 Ninter=0 Xmin=6739 Ymin=5863 Xmax=11539 Ymax=6663 StartAngle=0 ArcAngle=0 Rayon=0 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -790,9 +733,6 @@ Adresse=0 Adresse2=0 Duree=0 Periph=1858 Type=signal Pere=1145 x=8845 y=6263 z=0 Angle=-9000 Bright=0 Bdown=1 Location=42 Adresse=43 Status=1 - Periph=1859 Type=detector Pere=1145 x=8845 y=6263 z=0 - Angle=-9000 Bright=0 Bdown=1 - Location=42 Adresse=0 Status=0 Periph=3015 Type=detector Pere=1145 x=8845 y=6263 z=0 Angle=-9000 Bright=0 Bdown=0 Location=42 Adresse=516 Status=1 @@ -911,7 +851,7 @@ Adresse=0 Adresse2=0 Duree=0 MirrorZ=1000 MirrorParent=0 Segment=1335 curve -Nport=2 Nperiph=3 Ninter=0 +Nport=2 Nperiph=2 Ninter=0 Xmin=27222 Ymin=8820 Xmax=28930 Ymax=11812 StartAngle=4500 ArcAngle=-4500 Rayon=3100 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -928,9 +868,6 @@ Adresse=0 Adresse2=0 Duree=0 Periph=964 Type=signal Pere=1335 x=27898 y=11096 z=0 Angle=-14275 Bright=1 Bdown=0 Location=17 Adresse=0 Status=0 - Periph=965 Type=detector Pere=1335 x=27898 y=11096 z=0 - Angle=-14275 Bright=1 Bdown=0 - Location=17 Adresse=0 Status=0 Periph=3024 Type=actuator Pere=1335 x=28529 y=9295 z=0 Angle=-17861 Bright=1 Bdown=1 Location=96 Adresse=806 Status=23 @@ -1160,7 +1097,7 @@ Adresse=0 Adresse2=0 Duree=0 MirrorZ=0 MirrorParent=0 Segment=1449 straight -Nport=2 Nperiph=4 Ninter=0 +Nport=2 Nperiph=2 Ninter=0 Xmin=7110 Ymin=12026 Xmax=14607 Ymax=12826 StartAngle=0 ArcAngle=0 Rayon=0 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -1177,15 +1114,9 @@ Adresse=0 Adresse2=0 Duree=0 Periph=1532 Type=signal Pere=1449 x=8257 y=12426 z=0 Angle=9000 Bright=0 Bdown=0 Location=88 Adresse=59 Status=1 - Periph=1533 Type=detector Pere=1449 x=8257 y=12426 z=0 - Angle=9000 Bright=0 Bdown=0 - Location=88 Adresse=0 Status=0 Periph=3022 Type=actuator Pere=1449 x=8809 y=12426 z=0 Angle=9000 Bright=1 Bdown=0 Location=80 Adresse=804 Status=23 - Periph=2765 Type=detector Pere=1449 x=8257 y=12426 z=0 - Angle=9000 Bright=1 Bdown=1 - Location=88 Adresse=528 Status=1 Segment=1452 arc Nport=2 Nperiph=0 Ninter=0 @@ -1223,7 +1154,7 @@ Adresse=0 Adresse2=0 Duree=0 Location=97 Adresse=528 Status=1 Segment=1466 arc -Nport=2 Nperiph=4 Ninter=0 +Nport=2 Nperiph=2 Ninter=0 Xmin=19737 Ymin=4647 Xmax=21338 Ymax=5938 StartAngle=6602 ArcAngle=-1500 Rayon=3599 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -1240,15 +1171,9 @@ Adresse=0 Adresse2=0 Duree=0 Periph=7084 Type=signal Pere=1466 x=20799 y=5155 z=0 Angle=-12619 Bright=0 Bdown=0 Location=81 Adresse=41 Status=1 - Periph=7085 Type=detector Pere=1466 x=20799 y=5155 z=0 - Angle=-12619 Bright=0 Bdown=0 - Location=81 Adresse=0 Status=0 Periph=7088 Type=signal Pere=1466 x=20799 y=5155 z=0 Angle=-12631 Bright=0 Bdown=1 Location=81 Adresse=0 Status=0 - Periph=7089 Type=detector Pere=1466 x=20799 y=5155 z=0 - Angle=-12631 Bright=0 Bdown=1 - Location=81 Adresse=0 Status=0 Segment=1678 straight Nport=2 Nperiph=0 Ninter=0 @@ -1267,7 +1192,7 @@ Adresse=0 Adresse2=0 Duree=0 ConnecteAuPort=2189 ConnecteAuSegment=2188 Segment=1681 arc -Nport=2 Nperiph=2 Ninter=1 +Nport=2 Nperiph=1 Ninter=1 Xmin=16491 Ymin=5224 Xmax=20473 Ymax=7342 StartAngle=-9000 ArcAngle=4500 Rayon=4500 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -1284,9 +1209,6 @@ Adresse=0 Adresse2=0 Duree=0 Periph=2746 Type=detector Pere=1681 x=18015 y=5767 z=0 Angle=-7553 Bright=0 Bdown=0 Location=32 Adresse=522 Status=1 - Periph=3018 Type=detector Pere=1681 x=17297 y=5642 z=0 - Angle=-8283 Bright=1 Bdown=1 - Location=11 Adresse=514 Status=1 x=18890 y=6093 z=0 MirrorZ=1000 MirrorParent=0 @@ -1307,7 +1229,7 @@ Adresse=0 Adresse2=0 Duree=0 ConnecteAuPort=1872 ConnecteAuSegment=1867 Segment=1810 straight -Nport=2 Nperiph=2 Ninter=0 +Nport=2 Nperiph=1 Ninter=0 Xmin=2059 Ymin=5863 Xmax=5859 Ymax=6663 StartAngle=0 ArcAngle=0 Rayon=0 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -1324,12 +1246,9 @@ Adresse=0 Adresse2=0 Duree=0 Periph=1860 Type=signal Pere=1810 x=4752 y=6263 z=0 Angle=9000 Bright=0 Bdown=1 Location=23 Adresse=45 Status=1 - Periph=1861 Type=detector Pere=1810 x=4752 y=6263 z=0 - Angle=9000 Bright=0 Bdown=1 - Location=23 Adresse=0 Status=0 Segment=1862 arc -Nport=2 Nperiph=2 Ninter=3 +Nport=2 Nperiph=1 Ninter=3 Xmin=26081 Ymin=8754 Xmax=28554 Ymax=11227 StartAngle=2000 ArcAngle=5000 Rayon=2800 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -1346,9 +1265,6 @@ Adresse=0 Adresse2=0 Duree=0 Periph=2747 Type=detector Pere=1862 x=27278 y=10378 z=0 Angle=4961 Bright=0 Bdown=0 Location=62 Adresse=522 Status=1 - Periph=6125 Type=actuator Pere=1862 x=28130 y=9218 z=0 - Angle=2140 Bright=1 Bdown=1 - Location=2 Adresse=821 Status=23 x=27723 y=9928 z=0 MirrorZ=1000 MirrorParent=0 x=27726 y=9641 z=0 @@ -1373,7 +1289,7 @@ Adresse=0 Adresse2=0 Duree=0 ConnecteAuPort=1870 ConnecteAuSegment=1868 Segment=1868 curve -Nport=2 Nperiph=2 Ninter=0 +Nport=2 Nperiph=1 Ninter=0 Xmin=22839 Ymin=9708 Xmax=26881 Ymax=11413 StartAngle=13500 ArcAngle=-6500 Rayon=3090 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -1390,9 +1306,6 @@ Adresse=0 Adresse2=0 Duree=0 Periph=1526 Type=signal Pere=1868 x=23517 y=10354 z=0 Angle=-5188 Bright=0 Bdown=0 Location=10 Adresse=51 Status=1 - Periph=1527 Type=detector Pere=1868 x=23517 y=10354 z=0 - Angle=-5188 Bright=0 Bdown=0 - Location=10 Adresse=0 Status=0 Segment=1869 pre_curve Nport=2 Nperiph=0 Ninter=0 @@ -1544,7 +1457,7 @@ Adresse=7 Adresse2=0 Duree=3 ConnecteAuPort=6720 ConnecteAuSegment=6715 Segment=2137 straight -Nport=2 Nperiph=2 Ninter=0 +Nport=2 Nperiph=1 Ninter=0 Xmin=5378 Ymin=3251 Xmax=10978 Ymax=4053 StartAngle=0 ArcAngle=0 Rayon=0 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -1561,9 +1474,6 @@ Adresse=0 Adresse2=0 Duree=0 Periph=2759 Type=detector Pere=2137 x=9479 y=3651 z=0 Angle=-9002 Bright=1 Bdown=1 Location=77 Adresse=519 Status=1 - Periph=3657 Type=actuator Pere=2137 x=6765 y=3653 z=0 - Angle=-9002 Bright=1 Bdown=1 - Location=20 Adresse=800 Status=23 Segment=2144 straight Nport=2 Nperiph=0 Ninter=0 @@ -1630,7 +1540,7 @@ Adresse=0 Adresse2=0 Duree=0 ConnecteAuPort=2201 ConnecteAuSegment=2199 Segment=2199 curve -Nport=2 Nperiph=4 Ninter=0 +Nport=2 Nperiph=2 Ninter=0 Xmin=16688 Ymin=2084 Xmax=20295 Ymax=4048 StartAngle=8996 ArcAngle=-4496 Rayon=3973 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -1647,15 +1557,9 @@ Adresse=0 Adresse2=0 Duree=0 Periph=2776 Type=signal Pere=2199 x=18268 y=3468 z=0 Angle=-10733 Bright=0 Bdown=1 Location=38 Adresse=39 Status=1 - Periph=2777 Type=detector Pere=2199 x=18268 y=3468 z=0 - Angle=-10733 Bright=0 Bdown=1 - Location=38 Adresse=0 Status=0 Periph=3644 Type=detector Pere=2199 x=18268 y=3468 z=0 Angle=-10795 Bright=1 Bdown=0 Location=38 Adresse=527 Status=1 - Periph=7102 Type=actuator Pere=2199 x=18160 y=3500 z=0 - Angle=-10570 Bright=1 Bdown=1 - Location=34 Adresse=833 Status=23 Segment=2200 pre_curve Nport=2 Nperiph=0 Ninter=0 @@ -1728,7 +1632,7 @@ Adresse=0 Adresse2=0 Duree=0 ConnecteAuPort=3698 ConnecteAuSegment=3696 Segment=3696 curve -Nport=2 Nperiph=4 Ninter=0 +Nport=2 Nperiph=2 Ninter=0 Xmin=-2763 Ymin=11441 Xmax=-680 Ymax=13109 StartAngle=13500 ArcAngle=-2185 Rayon=4085 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -1745,15 +1649,9 @@ Adresse=0 Adresse2=0 Duree=0 Periph=3760 Type=signal Pere=3696 x=-1631 y=12422 z=0 Angle=-5813 Bright=1 Bdown=0 Location=60 Adresse=0 Status=0 - Periph=3761 Type=detector Pere=3696 x=-1631 y=12422 z=0 - Angle=-5813 Bright=1 Bdown=0 - Location=60 Adresse=0 Status=0 Periph=7100 Type=actuator Pere=3696 x=-1173 y=12668 z=0 Angle=-6542 Bright=0 Bdown=1 Location=93 Adresse=832 Status=23 - Periph=9948 Type=detector Pere=3696 x=-1631 y=12422 z=0 - Angle=-5681 Bright=1 Bdown=1 - Location=60 Adresse=531 Status=1 Segment=3697 pre_curve Nport=2 Nperiph=0 Ninter=0 @@ -1934,7 +1832,7 @@ Adresse=0 Adresse2=0 Duree=0 ConnecteAuPort=4884 ConnecteAuSegment=4882 Segment=4882 arc -Nport=2 Nperiph=3 Ninter=1 +Nport=2 Nperiph=2 Ninter=1 Xmin=23739 Ymin=9801 Xmax=27778 Ymax=12826 StartAngle=2102 ArcAngle=6898 Rayon=3469 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -1951,9 +1849,6 @@ Adresse=0 Adresse2=0 Duree=0 Periph=4901 Type=signal Pere=4882 x=25055 y=12303 z=0 Angle=7469 Bright=0 Bdown=1 Location=77 Adresse=0 Status=0 - Periph=4902 Type=detector Pere=4882 x=25055 y=12303 z=0 - Angle=7469 Bright=0 Bdown=1 - Location=77 Adresse=0 Status=0 Periph=4905 Type=actuator Pere=4882 x=26673 y=11326 z=0 Angle=4308 Bright=0 Bdown=0 Location=31 Adresse=819 Status=23 @@ -1961,7 +1856,7 @@ Adresse=0 Adresse2=0 Duree=0 MirrorZ=0 MirrorParent=0 Segment=4893 arc -Nport=2 Nperiph=3 Ninter=3 +Nport=2 Nperiph=2 Ninter=3 Xmin=23248 Ymin=10409 Xmax=27875 Ymax=13838 StartAngle=2102 ArcAngle=6898 Rayon=4100 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -1978,9 +1873,6 @@ Adresse=0 Adresse2=0 Duree=0 Periph=4903 Type=signal Pere=4893 x=25972 y=12716 z=0 Angle=5547 Bright=0 Bdown=1 Location=49 Adresse=0 Status=0 - Periph=4904 Type=detector Pere=4893 x=25972 y=12716 z=0 - Angle=5547 Bright=0 Bdown=1 - Location=49 Adresse=0 Status=0 Periph=7092 Type=actuator Pere=4893 x=27447 y=10881 z=0 Angle=2210 Bright=1 Bdown=0 Location=1 Adresse=830 Status=23 @@ -2142,7 +2034,7 @@ Adresse=0 Adresse2=0 Duree=0 MirrorZ=0 MirrorParent=0 Segment=6239 straight -Nport=2 Nperiph=5 Ninter=10 +Nport=2 Nperiph=3 Ninter=10 Xmin=3248 Ymin=13038 Xmax=14048 Ymax=13838 StartAngle=0 ArcAngle=0 Rayon=0 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -2159,15 +2051,9 @@ Adresse=0 Adresse2=0 Duree=0 Periph=7042 Type=signal Pere=6239 x=4798 y=13438 z=0 Angle=9000 Bright=0 Bdown=0 Location=88 Adresse=63 Status=1 - Periph=7043 Type=detector Pere=6239 x=4798 y=13438 z=0 - Angle=9000 Bright=0 Bdown=0 - Location=88 Adresse=535 Status=1 Periph=7062 Type=detector Pere=6239 x=13597 y=13438 z=0 Angle=9000 Bright=0 Bdown=0 Location=0 Adresse=535 Status=1 - Periph=7072 Type=signal Pere=6239 x=4798 y=13438 z=0 - Angle=9000 Bright=0 Bdown=1 - Location=88 Adresse=0 Status=0 Periph=7073 Type=detector Pere=6239 x=4798 y=13438 z=0 Angle=9000 Bright=0 Bdown=1 Location=88 Adresse=535 Status=1 @@ -2288,7 +2174,7 @@ Adresse=31 Adresse2=0 Duree=5 ConnecteAuPort=6256 ConnecteAuSegment=6254 Segment=6281 arc -Nport=2 Nperiph=4 Ninter=0 +Nport=2 Nperiph=2 Ninter=0 Xmin=-7803 Ymin=13725 Xmax=-3977 Ymax=16532 StartAngle=-11271 ArcAngle=-2169 Rayon=9650 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -2305,15 +2191,9 @@ Adresse=0 Adresse2=0 Duree=0 Periph=7056 Type=detector Pere=6281 x=-4486 y=14171 z=0 Angle=6626 Bright=1 Bdown=0 Location=3 Adresse=534 Status=1 - Periph=7097 Type=actuator Pere=6281 x=-5114 y=14470 z=0 - Angle=6246 Bright=0 Bdown=1 - Location=22 Adresse=827 Status=23 Periph=9830 Type=signal Pere=6281 x=-5525 y=14698 z=0 Angle=5967 Bright=0 Bdown=1 Location=35 Adresse=79 Status=1 - Periph=9831 Type=detector Pere=6281 x=-5525 y=14698 z=0 - Angle=5967 Bright=0 Bdown=1 - Location=35 Adresse=0 Status=0 Segment=6284 pre_curve Nport=2 Nperiph=0 Ninter=0 @@ -2506,7 +2386,7 @@ Adresse=0 Adresse2=0 Duree=0 Location=0 Adresse=533 Status=1 Segment=6460 curve -Nport=2 Nperiph=4 Ninter=0 +Nport=2 Nperiph=2 Ninter=0 Xmin=-17257 Ymin=16473 Xmax=-12896 Ymax=17947 StartAngle=6000 ArcAngle=4200 Rayon=5031 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -2523,15 +2403,9 @@ Adresse=0 Adresse2=0 Duree=0 Periph=7022 Type=signal Pere=6460 x=-15752 y=17547 z=0 Angle=8933 Bright=0 Bdown=0 Location=69 Adresse=71 Status=1 - Periph=7023 Type=detector Pere=6460 x=-15752 y=17547 z=0 - Angle=8933 Bright=0 Bdown=0 - Location=69 Adresse=0 Status=0 Periph=7054 Type=detector Pere=6460 x=-15253 y=17516 z=0 Angle=8363 Bright=1 Bdown=1 Location=56 Adresse=533 Status=1 - Periph=7096 Type=actuator Pere=6460 x=-15907 y=17546 z=0 - Angle=9109 Bright=0 Bdown=0 - Location=74 Adresse=831 Status=23 Segment=6461 pre_curve Nport=2 Nperiph=0 Ninter=0 @@ -2664,7 +2538,7 @@ Adresse=0 Adresse2=0 Duree=0 ConnecteAuPort=6709 ConnecteAuSegment=6706 Segment=6713 pre_curve -Nport=2 Nperiph=4 Ninter=0 +Nport=2 Nperiph=2 Ninter=0 Xmin=1318 Ymin=2467 Xmax=13616 Ymax=3267 StartAngle=0 ArcAngle=0 Rayon=0 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -2681,18 +2555,12 @@ Adresse=0 Adresse2=0 Duree=0 Periph=7038 Type=signal Pere=6713 x=2411 y=2867 z=0 Angle=-9000 Bright=0 Bdown=1 Location=6 Adresse=35 Status=1 - Periph=7039 Type=detector Pere=6713 x=2411 y=2867 z=0 - Angle=-9000 Bright=0 Bdown=1 - Location=6 Adresse=0 Status=0 Periph=7060 Type=detector Pere=6713 x=2411 y=2867 z=0 Angle=-9000 Bright=1 Bdown=0 Location=6 Adresse=520 Status=1 - Periph=7061 Type=detector Pere=6713 x=8678 y=2867 z=0 - Angle=-9000 Bright=0 Bdown=1 - Location=60 Adresse=520 Status=1 Segment=6714 curve -Nport=2 Nperiph=2 Ninter=0 +Nport=2 Nperiph=1 Ninter=0 Xmin=12816 Ymin=2467 Xmax=15756 Ymax=3692 StartAngle=-9000 ArcAngle=2247 Rayon=5598 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -2709,9 +2577,6 @@ Adresse=0 Adresse2=0 Duree=0 Periph=7064 Type=signal Pere=6714 x=14051 y=2930 z=0 Angle=-8142 Bright=0 Bdown=0 Location=38 Adresse=0 Status=0 - Periph=7065 Type=detector Pere=6714 x=14051 y=2930 z=0 - Angle=-8142 Bright=0 Bdown=0 - Location=38 Adresse=0 Status=0 Segment=6715 pre_curve Nport=2 Nperiph=0 Ninter=0 @@ -2746,7 +2611,7 @@ Adresse=0 Adresse2=0 Duree=0 ConnecteAuPort=6725 ConnecteAuSegment=6723 Segment=6723 curve -Nport=2 Nperiph=5 Ninter=0 +Nport=2 Nperiph=3 Ninter=0 Xmin=-5323 Ymin=6381 Xmax=-2206 Ymax=13128 StartAngle=11403 ArcAngle=10346 Rayon=3908 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -2763,21 +2628,15 @@ Adresse=0 Adresse2=0 Duree=0 Periph=7036 Type=signal Pere=6723 x=-2792 y=12640 z=0 Angle=11705 Bright=0 Bdown=1 Location=2 Adresse=61 Status=1 - Periph=7037 Type=detector Pere=6723 x=-2792 y=12640 z=0 - Angle=11705 Bright=0 Bdown=1 - Location=2 Adresse=0 Status=0 Periph=7057 Type=detector Pere=6723 x=-2792 y=12640 z=0 Angle=11904 Bright=1 Bdown=0 Location=2 Adresse=517 Status=1 - Periph=7058 Type=detector Pere=6723 x=-4803 y=8196 z=0 - Angle=-16574 Bright=0 Bdown=1 - Location=77 Adresse=517 Status=1 Periph=7068 Type=actuator Pere=6723 x=-3282 y=12343 z=0 Angle=12545 Bright=1 Bdown=1 Location=11 Adresse=809 Status=23 Segment=6724 pre_curve -Nport=2 Nperiph=3 Ninter=0 +Nport=2 Nperiph=2 Ninter=0 Xmin=-4515 Ymin=5211 Xmax=-2818 Ymax=7181 StartAngle=0 ArcAngle=0 Rayon=0 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -2794,9 +2653,6 @@ Adresse=0 Adresse2=0 Duree=0 Periph=7066 Type=signal Pere=6724 x=-3241 y=5641 z=0 Angle=3749 Bright=0 Bdown=1 Location=2 Adresse=0 Status=0 - Periph=7067 Type=detector Pere=6724 x=-3241 y=5641 z=0 - Angle=3749 Bright=0 Bdown=1 - Location=2 Adresse=0 Status=0 Periph=7069 Type=actuator Pere=6724 x=-3294 y=5710 z=0 Angle=3749 Bright=0 Bdown=0 Location=8 Adresse=807 Status=23 @@ -2824,7 +2680,7 @@ Adresse=21 Adresse2=0 Duree=2 Location=0 Adresse=825 Status=23 Segment=6800 arc -Nport=2 Nperiph=3 Ninter=0 +Nport=2 Nperiph=2 Ninter=0 Xmin=-20782 Ymin=13306 Xmax=-18763 Ymax=16662 StartAngle=13200 ArcAngle=4500 Rayon=3700 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -2841,9 +2697,6 @@ Adresse=0 Adresse2=0 Duree=0 Periph=7016 Type=signal Pere=6800 x=-19544 y=15862 z=0 Angle=14056 Bright=0 Bdown=1 Location=19 Adresse=0 Status=0 - Periph=7017 Type=detector Pere=6800 x=-19544 y=15862 z=0 - Angle=14056 Bright=0 Bdown=1 - Location=19 Adresse=0 Status=0 Periph=7099 Type=actuator Pere=6800 x=-19290 y=16142 z=0 Angle=13471 Bright=0 Bdown=0 Location=6 Adresse=829 Status=23 @@ -2913,7 +2766,7 @@ Adresse=0 Adresse2=0 Duree=0 ConnecteAuPort=6815 ConnecteAuSegment=6813 Segment=6813 curve -Nport=2 Nperiph=4 Ninter=1 +Nport=2 Nperiph=2 Ninter=1 Xmin=-14612 Ymin=10363 Xmax=-6109 Ymax=14151 StartAngle=13200 ArcAngle=-4159 Rayon=11636 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -2930,15 +2783,9 @@ Adresse=0 Adresse2=0 Duree=0 Periph=7032 Type=signal Pere=6813 x=-10151 y=13140 z=0 Angle=-7133 Bright=0 Bdown=0 Location=56 Adresse=75 Status=1 - Periph=7033 Type=detector Pere=6813 x=-10151 y=13140 z=0 - Angle=-7133 Bright=0 Bdown=0 - Location=56 Adresse=0 Status=0 Periph=7050 Type=detector Pere=6813 x=-6538 y=13751 z=0 Angle=-8945 Bright=1 Bdown=1 Location=99 Adresse=538 Status=1 - Periph=7051 Type=detector Pere=6813 x=-14209 y=10766 z=0 - Angle=-4802 Bright=0 Bdown=0 - Location=0 Adresse=538 Status=1 x=-7681 y=13684 z=0 MirrorZ=1000 MirrorParent=0 @@ -3141,7 +2988,7 @@ Adresse=0 Adresse2=0 Duree=0 ConnecteAuPort=6982 ConnecteAuSegment=6980 Segment=6980 curve -Nport=2 Nperiph=5 Ninter=0 +Nport=2 Nperiph=3 Ninter=0 Xmin=-24168 Ymin=5680 Xmax=-15071 Ymax=16941 StartAngle=13200 ArcAngle=16050 Rayon=6001 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -3158,21 +3005,15 @@ Adresse=0 Adresse2=0 Duree=0 Periph=7010 Type=signal Pere=6980 x=-23762 y=12345 z=0 Angle=17748 Bright=0 Bdown=1 Location=28 Adresse=65 Status=1 - Periph=7011 Type=detector Pere=6980 x=-23762 y=12345 z=0 - Angle=17748 Bright=0 Bdown=1 - Location=28 Adresse=0 Status=0 Periph=7044 Type=detector Pere=6980 x=-23042 y=14942 z=0 Angle=15148 Bright=1 Bdown=0 Location=12 Adresse=529 Status=1 - Periph=7047 Type=detector Pere=6980 x=-22800 y=8813 z=0 - Angle=-14701 Bright=0 Bdown=1 - Location=50 Adresse=529 Status=1 Periph=7093 Type=actuator Pere=6980 x=-23343 y=14299 z=0 Angle=15831 Bright=0 Bdown=1 Location=16 Adresse=822 Status=23 Segment=6981 pre_curve -Nport=2 Nperiph=3 Ninter=0 +Nport=2 Nperiph=2 Ninter=0 Xmin=-15871 Ymin=6137 Xmax=-11627 Ymax=8363 StartAngle=0 ArcAngle=0 Rayon=0 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -3189,9 +3030,6 @@ Adresse=0 Adresse2=0 Duree=0 Periph=7008 Type=signal Pere=6981 x=-13002 y=7559 z=0 Angle=11250 Bright=0 Bdown=1 Location=28 Adresse=0 Status=0 - Periph=7009 Type=detector Pere=6981 x=-13002 y=7559 z=0 - Angle=11250 Bright=0 Bdown=1 - Location=28 Adresse=0 Status=0 Periph=9297 Type=actuator Pere=6981 x=-13032 y=7547 z=0 Angle=11250 Bright=0 Bdown=0 Location=29 Adresse=836 Status=23 @@ -3213,7 +3051,7 @@ Adresse=0 Adresse2=0 Duree=0 ConnecteAuPort=6991 ConnecteAuSegment=6989 Segment=6989 curve -Nport=2 Nperiph=5 Ninter=0 +Nport=2 Nperiph=3 Ninter=0 Xmin=-23705 Ymin=6799 Xmax=-16686 Ymax=14486 StartAngle=16200 ArcAngle=11850 Rayon=5261 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -3230,21 +3068,15 @@ Adresse=0 Adresse2=0 Duree=0 Periph=7012 Type=signal Pere=6989 x=-23141 y=13762 z=0 Angle=16567 Bright=0 Bdown=1 Location=3 Adresse=67 Status=1 - Periph=7013 Type=detector Pere=6989 x=-23141 y=13762 z=0 - Angle=16567 Bright=0 Bdown=1 - Location=3 Adresse=0 Status=0 Periph=7045 Type=detector Pere=6989 x=-23141 y=13762 z=0 Angle=16863 Bright=1 Bdown=0 Location=3 Adresse=530 Status=1 - Periph=7048 Type=detector Pere=6989 x=-20422 y=7767 z=0 - Angle=-11687 Bright=0 Bdown=1 - Location=68 Adresse=530 Status=1 Periph=7094 Type=actuator Pere=6989 x=-23106 y=13892 z=0 Angle=16421 Bright=0 Bdown=1 Location=1 Adresse=823 Status=23 Segment=6990 pre_curve -Nport=2 Nperiph=3 Ninter=0 +Nport=2 Nperiph=2 Ninter=0 Xmin=-17486 Ymin=6887 Xmax=-11701 Ymax=8611 StartAngle=0 ArcAngle=0 Rayon=0 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -3261,9 +3093,6 @@ Adresse=0 Adresse2=0 Duree=0 Periph=7006 Type=signal Pere=6990 x=-12866 y=8069 z=0 Angle=10050 Bright=0 Bdown=1 Location=15 Adresse=0 Status=0 - Periph=7007 Type=detector Pere=6990 x=-12866 y=8069 z=0 - Angle=10050 Bright=0 Bdown=1 - Location=15 Adresse=0 Status=0 Periph=9296 Type=actuator Pere=6990 x=-13089 y=8028 z=0 Angle=10050 Bright=1 Bdown=0 Location=19 Adresse=835 Status=23 @@ -3285,7 +3114,7 @@ Adresse=0 Adresse2=0 Duree=0 ConnecteAuPort=7000 ConnecteAuSegment=6998 Segment=6998 curve -Nport=2 Nperiph=4 Ninter=0 +Nport=2 Nperiph=2 Ninter=0 Xmin=-23228 Ymin=7731 Xmax=-15702 Ymax=14897 StartAngle=16200 ArcAngle=13053 Rayon=4863 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -3302,18 +3131,12 @@ Adresse=0 Adresse2=0 Duree=0 Periph=7014 Type=signal Pere=6998 x=-22828 y=12942 z=0 Angle=-17939 Bright=0 Bdown=1 Location=14 Adresse=69 Status=1 - Periph=7015 Type=detector Pere=6998 x=-22828 y=12942 z=0 - Angle=-17939 Bright=0 Bdown=1 - Location=14 Adresse=0 Status=0 Periph=7046 Type=detector Pere=6998 x=-22828 y=12942 z=0 Angle=-17684 Bright=1 Bdown=0 Location=14 Adresse=537 Status=1 - Periph=7095 Type=actuator Pere=6998 x=-22821 y=13256 z=0 - Angle=17691 Bright=1 Bdown=1 - Location=11 Adresse=824 Status=23 Segment=6999 pre_curve -Nport=2 Nperiph=3 Ninter=0 +Nport=2 Nperiph=2 Ninter=0 Xmin=-16502 Ymin=8102 Xmax=-5375 Ymax=13186 StartAngle=0 ArcAngle=0 Rayon=0 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -3330,9 +3153,6 @@ Adresse=0 Adresse2=0 Duree=0 Periph=7034 Type=signal Pere=6999 x=-6172 y=12621 z=0 Angle=11253 Bright=0 Bdown=1 Location=3 Adresse=0 Status=0 - Periph=7035 Type=detector Pere=6999 x=-6172 y=12621 z=0 - Angle=11253 Bright=0 Bdown=1 - Location=3 Adresse=0 Status=0 Periph=7049 Type=detector Pere=6999 x=-15556 y=8728 z=0 Angle=11253 Bright=0 Bdown=0 Location=94 Adresse=537 Status=1 @@ -3386,7 +3206,7 @@ Adresse=30 Adresse2=0 Duree=5 MirrorZ=1000 MirrorParent=0 Segment=8782 straight -Nport=2 Nperiph=4 Ninter=0 +Nport=2 Nperiph=2 Ninter=0 Xmin=7506 Ymin=12675 Xmax=12806 Ymax=13477 StartAngle=0 ArcAngle=0 Rayon=0 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -3403,15 +3223,9 @@ Adresse=0 Adresse2=0 Duree=0 Periph=8828 Type=signal Pere=8782 x=9528 y=13076 z=0 Angle=-8997 Bright=0 Bdown=1 Location=36 Adresse=73 Status=1 - Periph=8829 Type=detector Pere=8782 x=9528 y=13076 z=0 - Angle=-8997 Bright=0 Bdown=1 - Location=36 Adresse=0 Status=0 Periph=8830 Type=detector Pere=8782 x=9528 y=13076 z=0 Angle=-8997 Bright=1 Bdown=0 Location=36 Adresse=513 Status=1 - Periph=8831 Type=actuator Pere=8782 x=8132 y=13075 z=0 - Angle=-8997 Bright=0 Bdown=1 - Location=5 Adresse=805 Status=23 Segment=8800 straight Nport=2 Nperiph=0 Ninter=1 @@ -3450,7 +3264,7 @@ Adresse=0 Adresse2=0 Duree=0 MirrorZ=1000 MirrorParent=0 Segment=8823 straight -Nport=2 Nperiph=3 Ninter=1 +Nport=2 Nperiph=2 Ninter=1 Xmin=10465 Ymin=13355 Xmax=12815 Ymax=14156 StartAngle=0 ArcAngle=0 Rayon=0 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -3467,9 +3281,6 @@ Adresse=0 Adresse2=0 Duree=0 Periph=962 Type=signal Pere=8823 x=12374 y=13756 z=0 Angle=-8996 Bright=0 Bdown=1 Location=97 Adresse=0 Status=0 - Periph=963 Type=detector Pere=8823 x=12374 y=13756 z=0 - Angle=-8996 Bright=0 Bdown=1 - Location=97 Adresse=0 Status=0 Periph=9829 Type=actuator Pere=8823 x=11811 y=13756 z=0 Angle=-8996 Bright=0 Bdown=0 Location=61 Adresse=837 Status=23 @@ -3544,7 +3355,7 @@ Adresse=0 Adresse2=0 Duree=0 ConnecteAuPort=9816 ConnecteAuSegment=9813 Segment=9821 straight -Nport=2 Nperiph=2 Ninter=0 +Nport=2 Nperiph=1 Ninter=0 Xmin=-22448 Ymin=17290 Xmax=-20670 Ymax=18298 StartAngle=0 ArcAngle=0 Rayon=0 Radius0=0 Angle0=0 Angle=0 Lengthdev=0 Deltadev0=0 @@ -3561,9 +3372,6 @@ Adresse=0 Adresse2=0 Duree=0 Periph=9827 Type=signal Pere=9821 x=-21349 y=17839 z=0 Angle=10200 Bright=0 Bdown=1 Location=28 Adresse=0 Status=0 - Periph=9828 Type=detector Pere=9821 x=-21349 y=17839 z=0 - Angle=10200 Bright=0 Bdown=1 - Location=28 Adresse=0 Status=0 Segment=9824 bumper_stop Nport=2 Nperiph=0 Ninter=0 diff --git a/verif_version.pas b/verif_version.pas index 977df39..c4c12e3 100644 --- a/verif_version.pas +++ b/verif_version.pas @@ -25,7 +25,7 @@ var verifVersion,notificationVersion : boolean; date_creation,nombre_tel : string; -Const Version='8.38'; // sert à la comparaison de la version publiée +Const Version='8.4'; // sert à la comparaison de la version publiée SousVersion=' '; // A B C ... en cas d'absence de sous version mettre un espace function GetCurrentProcessEnvVar(const VariableName: string): string; @@ -85,8 +85,8 @@ begin if i<>0 then case i of 12007 : Affiche('Erreur de résolution DNS',clred); - 12037 : Affiche('Erreur validité de certificat',clred); - 12157 : Affiche('Erreur canal sécurisé SSL 2.0',clred); + 12037 : Affiche('Erreur validité de certificat - Mettre windows à jour',clred); + 12157 : Affiche('Erreur canal sécurisé SSL 2.0 - Mettre windows à jour',clred); else affiche('Erreur '+intToSTR(i),clred); end; if Assigned(hService) then diff --git a/versions.txt b/versions.txt index 0dad40b..87a84f7 100644 --- a/versions.txt +++ b/versions.txt @@ -225,4 +225,6 @@ version 8.37 : Correction des calculs des index des aiguillages et des signaux l Correction présence trains avant signal. version 8.38 : Ajout de l'importation depuis le réseau CDM rail des bretelles double jonction, ce qui crée 4 aiguillages et un croisement. Amélioration du traitement des trames inconnues en XpressNet. +version 8.4 : Création de la version D11 (deux exécutables disponibles après installation) qui permet de choisir des styles d'affichage. + Lire la documentation pages 6 et 7.