diff --git a/Notice d'utilisation des signaux_complexes_GL_V5.5.pdf b/Notice d'utilisation des signaux_complexes_GL_V5.6.pdf similarity index 76% rename from Notice d'utilisation des signaux_complexes_GL_V5.5.pdf rename to Notice d'utilisation des signaux_complexes_GL_V5.6.pdf index cdedb2e..bf0247c 100644 Binary files a/Notice d'utilisation des signaux_complexes_GL_V5.5.pdf and b/Notice d'utilisation des signaux_complexes_GL_V5.6.pdf differ diff --git a/Signaux_complexes_GL.exe b/Signaux_complexes_GL.exe deleted file mode 100644 index f90623c..0000000 Binary files a/Signaux_complexes_GL.exe and /dev/null differ diff --git a/UnitCDF.dcu b/UnitCDF.dcu index 22283bf..2df17c1 100644 Binary files a/UnitCDF.dcu and b/UnitCDF.dcu differ diff --git a/UnitConfig.dcu b/UnitConfig.dcu index 794f4ba..17c7045 100644 Binary files a/UnitConfig.dcu and b/UnitConfig.dcu differ diff --git a/UnitConfig.dfm b/UnitConfig.dfm index cefeb96..0419b0d 100644 --- a/UnitConfig.dfm +++ b/UnitConfig.dfm @@ -1570,7 +1570,7 @@ object FormConfig: TFormConfig Top = 8 Width = 633 Height = 505 - ActivePage = TabSheetCDM + ActivePage = TabSheetSig Font.Charset = DEFAULT_CHARSET Font.Color = clBlack Font.Height = -11 @@ -2379,6 +2379,16 @@ object FormConfig: TFormConfig Font.Style = [fsBold] ParentFont = False end + object LabelCrois: TLabel + Left = 32 + Top = 320 + Width = 193 + Height = 26 + Caption = + 'Les croisements re'#231'oivent une adresse m'#234'me s'#39'ils ne sont pas pil' + + 'ot'#233's' + WordWrap = True + end object GroupBox10: TGroupBox Left = 8 Top = 80 @@ -2391,7 +2401,12 @@ object FormConfig: TFormConfig Top = 16 Width = 57 Height = 17 + Hint = + 'Affiche un ralen30/rappel 30 sur le signal implant'#233' avant cet ai' + + 'guillage' Caption = 'sans' + ParentShowHint = False + ShowHint = True TabOrder = 0 OnClick = RadioButtonsansClick end @@ -2400,7 +2415,12 @@ object FormConfig: TFormConfig Top = 32 Width = 73 Height = 17 + Hint = + 'Affiche un ralen30/rappel30 sur le signal implant'#233' avant cet aig' + + 'uillage' Caption = '30 km/h' + ParentShowHint = False + ShowHint = True TabOrder = 1 OnClick = RadioButton30kmhClick end @@ -2409,7 +2429,12 @@ object FormConfig: TFormConfig Top = 48 Width = 73 Height = 17 + Hint = + 'Affiche un ralen60/rappel60 sur le signal implant'#233' avant cet aig' + + 'uillage' Caption = '60 km/h' + ParentShowHint = False + ShowHint = True TabOrder = 2 OnClick = RadioButton60kmhClick end @@ -2676,7 +2701,7 @@ object FormConfig: TFormConfig end object GroupBox21: TGroupBox Left = 8 - Top = 304 + Top = 352 Width = 273 Height = 97 Caption = 'Initialisation de l'#39'aiguillage en mode autonome' @@ -3086,7 +3111,7 @@ object FormConfig: TFormConfig Width = 129 Height = 21 Style = csDropDownList - ItemHeight = 0 + ItemHeight = 13 TabOrder = 1 OnChange = ComboBoxDecChange end @@ -4218,8 +4243,8 @@ object FormConfig: TFormConfig ParentShowHint = False ShowHint = False object Label10: TLabel - Left = 16 - Top = 33 + Left = 8 + Top = 41 Width = 317 Height = 13 Caption = 'Liste des commandes envoy'#233'es '#224' l'#39'interface DCC++ '#224' la connexion' @@ -4358,15 +4383,18 @@ object FormConfig: TFormConfig object Label19: TLabel Left = 8 Top = 8 - Width = 276 - Height = 13 - Caption = 'Configuration de l'#39'interface DCC++ pour le mode autonome' + Width = 538 + Height = 26 + Caption = + 'Configuration de l'#39'interface DCC++ pour le mode autonome (n'#233'cess' + + 'ite de cocher le protocole DCC++ dans l'#39'onglet "Mode autonome")' + WordWrap = True end object RichCdeDccpp: TRichEdit Left = 8 - Top = 48 + Top = 64 Width = 577 - Height = 241 + Height = 225 Color = clBlack Font.Charset = DEFAULT_CHARSET Font.Color = clAqua @@ -4449,6 +4477,125 @@ object FormConfig: TFormConfig 'age' WordWrap = True end + object Image3: TImage + Left = 384 + Top = 312 + Width = 153 + Height = 49 + Picture.Data = { + 07544269746D6170D20D0000424DD20D00000000000076000000280000009600 + 00002D00000001000400000000005C0D00000000000000000000100000000000 + 0000000000000000800000800000008080008000000080008000808000008080 + 8000C0C0C0000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFF + FF00FFFFF70000008FFF80000007FFFFFFFFFFFFFFFFFFFF70000008FFFF0000 + 007FFFFFFFFFFFFF70000008FFFF0000007FFFFFFFFFFFFFFFFFFFF70000008F + FFF0000007FFFFFFFFFFFFFFFF00FFFF7000000008F8000000000FFFFFFFFFFF + FFFFFFF7000000008FF000000000FFFFFFFFFFF7000000008FF000000000FFFF + FFFFFFFFFFFFFF7000000007FF000000000FFFFFFFFFFFFFFF00FFF800000000 + 00F00000000008FFFFFFFFFFFFFFFFF0000000000F00000000008FFFFFFFFFF0 + 000000000F00000000007FFFFFFFFFFFFFFFFF0000000000F70000000007FFFF + FFFFFFFFFF00FFF70000000000800000000000FFFFFFFFFFFFFFFF7000000000 + 0800000000000FFFFFFFFF70000000000800000000000FFFFFFFFFFFFFFFF700 + 00000000800000000000FFFFFFFFFFFFFF00FFF00000000000700000000000FF + FFFFFFFFFFFFFF00000000000700000000000FFFFFFFFF000000000007000000 + 00000FFFFFFFFFFFFFFFF70000000000700000000000FFFFFFFFFFFFFF000000 + 000000000000000000000000000000000000000000000000000000000000000F + FFF0000000000000000000000000000000000000000000000000000000000000 + 0000008FFFFFFFFFFF0000000000000000000000000000000000000000000000 + 00000000000000000000000FFFF0000000000000000000000000000000000000 + 00000000000000000000000000000007FFFFFFFFFF00008FFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00888F008FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7007FFFFFFF + FF00008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFF000000008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFF7000FFFFFFFF00008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000008FFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF80008FFFFFF00008FFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000008FF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + F0007FFFFF00008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFF00FFFF008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFF0007FFFF00008FFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF008FFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7000FFF00008F + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00F + FFF008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFF80008F0000999999999999999999999999999999999999999999 + 99999999999999999999900FFFF0099999999999999999999999999999999999 + 9999999999999999999999999999999999999900080000999999999999999999 + 99999999999999999999999999999999999999999999900FFFF0099999999999 + 9999999999999999999999999999999999999999999999999999999999999910 + 0000009999999999999999999999999999999999999999999999999999999999 + 9999900FFFF00999999999999999999999999999999999999999999999999999 + 9999999999999999999991007F00007888888888888888888888888888888888 + 8888888888888888888888888888800FFFF00788888888888888888888888888 + 888888888888888888888888888888888888888888881007FF0000FFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF00FFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFF0007FFF000000000000000000000000000000000000000000000000000000 + 000000000000000FFFF000000000000000000000000000000000000000000000 + 000000000000000000000000000008FFFF000000000000000000000000000000 + 000000000000000000000000000000000000000FFFF000000000000000000000 + 00000000000000000000000000000000000000000000000000008FFFFF000000 + 000000000000000000000000000000000000000000000000000000000000000F + FFF0000000000000000000000000000000000000000000000000000000000000 + 00000000000FFFFFFF000000088FFFFFFF700000088FFFFFFF700000078FFFFF + FF7000000788FFFFFF80000FFFF0000088FFFFFFF700000078FFFFFFF7000000 + 7888FFFFF8000000000000000000000000FFFFFFFF000004F888FFFFFFF70000 + F8888FFFFFF800008F888FFFFFFF00008F888FFFFFFF000FFFF0000F888FFFFF + FF800008F88FFFFFFF800008F88FFFFFFFF0000000000007F8FFF7007FFFFFFF + FF00000888888FFFFFFF000888888FFFFFFF700788888FFFFFFF7007F88888FF + FFFF800FFFF00088888FFFFFFFF7008888888FFFFFF7007888888FFFFFF80000 + 0000000788FF4007FFFFFFFFFF00000F888888FFFFFF700F88888FFFFFFF8008 + 888888FFFFFFF00888888FFFFFFFF00FFFF000F88888FFFFFFF8008888888FFF + FFF800888888FFFFFFFF00000000000788F0007FFFFFFFFFFF00006F88888FFF + FFFF700F88888FFFFFFF800F888888FFFFFFF00888888FFFFFFFF00FFFF000F8 + 8888FFFFFFF8008888888FFFFFFF00888888FFFFFFFF000000000007F80008FF + FFFFFFFFFF00000F888888FFFFFF700888888FFFFFFF7008888888FFFFFF8007 + 888888FFFFFFF00FFFF000F88888FFFFFFF7008888888FFFFFF8008888888FFF + FFFF0000000000078000FFFFFFFFFFFFFF000007F888FFFFFFFF0007F8888FFF + FFFF0004F888FFFFFFFF0000F8888FFFFFFF700FFFF0007F8888FFFFFFF0007F + 8888FFFFFFF0000F8888FFFFFFF7000000000007000FFFFFFFFFFFFFFF000000 + 7FFFFFFFFF8000007FFFFFFFFFF000007FFFFFFFFFF7000008FFFFFFFFF7000F + FFF00007FFFFFFFFFF000007FFFFFFFFFF000006FFFFFFFFFF70000000000000 + 00FFFFFFFFFFFFFFFF0000000077777770000000007777777400000000777777 + 77000000006777777700000FFFF0000007777777000000000777777770000000 + 0677777770000000000000007FFFFFFFFFFFFFFFFF0000000000000000000000 + 00000000000000000000000000000000000000000000000FFFF0000000000000 + 000000000000000000000000000000000000000000000007FFFFFFFFFFFFFFFF + FF00000000000000000000000000000000000000000000000000000000000000 + 0000000FFFF00000000000000000000000000000000000000000000000000000 + 0000008FFFFFFFFFFFFFFFFFFF00000000000000000000000000000000000000 + 0000000000000000000000000000000FFFF00000000000000000000000000000 + 000000000000000000000000000008FFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF700000000000FFFFFFFFFFFFFFFFFF + FFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF888870 + 008888FFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFF7007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF7007FFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFF0007FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFF0008FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF008FFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF008FFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000 + 0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00FFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + FFFFFFFFFFFFFFFFFF0000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00} + Transparent = True + end object RichEditTrains: TRichEdit Left = 8 Top = 64 diff --git a/UnitConfig.pas b/UnitConfig.pas index 2ec9287..622ba79 100644 --- a/UnitConfig.pas +++ b/UnitConfig.pas @@ -322,6 +322,8 @@ type Label58: TLabel; EditFiltrDet: TEdit; CheckBoxVerifXpressNet: TCheckBox; + LabelCrois: TLabel; + Image3: TImage; procedure ButtonAppliquerEtFermerClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure FormCreate(Sender: TObject); @@ -2861,11 +2863,15 @@ begin Aiguillage[i].temps:=5; Aiguillage[i].inversionCDM:=0; Aiguillage[i].EtatTJD:=4; + Aiguillage[i].vitesse:=0; end; for i:=1 to 1024 do begin Detecteur[i].etat:=false; - //Detecteur[i].train:='0'; + Detecteur[i].train:=''; + Detecteur[i].AdrTrain:=0; + Detecteur[i].tempo0:=0; + Detecteur[i].IndexTrain:=0; Ancien_detecteur[i]:=false; end; @@ -2943,8 +2949,7 @@ begin if not(trouve_section_aig) then Affiche('Manque section '+section_aig_ch,clred); if not(trouve_section_sig) then Affiche('Manque section '+section_sig_ch,clred); if not(trouve_section_branche) then Affiche('Manque section '+section_branches_ch,clred); - verif_coherence; - + end; @@ -3428,6 +3433,9 @@ begin clicListe:=false; if AvecRoulage=1 then LabelInfVitesse.Visible:=false else LabelInfVitesse.Visible:=true; ConfigPrete:=true; + + groupBox21.Top:=304; + GroupBox21.Left:=8; end; @@ -3618,6 +3626,7 @@ begin editP4.Visible:=false; labelTJD1.Visible:=false; labelTJD2.Visible:=false; + labelcrois.Visible:=true; end; // aiguillage normal ou tri @@ -6528,9 +6537,46 @@ begin verif_extr_branches:=Erreur; end; +function nombre_adresses_signal(adr : integer) : integer; +var x,dec,nc,i : integer; +begin + nc:=0; + i:=index_feu(adr); + dec:=feux[i].decodeur; + x:=feux[i].aspect; + if x>10 then + begin + nombre_adresses_signal:=x-10; + exit; + end; + + // nc=nombre d'adresses du signal + if dec=0 then nc:=0; // rien + if dec=1 then nc:=14; // digitalbahn + if dec=2 then nc:=5; // leb + if dec=3 then nc:=8; // ldt + if dec=4 then nc:=feux[i].Na; // cdf + if dec=5 then nc:=feux[i].Na; // digikeijs + if dec=6 then // paco unisemaf + begin + x:=feux[index].Unisemaf; // modèle + case x of + 2 : nc:=1; + 3,4 : nc:=2; + 51,52 : nc:=3; + 71 : nc:=2; + 72,73 : nc:=3; + 91,92 : nc:=3; + 93,94,95,96,97,98,99 : nc:=4; + end; + end; + if dec=7 then nc:=8; // sr + nombre_adresses_signal:=nc; +end; + function verif_coherence : boolean; var AncAdr,i,j,k,l,Indexaig,adr,adr2,extr,detect,condcarre,nc,index2,SuivAdr, - x,y,extr2,adr3,index3,det1Br,det2Br,det1index,det2index,adresse,dec : integer; + x,y,extr2,adr3,index3,det1Br,det2Br,det1index,det2index,adresse,dec,nc2 : integer; modAig,AncModel,model,km,SuivModel,model2: TEquipement; c : char; vitesse : longint; @@ -6587,7 +6633,7 @@ begin end; // vérifier si son homologue est une tjd adr2:=aiguillage[Indexaig].Ddroit; - if (aiguillage[Index_Aig(adr2)].modele<>tjd) and (aiguillage[Index_Aig(adr2)].modele<>tjs) then + if (aiguillage[Index_Aig(adr2)].modele<>tjd) and (aiguillage[Index_Aig(adr2)].modele<>tjs) then begin Affiche('Erreur 8: l''aiguillage '+intToStr(Adr2)+' n''est pas une TJD/S ou n''existe pas, mais apparait dans la TJD/S '+IntToSTR(aiguillage[Indexaig].Adresse),clred); ok:=false; @@ -6670,24 +6716,58 @@ begin end; end; - // cohérence 4 : vérifie si doublon signal + // cohérence 4 : vérifie si doublon signal ou si recouvrement avec un autre signal ou un aiguillage for j:=1 to NbreFeux do begin adr:=feux[j].Adresse; + nc:=nombre_adresses_signal(adr); + + for i:=1 to maxaiguillage do + begin + adr2:=aiguillage[i].Adresse; + if ((adr2>=adr) and (adr2<=adr+nc-1)) then + begin + affiche('Erreur 9.1 : signal '+intToSTR(adr)+' ('+intToSTR(nc)+' adresses) et aiguillage '+intToSTR(adr2)+' se chevauchent',clred); + ok:=false; + end; + end; + for i:=j+1 to NbreFeux do begin - if adr=feux[i].Adresse then + adr2:=feux[i].Adresse; + nc2:=nombre_adresses_signal(adr2); + if ((adr>adr2) and (adr adr2) and (adr+nc-1extr then Affiche('Erreur 10.24: Discordance de déclaration aiguillages '+intToSTR(adr)+'S: '+intToSTR(adr2)+'S différent de '+intToSTR(extr),clred); end; - if c='P' then + if c='P' then begin extr:=aiguillage[index2].APointe; if adr<>extr then Affiche('Erreur 10.25: Discordance de déclaration aiguillages '+intToSTR(adr)+'S: '+intToSTR(adr2)+'P différent de '+intToSTR(extr),clred); @@ -7073,7 +7153,7 @@ begin extr:=aiguillage[index2].ADevie; if adr<>extr then Affiche('Erreur 10.44: Discordance de déclaration aiguillages '+intToSTR(adr)+'S: '+intToSTR(adr2)+'S différent de '+intToSTR(extr),clred); end; - if c='P' then + if c='P' then begin extr:=aiguillage[index2].APointe; if adr<>extr then Affiche('Erreur 10.45: Discordance de déclaration aiguillages '+intToSTR(adr)+'S: '+intToSTR(adr2)+'P différent de '+intToSTR(extr),clred); @@ -7202,48 +7282,47 @@ begin begin for y:=1 to NbreCellY do for x:=1 to NbreCellX do + begin + i:=TCO[x,y].BImage; + if i=30 then begin - i:=TCO[x,y].BImage; - if i=30 then + adr:=TCO[x,y].adresse; + if index_feu(adr)=0 then begin - adr:=TCO[x,y].adresse; - if index_feu(adr)=0 then - begin - Affiche('Un signal '+IntToSTR(adr)+' est déclaré dans le TCO['+intToSTR(x)+','+intToSTR(y)+'] mais absent de la configuration',clred); - ok:=false; - end; + Affiche('Un signal '+IntToSTR(adr)+' est déclaré dans le TCO['+intToSTR(x)+','+intToSTR(y)+'] mais absent de la configuration',clred); + ok:=false; end; - if (i=2) or (i=3) or (i=4) or (i=5) or (i=12) or (i=13) or (i=14) or (i=15) then + end; + if (i=2) or (i=3) or (i=4) or (i=5) or (i=12) or (i=13) or (i=14) or (i=15) or (i=21) or (i=22) then + begin + adr:=TCO[x,y].adresse; + if index_aig(adr)=0 then begin - adr:=TCO[x,y].adresse; - if index_aig(adr)=0 then - begin - Affiche('Un aiguillage '+IntToSTR(adr)+' est déclaré dans le TCO['+intToSTR(x)+','+intToSTR(y)+'] mais absent de la configuration',clred); - ok:=false; - end; + Affiche('Un aiguillage '+IntToSTR(adr)+' est déclaré dans le TCO['+intToSTR(x)+','+intToSTR(y)+'] mais absent de la configuration',clred); + ok:=false; end; - if (i=1) or (i=6) or (i=7) or (i=8) or (i=9) or (i=16) or (i=17) or (i=18) or (i=19) or (i=20) or (i=10) or (i=11) then + end; + if (i=1) or (i=6) or (i=7) or (i=8) or (i=9) or (i=16) or (i=17) or (i=18) or (i=19) or (i=20) or (i=10) or (i=11) then + begin + adr:=TCO[x,y].adresse; + if adr<>0 then begin - adr:=TCO[x,y].adresse; - if adr<>0 then + j:=1; + repeat + trouveSuiv:=adr=Adresse_detecteur[j]; + inc(j); + until (j>NDetecteurs) or trouveSuiv; + if not(trouveSuiv) then begin - j:=1; - repeat - trouveSuiv:=adr=Adresse_detecteur[j]; - inc(j); - until (j>NDetecteurs) or trouveSuiv; - - if not(trouveSuiv) then - begin - Affiche('Un détecteur '+IntToSTR(adr)+' est déclaré dans le TCO['+intToSTR(x)+','+intToSTR(y)+'] mais absent de la configuration',clred); - ok:=false; - end; + Affiche('Un détecteur '+IntToSTR(adr)+' est déclaré dans le TCO['+intToSTR(x)+','+intToSTR(y)+'] mais absent de la configuration',clred); + ok:=false; end; end; end; + end; end; - // 10 Divers + // 11 Divers i:=pos(':',portcom);j:=pos(',',portcom); val(copy(portcom,i+1,j-i),vitesse,l); if (protocole=2) and (vitesse<>115200) then Affiche('La vitesse COM/USB en procotole DCC++ doit être de 115200 bauds',clred); @@ -7265,28 +7344,7 @@ begin for i:=1 to NbreFeux do begin adresse:=feux[i].Adresse; - dec:=feux[i].decodeur; - nc:=1; - // nc=nombre d'adresses du signal - if dec=1 then nc:=14; // digitalbahn - if dec=2 then nc:=5; // leb - if dec=3 then nc:=8; // ldt - if dec=4 then nc:=feux[i].Na; // cdf - if dec=5 then nc:=feux[i].Na; // digikeijs - if dec=6 then // paco unisemaf - begin - x:=feux[index].Unisemaf; // modèle - case x of - 2 : nc:=1; - 3,4 : nc:=2; - 51,52 : nc:=3; - 71 : nc:=2; - 72,73 : nc:=3; - 91,92 : nc:=3; - 93,94,95,96,97,98,99 : nc:=4; - end; - end; - if dec=7 then nc:=8; // sr + nc:=Nombre_adresses_signal(adresse); if (adresse>=257) and (adresse<=272) or ((adresse+nc-1>=257) and (adresse+nc<=272)) then begin @@ -7316,8 +7374,8 @@ begin if not(AdrOk) then begin j:=MessageDlg('Une adresse DCC via XpressNet a été trouvée dans la plage interdite.'+#13+ - 'Si vous n''utilisez pas XpressNet, vous devez choisir d''ignorer cette erreur.'+#13+#13+ - 'Voulez vous ignorer cette erreur à l''avenir? ',mtConfirmation,[mbNo,mbYes],0) ; + 'Si vous n''utilisez pas XpressNet, vous devez choisir d''ignorer cette erreur.'+#13+#13+ + 'Voulez vous ignorer cette erreur à l''avenir? ',mtConfirmation,[mbNo,mbYes],0) ; if j=mrYes then begin Verif_AdrXpressNet:=0; @@ -7352,6 +7410,10 @@ begin aiguillage[i].AdrTrain:=0; aiguillage[i].posInit:=const_inconnu; aiguillage[i].Temps:=5; + aiguillage[i].position:=const_inconnu; + aiguillage[i].InversionCDM:=0; + aiguillage[i].vitesse:=0; + s:=encode_Aig(i); if ligneClicAig<>-1 then RE_ColorLine(RichAig,ligneClicAig,ClAqua); @@ -7861,11 +7923,15 @@ begin if (aiguillage[i].tjsIntB<>'S') and (aiguillage[i].tjsIntB<>'D') then aiguillage[i].tjsIntB:='D'; end; + if aiguillage[i].modele=crois then LabelCrois.Visible:=true else LabelCrois.Visible:=false; + s:=encode_aig(i); formconfig.RichAig.Lines[ligneclicAig]:=s; clicliste:=true; Aff_champs_aig_tablo(i); clicliste:=false; + + end; procedure TFormConfig.ButtonValLigneClick(Sender: TObject); @@ -8444,7 +8510,6 @@ procedure TFormConfig.SpeedButtonJoueClick(Sender: TObject); begin if PlaySound(pchar(EditSon.Text),0,SND_ASYNC)=false then labelInfo.Caption:='Erreur'; - end; diff --git a/UnitConfigCellTCO.dcu b/UnitConfigCellTCO.dcu index 67caa7d..311fc31 100644 Binary files a/UnitConfigCellTCO.dcu and b/UnitConfigCellTCO.dcu differ diff --git a/UnitConfigCellTCO.dfm b/UnitConfigCellTCO.dfm index c6dce62..7b88106 100644 --- a/UnitConfigCellTCO.dfm +++ b/UnitConfigCellTCO.dfm @@ -3,7 +3,7 @@ object FormConfCellTCO: TFormConfCellTCO Top = 112 BorderStyle = bsDialog Caption = 'FormConfCellTCO' - ClientHeight = 375 + ClientHeight = 402 ClientWidth = 251 Color = clBtnFace Font.Charset = DEFAULT_CHARSET @@ -12,12 +12,13 @@ object FormConfCellTCO: TFormConfCellTCO Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False + OnActivate = FormActivate OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 13 object ButtonOk: TButton Left = 168 - Top = 344 + Top = 368 Width = 75 Height = 25 Caption = 'Ok' @@ -26,7 +27,7 @@ object FormConfCellTCO: TFormConfCellTCO end object GroupBox1: TGroupBox Left = 8 - Top = 240 + Top = 264 Width = 233 Height = 97 Caption = 'Texte' @@ -87,7 +88,7 @@ object FormConfCellTCO: TFormConfCellTCO Left = 8 Top = 8 Width = 233 - Height = 225 + Height = 257 Caption = 'El'#233'ment' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText @@ -122,7 +123,7 @@ object FormConfCellTCO: TFormConfCellTCO end object Label2: TLabel Left = 168 - Top = 22 + Top = 14 Width = 48 Height = 16 Caption = 'Adresse : ' @@ -134,8 +135,8 @@ object FormConfCellTCO: TFormConfCellTCO ParentFont = False end object EditTypeImage: TEdit - Left = 40 - Top = 48 + Left = 32 + Top = 40 Width = 33 Height = 21 Hint = 'Num'#233'ro d'#39'image de l'#39#233'l'#233'ment' @@ -152,7 +153,7 @@ object FormConfCellTCO: TFormConfCellTCO end object GroupBox3: TGroupBox Left = 8 - Top = 80 + Top = 112 Width = 209 Height = 73 Caption = 'Orientation du signal' @@ -211,7 +212,7 @@ object FormConfCellTCO: TFormConfCellTCO end object GroupBox4: TGroupBox Left = 8 - Top = 160 + Top = 192 Width = 209 Height = 57 Caption = 'Implantation du signal' @@ -255,7 +256,7 @@ object FormConfCellTCO: TFormConfCellTCO end object EditAdrElement: TEdit Left = 176 - Top = 48 + Top = 40 Width = 33 Height = 24 Hint = 'Adresse DCC de l'#39#233'l'#233'ment' @@ -264,10 +265,26 @@ object FormConfCellTCO: TFormConfCellTCO TabOrder = 3 OnKeyPress = EditAdrElementKeyPress end + object ButtonFond: TButton + Left = 16 + Top = 72 + Width = 97 + Height = 33 + Caption = 'Couleur de fond de la cellule' + Font.Charset = ANSI_CHARSET + Font.Color = clWindowText + Font.Height = -13 + Font.Name = 'Arial Narrow' + Font.Style = [] + ParentFont = False + TabOrder = 4 + WordWrap = True + OnClick = ButtonFondClick + end end object CheckPinv: TCheckBox Left = 8 - Top = 352 + Top = 368 Width = 129 Height = 17 Hint = 'Cocher si l'#39'aiguillage est repr'#233'sent'#233' invers'#233 diff --git a/UnitConfigCellTCO.pas b/UnitConfigCellTCO.pas index 27a463e..cfec1b4 100644 --- a/UnitConfigCellTCO.pas +++ b/UnitConfigCellTCO.pas @@ -28,6 +28,7 @@ type RadioButtonG: TRadioButton; RadioButtonD: TRadioButton; EditAdrElement: TEdit; + ButtonFond: TButton; procedure ButtonOkClick(Sender: TObject); procedure EditTypeImageKeyPress(Sender: TObject; var Key: Char); procedure EditAdrElementChange(Sender: TObject); @@ -42,6 +43,8 @@ type procedure RadioButtonGClick(Sender: TObject); procedure RadioButtonDClick(Sender: TObject); procedure EditAdrElementKeyPress(Sender: TObject; var Key: Char); + procedure ButtonFondClick(Sender: TObject); + procedure FormActivate(Sender: TObject); private { Déclarations privées } public @@ -250,7 +253,7 @@ end; procedure TFormConfCellTCO.EditTexteCCTCOChange(Sender: TObject); begin - PCanvasTCO.Brush.Color:=fond; + PCanvasTCO.Brush.Color:=clfond; if Tco[XClicCell,YClicCell].texte='' then begin @@ -276,7 +279,7 @@ var i,x,y : integer; begin // fenetre toujours dessus actualize:=false; - SetWindowPos(Handle, HWND_TOPMOST,0,0,0,0,SWP_NoMove or SWP_NoSize); + SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0,SWP_NoMove or SWP_NoSize); exit; // dessine les composants - non utilisé @@ -409,4 +412,15 @@ begin end; end; +procedure TFormConfCellTCO.ButtonFondClick(Sender: TObject); +begin + change_couleur_fond; +end; + +procedure TFormConfCellTCO.FormActivate(Sender: TObject); +begin + if selectionaffichee then ButtonFond.caption:='Couleur de fond de la sélection' + else ButtonFond.caption:='Couleur de fond de la cellule'; +end; + end. diff --git a/UnitConfigTCO.dcu b/UnitConfigTCO.dcu index 0a12887..dfe51a5 100644 Binary files a/UnitConfigTCO.dcu and b/UnitConfigTCO.dcu differ diff --git a/UnitConfigTCO.dfm b/UnitConfigTCO.dfm index 2e1c0ed..70d15bf 100644 --- a/UnitConfigTCO.dfm +++ b/UnitConfigTCO.dfm @@ -134,11 +134,13 @@ object FormConfigTCO: TFormConfigTCO OnClick = ImageFondClick end object Label6: TLabel - Left = 30 - Top = 80 - Width = 75 - Height = 13 - Caption = 'Couleur de fond' + Left = 32 + Top = 72 + Width = 76 + Height = 26 + Alignment = taRightJustify + Caption = 'Couleur de fond par d'#233'faut' + WordWrap = True end object ImageGrille: TImage Left = 128 @@ -218,12 +220,28 @@ object FormConfigTCO: TFormConfigTCO OnClick = ImageQuaiClick end object Label13: TLabel - Left = 206 + Left = 214 Top = 80 Width = 74 Height = 13 Caption = 'Couleur de quai' end + object Label1: TLabel + Left = 184 + Top = 120 + Width = 102 + Height = 26 + Alignment = taRightJustify + Caption = 'Couleur des pieds de signaux' + WordWrap = True + end + object ImagePiedFeu: TImage + Left = 296 + Top = 112 + Width = 41 + Height = 41 + OnClick = ImagePiedFeuClick + end object CheckCouleur: TCheckBox Left = 56 Top = 208 diff --git a/UnitConfigTCO.pas b/UnitConfigTCO.pas index fa966d0..0546105 100644 --- a/UnitConfigTCO.pas +++ b/UnitConfigTCO.pas @@ -41,6 +41,8 @@ type Ratio: TLabel; Label14: TLabel; CheckCouleur: TCheckBox; + Label1: TLabel; + ImagePiedFeu: TImage; procedure ButtonOKClick(Sender: TObject); procedure ButtonDessineClick(Sender: TObject); procedure FormActivate(Sender: TObject); @@ -52,6 +54,7 @@ type procedure ColorDialog1Show(Sender: TObject); procedure ImageTexteClick(Sender: TObject); procedure ImageQuaiClick(Sender: TObject); + procedure ImagePiedFeuClick(Sender: TObject); private { Déclarations privées } public @@ -75,8 +78,8 @@ var r : Trect; begin with FormConfigTCO.ImageAig do begin - canvas.Pen.color:=fond; - canvas.Brush.Color:=fond; + canvas.Pen.color:=clfond; + canvas.Brush.Color:=clfond; canvas.Rectangle(0,0,Width,Height); canvas.pen.color:=clVoies; @@ -96,22 +99,24 @@ end; procedure dessine_icones; var r : Trect; - x1,x2,jy1,jy2 : integer; + x1,y1,x2,y2,jy1,jy2,larg,haut : integer; begin // 1 icone_aig; // 2 with formConfigTCO.ImageFond do begin - canvas.Pen.color:=fond; - canvas.Brush.Color:=fond; + larg:=width ; + haut:=height; + canvas.Pen.color:=clfond; + canvas.Brush.Color:=clfond; canvas.Rectangle(0,0,Width,Height); end; // 3 with formConfigTCO.ImageGrille do begin - canvas.Pen.color:=fond; - canvas.Brush.Color:=fond; + canvas.Pen.color:=clfond; + canvas.Brush.Color:=clfond; canvas.Rectangle(0,0,Width,Height); canvas.Pen.color:=ClGrille; canvas.moveto(0,5); canvas.LineTo(width,5); @@ -120,8 +125,8 @@ begin // 4 détecteur with formConfigTCO.ImageDetAct do begin - canvas.Pen.color:=fond; - canvas.Brush.Color:=fond; + canvas.Pen.color:=clfond; + canvas.Brush.Color:=clfond; canvas.Rectangle(0,0,Width,Height); canvas.Brush.Color:=clAllume; @@ -140,8 +145,8 @@ begin // 5 canton with formCOnfigTCO.Imagecanton do begin - canvas.Pen.color:=fond; - canvas.Brush.Color:=fond; + canvas.Pen.color:=clfond; + canvas.Brush.Color:=clfond; canvas.Rectangle(0,0,Width,Height); canvas.pen.color:=clCanton; @@ -154,8 +159,8 @@ begin //6 texte with formCOnfigTCO.ImageTexte do begin - canvas.Pen.color:=fond; - canvas.Brush.Color:=fond; + canvas.Pen.color:=clfond; + canvas.Brush.Color:=clfond; canvas.Rectangle(0,0,Width,Height); canvas.Font.color:=clTexte; canvas.Pen.mode:=pmCopy; @@ -165,19 +170,36 @@ begin //Quai with formconfigTCO.ImageQuai do begin - canvas.Pen.color:=fond; - canvas.Brush.Color:=fond; + canvas.Pen.color:=clfond; + canvas.Brush.Color:=clfond; canvas.Rectangle(0,0,Width,Height); canvas.Brush.Color:=clQuai; canvas.pen.color:=clQuai; x1:=0; x2:=x1+width; - jy1:=(HauteurCell div 2)-round(6*frYGlob); // pos Y de la bande sup - jy2:=(HauteurCell div 2)+round(6*frYGlob); // pos Y de la bande inf + jy1:=(Haut div 2)-round(12*frYGlob); // pos Y de la bande sup + jy2:=(Haut div 2)+round(12*frYGlob); // pos Y de la bande inf canvas.PolyGon([point(x1,jy1),point(x2,jy1),point(x2,jy2),point(x1,jy2)]); end; + // pied signal + with formconfigTCO.ImagePiedFeu do + begin + canvas.Pen.color:=clfond; + canvas.Brush.Color:=clfond; + canvas.Rectangle(0,0,Width,Height); + canvas.Brush.Color:=clPiedSignal; + canvas.pen.color:=clPiedSignal; + canvas.Pen.Width:=2; + x1:=Larg div 2; + y1:=0; + canvas.moveTo(x1,y1); + y2:=HauteurCell div 2; + canvas.LineTo(x1,y2); + canvas.LineTo(x1-10,y2); + end; + end; function verif_config_TCO : boolean; // renvoie true si ok @@ -240,7 +262,6 @@ end; procedure TFormConfigTCO.ButtonOKClick(Sender: TObject); var ok : boolean; - larg,haut : integer; begin ok:=true; @@ -326,11 +347,11 @@ end; procedure TFormConfigTCO.ImageFondClick(Sender: TObject); begin titre_couleur:='Changer la couleur de fond'; - ColorDialog1.Color:=fond; + ColorDialog1.Color:=clfond; if ColorDialog1.execute then begin - fond:=ColorDialog1.Color; + clfond:=ColorDialog1.Color; TCO_modifie:=true; dessine_icones; end; @@ -398,6 +419,18 @@ begin end; end; +procedure TFormConfigTCO.ImagePiedFeuClick(Sender: TObject); +begin + titre_couleur:='Changer la couleur du pied du signal'; + ColorDialog1.Color:=clPiedSignal; + + if ColorDialog1.execute then + begin + clPiedSignal:=ColorDialog1.Color; + dessine_icones; + end; +end; + // change le titre de la fenêtre de choix des couleurs à son ouverture procedure TFormConfigTCO.ColorDialog1Show(Sender: TObject); begin @@ -406,11 +439,4 @@ end; - - - - - - - end. diff --git a/UnitDebug.dcu b/UnitDebug.dcu index f6a6131..0979f28 100644 Binary files a/UnitDebug.dcu and b/UnitDebug.dcu differ diff --git a/UnitDebug.pas b/UnitDebug.pas index c0fb3de..1b6cb70 100644 --- a/UnitDebug.pas +++ b/UnitDebug.pas @@ -282,7 +282,6 @@ begin for i:=1 to N_Event_tick do begin - begin j:=event_det_tick[i].adresse; etat:=event_det_tick[i].etat; @@ -394,7 +393,7 @@ begin end; procedure TFormDebug.Button2Click(Sender: TObject); -var Adr,erreur,ancdebug,trainreseve : integer ; +var Adr,erreur,ancdebug : integer ; reservetraintiers : boolean; begin Val(EditSigSuiv.Text,Adr,erreur); if erreur<>0 then exit; @@ -415,7 +414,7 @@ end; // pour déplacer l'ascenseur de l'affichage automatiquement en bas procedure TFormDebug.RichDebugChange(Sender: TObject); begin - SendMessage(RichDebug.handle, WM_VSCROLL, SB_BOTTOM, 0); + SendMessage(RichDebug.handle,WM_VSCROLL,SB_BOTTOM,0); end; procedure TFormDebug.ButtonSimuDet0Click(Sender: TObject); @@ -485,19 +484,11 @@ begin if Adr<9995 then begin s:='L''élément suivant aux éléments '+IntToSTR(prec)+'/'+IntToSTR(actuel)+' est '+IntToSTR(Adr)+' '; - case typeGen of - aig : s:=s+'aiguillage'; - tjd : s:=s+'tjd'; - tjs : s:=s+'tjs'; - triple : s:=s+'triple'; - det : s:=s+'détecteur'; - buttoir : s:=s+'buttoir'; - end; + s:=s+BTypeToChaine(typeGen); AfficheDebug(s,clYellow); end - else AfficheDebug('Pas trouvé d''élement suvant aux éléments '+IntToSTR(prec)+'/'+IntToSTR(actuel),clyellow); + else AfficheDebug('Pas trouvé d''élement suivant aux éléments '+IntToSTR(prec)+'/'+IntToSTR(actuel),clyellow); NivDebug:=AncDebug; - end; procedure TFormDebug.CheckBox1Click(Sender: TObject); @@ -541,12 +532,16 @@ begin // pilotage par USB ou par éthernet de la centrale ------------ if (hors_tension=false) and (portCommOuvert or parSocketLenz) then begin - groupe:=(adr-1) div 4; - fonction:=((adr-1) mod 4)*2 + (sortie-1); - // pilotage à 1 - s:=#$52+Char(groupe)+char(fonction or $88); // activer la sortie - s:=checksum(s); - envoi(s); // envoi de la trame et attente Ack + if protocole=1 then + begin + groupe:=(adr-1) div 4; + fonction:=((adr-1) mod 4)*2 + (sortie-1); + // pilotage à 1 + s:=#$52+Char(groupe)+char(fonction or $88); // activer la sortie + s:=checksum(s); + envoi(s); // envoi de la trame et attente Ack + end; + if protocole=2 then AfficheDebug('D10: Commande DCC++ pas encore implantée',clred); end; Self.ActiveControl:=nil; @@ -583,12 +578,16 @@ begin // pilotage par USB ou par éthernet de la centrale ------------ if (hors_tension=false) and (portCommOuvert or parSocketLenz) then begin - groupe:=(adr-1) div 4; - fonction:=((adr-1) mod 4)*2 + (sortie-1); - // pilotage à 0 - s:=#$52+Char(groupe)+char(fonction or $80); // désactiver la sortie - s:=checksum(s); - envoi(s); // envoi de la trame et attente Ack + if protocole=1 then + begin + groupe:=(adr-1) div 4; + fonction:=((adr-1) mod 4)*2 + (sortie-1); + // pilotage à 0 + s:=#$52+Char(groupe)+char(fonction or $80); // désactiver la sortie + s:=checksum(s); + envoi(s); // envoi de la trame et attente Ack + end; + if protocole=2 then AfficheDebug('D11: Commande DCC++ pas encore implantée',clred) end; Self.ActiveControl:=nil; diff --git a/UnitDigikeijs.dcu b/UnitDigikeijs.dcu deleted file mode 100644 index fed5875..0000000 Binary files a/UnitDigikeijs.dcu and /dev/null differ diff --git a/UnitDigikeijs.dfm b/UnitDigikeijs.dfm deleted file mode 100644 index 645f4c5..0000000 --- a/UnitDigikeijs.dfm +++ /dev/null @@ -1,381 +0,0 @@ -object FormDigikeijs: TFormDigikeijs - Left = 362 - Top = 124 - BorderStyle = bsDialog - Caption = 'Configuration du d'#233'codeur Digikeijs 4018' - ClientHeight = 442 - ClientWidth = 344 - Color = clBtnFace - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [] - OldCreateOrder = False - OnActivate = FormActivate - PixelsPerInch = 96 - TextHeight = 13 - object LabelTitre: TLabel - Left = 16 - Top = 8 - Width = 63 - Height = 19 - Caption = 'Adresse' - Font.Charset = ANSI_CHARSET - Font.Color = clWindowText - Font.Height = -16 - Font.Name = 'Arial' - Font.Style = [fsBold] - ParentFont = False - end - object Label1: TLabel - Left = 8 - Top = 136 - Width = 32 - Height = 13 - Caption = 'Label1' - end - object Label2: TLabel - Left = 8 - Top = 160 - Width = 32 - Height = 13 - Caption = 'Label2' - end - object Label3: TLabel - Left = 8 - Top = 184 - Width = 32 - Height = 13 - Caption = 'Label3' - end - object Label4: TLabel - Left = 8 - Top = 208 - Width = 32 - Height = 13 - Caption = 'Label4' - end - object Label5: TLabel - Left = 8 - Top = 232 - Width = 32 - Height = 13 - Caption = 'Label5' - end - object Label6: TLabel - Left = 8 - Top = 256 - Width = 32 - Height = 13 - Caption = 'Label6' - end - object Label7: TLabel - Left = 8 - Top = 280 - Width = 32 - Height = 13 - Caption = 'Label7' - end - object Label8: TLabel - Left = 8 - Top = 304 - Width = 32 - Height = 13 - Caption = 'Label8' - end - object Label9: TLabel - Left = 8 - Top = 328 - Width = 32 - Height = 13 - Caption = 'Label9' - end - object Label10: TLabel - Left = 8 - Top = 352 - Width = 38 - Height = 13 - Caption = 'Label10' - end - object Label11: TLabel - Left = 184 - Top = 160 - Width = 38 - Height = 13 - Caption = 'Label11' - end - object Label12: TLabel - Left = 184 - Top = 184 - Width = 38 - Height = 13 - Caption = 'Label12' - end - object Label13: TLabel - Left = 184 - Top = 208 - Width = 38 - Height = 13 - Caption = 'Label13' - end - object Label14: TLabel - Left = 184 - Top = 232 - Width = 38 - Height = 13 - Caption = 'Label14' - end - object Label15: TLabel - Left = 184 - Top = 256 - Width = 38 - Height = 13 - Caption = 'Label15' - end - object Label16: TLabel - Left = 184 - Top = 280 - Width = 38 - Height = 13 - Caption = 'Label16' - end - object Label17: TLabel - Left = 184 - Top = 304 - Width = 38 - Height = 13 - Caption = 'Label17' - end - object Label18: TLabel - Left = 184 - Top = 328 - Width = 38 - Height = 13 - Caption = 'Label18' - end - object Label19: TLabel - Left = 184 - Top = 352 - Width = 38 - Height = 13 - Caption = 'Label19' - end - object ImageDigi: TImage - Left = 240 - Top = 16 - Width = 57 - Height = 97 - end - object Shape1: TShape - Left = 168 - Top = 112 - Width = 2 - Height = 273 - end - object Label20: TLabel - Left = 24 - Top = 48 - Width = 184 - Height = 26 - Caption = - 'Tables d'#39'aspects du signal en fonction du motif envoy'#233' au d'#233'code' + - 'ur Digikeijs' - WordWrap = True - end - object Label21: TLabel - Left = 120 - Top = 112 - Width = 29 - Height = 13 - Caption = 'Motif' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [fsBold] - ParentFont = False - end - object Label22: TLabel - Left = 296 - Top = 136 - Width = 29 - Height = 13 - Caption = 'Motif' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -11 - Font.Name = 'MS Sans Serif' - Font.Style = [fsBold] - ParentFont = False - end - object Button1: TButton - Left = 128 - Top = 408 - Width = 75 - Height = 25 - Caption = 'Fermer' - TabOrder = 0 - OnClick = Button1Click - end - object Edit1: TEdit - Left = 120 - Top = 136 - Width = 25 - Height = 21 - TabOrder = 1 - OnChange = Edit1Change - end - object Edit2: TEdit - Left = 120 - Top = 160 - Width = 25 - Height = 21 - TabOrder = 2 - OnChange = Edit2Change - end - object Edit3: TEdit - Left = 120 - Top = 184 - Width = 25 - Height = 21 - TabOrder = 3 - OnChange = Edit3Change - end - object Edit4: TEdit - Left = 120 - Top = 208 - Width = 25 - Height = 21 - TabOrder = 4 - OnChange = Edit4Change - end - object Edit5: TEdit - Left = 120 - Top = 232 - Width = 25 - Height = 21 - TabOrder = 5 - OnChange = Edit5Change - end - object Edit6: TEdit - Left = 120 - Top = 256 - Width = 25 - Height = 21 - TabOrder = 6 - OnChange = Edit6Change - end - object Edit7: TEdit - Left = 120 - Top = 280 - Width = 25 - Height = 21 - TabOrder = 7 - OnChange = Edit7Change - end - object Edit8: TEdit - Left = 120 - Top = 304 - Width = 25 - Height = 21 - TabOrder = 8 - OnChange = Edit8Change - end - object Edit9: TEdit - Left = 120 - Top = 328 - Width = 25 - Height = 21 - TabOrder = 9 - OnChange = Edit9Change - end - object Edit10: TEdit - Left = 120 - Top = 352 - Width = 25 - Height = 21 - TabOrder = 10 - OnChange = Edit10Change - end - object Edit11: TEdit - Left = 296 - Top = 160 - Width = 25 - Height = 21 - TabOrder = 11 - OnChange = Edit11Change - end - object Edit12: TEdit - Left = 296 - Top = 184 - Width = 25 - Height = 21 - TabOrder = 12 - OnChange = Edit12Change - end - object Edit13: TEdit - Left = 296 - Top = 208 - Width = 25 - Height = 21 - TabOrder = 13 - OnChange = Edit13Change - end - object Edit14: TEdit - Left = 296 - Top = 232 - Width = 25 - Height = 21 - TabOrder = 14 - OnChange = Edit14Change - end - object Edit15: TEdit - Left = 296 - Top = 256 - Width = 25 - Height = 21 - TabOrder = 15 - OnChange = Edit15Change - end - object Edit16: TEdit - Left = 296 - Top = 280 - Width = 25 - Height = 21 - TabOrder = 16 - OnChange = Edit16Change - end - object Edit17: TEdit - Left = 296 - Top = 304 - Width = 25 - Height = 21 - TabOrder = 17 - OnChange = Edit17Change - end - object Edit18: TEdit - Left = 296 - Top = 328 - Width = 25 - Height = 21 - TabOrder = 18 - OnChange = Edit18Change - end - object Edit19: TEdit - Left = 296 - Top = 352 - Width = 25 - Height = 21 - TabOrder = 19 - OnChange = Edit19Change - end - object CheckMotif: TCheckBox - Left = 16 - Top = 88 - Width = 169 - Height = 17 - Caption = 'Inversion du sens du motif' - TabOrder = 20 - end -end diff --git a/UnitDigikeijs.pas b/UnitDigikeijs.pas deleted file mode 100644 index b4bd4ec..0000000 --- a/UnitDigikeijs.pas +++ /dev/null @@ -1,355 +0,0 @@ -unit UnitDigikeijs; - -interface - -uses - Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, StdCtrls, ExtCtrls, UnitConfig,UnitPrinc ; - -type - TFormDigikeijs = class(TForm) - Button1: TButton; - LabelTitre: TLabel; - Label1: TLabel; - Label2: TLabel; - Label3: TLabel; - Label4: TLabel; - Label5: TLabel; - Label6: TLabel; - Label7: TLabel; - Label8: TLabel; - Label9: TLabel; - Label10: TLabel; - Label11: TLabel; - Label12: TLabel; - Label13: TLabel; - Label14: TLabel; - Label15: TLabel; - Label16: TLabel; - Label17: TLabel; - Label18: TLabel; - Label19: TLabel; - ImageDigi: TImage; - Edit1: TEdit; - Shape1: TShape; - Edit2: TEdit; - Edit3: TEdit; - Edit4: TEdit; - Edit5: TEdit; - Edit6: TEdit; - Edit7: TEdit; - Edit8: TEdit; - Edit9: TEdit; - Edit10: TEdit; - Edit11: TEdit; - Edit12: TEdit; - Edit13: TEdit; - Edit14: TEdit; - Edit15: TEdit; - Edit16: TEdit; - Edit17: TEdit; - Edit18: TEdit; - Edit19: TEdit; - Label20: TLabel; - Label21: TLabel; - Label22: TLabel; - CheckMotif: TCheckBox; - procedure Button1Click(Sender: TObject); - procedure FormActivate(Sender: TObject); - procedure Edit1Change(Sender: TObject); - procedure Edit2Change(Sender: TObject); - procedure Edit3Change(Sender: TObject); - procedure Edit4Change(Sender: TObject); - procedure Edit5Change(Sender: TObject); - procedure Edit6Change(Sender: TObject); - procedure Edit7Change(Sender: TObject); - procedure Edit8Change(Sender: TObject); - procedure Edit9Change(Sender: TObject); - procedure Edit10Change(Sender: TObject); - procedure Edit11Change(Sender: TObject); - procedure Edit12Change(Sender: TObject); - procedure Edit13Change(Sender: TObject); - procedure Edit14Change(Sender: TObject); - procedure Edit15Change(Sender: TObject); - procedure Edit16Change(Sender: TObject); - procedure Edit17Change(Sender: TObject); - procedure Edit18Change(Sender: TObject); - procedure Edit19Change(Sender: TObject); - private - { Déclarations privées } - public - { Déclarations publiques } - end; - -var - FormDigikeijs: TFormDigikeijs; - Adresse,Index : integer; - -implementation - - -{$R *.dfm} - -procedure TFormDigikeijs.Button1Click(Sender: TObject); -begin - InverseMotif:=checkMotif.Checked; - close; -end; - -procedure TFormDigikeijs.FormActivate(Sender: TObject); -var erreur : integer; -begin - - Val(FormConfig.EditAdrSig.text,Adresse,erreur); - index:=index_feu(Adresse); - LabelTitre.caption:='Adresse du signal: '+intToSTR(adresse); - - Label1.caption:=etats[1]; - Label2.caption:=etats[2]; - Label3.caption:=etats[3]; - Label4.caption:=etats[4]; - Label5.caption:=etats[5]; - Label6.caption:=etats[6]; - Label7.caption:=etats[7]; - Label8.caption:=etats[8]; - Label9.caption:=etats[9]; - Label10.caption:=etats[10]; - Label11.caption:=etats[11]; - Label12.caption:=etats[12]; - Label13.caption:=etats[13]; - Label14.caption:=etats[14]; - Label15.caption:=etats[15]; - Label16.caption:=etats[16]; - Label17.caption:=etats[17]; - Label18.caption:=etats[18]; - Label19.caption:=etats[19]; - - ImageDigi.Picture:=FormConfig.ImageSignal.Picture; - with ImageDigi.Picture do - begin - Bitmap.TransparentMode:=tmAuto; - Bitmap.TransparentColor:=clblue; - end; - ImageDigi.Transparent:=true; - - Edit1.Text:=intToSTR(Feux[index].SR[1].sortie1); // carré - Edit2.Text:=intToSTR(Feux[index].SR[2].sortie1); // sémaphore - Edit3.Text:=intToSTR(Feux[index].SR[3].sortie1); // sémaphore cli - Edit4.Text:=intToSTR(Feux[index].SR[4].sortie1); - Edit5.Text:=intToSTR(Feux[index].SR[5].sortie1); - Edit6.Text:=intToSTR(Feux[index].SR[6].sortie1); - Edit7.Text:=intToSTR(Feux[index].SR[7].sortie1); - Edit8.Text:=intToSTR(Feux[index].SR[8].sortie1); - Edit9.Text:=intToSTR(Feux[index].SR[9].sortie1); - Edit10.Text:=intToSTR(Feux[index].SR[10].sortie1); - Edit11.Text:=intToSTR(Feux[index].SR[11].sortie1); - Edit12.Text:=intToSTR(Feux[index].SR[12].sortie1); - Edit13.Text:=intToSTR(Feux[index].SR[13].sortie1); - Edit14.Text:=intToSTR(Feux[index].SR[14].sortie1); - Edit15.Text:=intToSTR(Feux[index].SR[15].sortie1); - Edit16.Text:=intToSTR(Feux[index].SR[16].sortie1); - Edit17.Text:=intToSTR(Feux[index].SR[17].sortie1); - Edit18.Text:=intToSTR(Feux[index].SR[18].sortie1); - Edit19.Text:=intToSTR(Feux[index].SR[19].sortie1); - CheckMotif.checked:=InverseMotif; -end; - -procedure Maj_DB; -var s : string; -begin - s:=encode_sig_feux(index); - formconfig.RichSig.Lines[index-1]:=s; - aff_champs_sig_feux(index); -end; - -procedure TFormDigikeijs.Edit1Change(Sender: TObject); -var erreur : integer; -begin - if index<>0 then - begin - val(Edit1.Text,Feux[index].SR[1].sortie1,erreur); - Maj_DB; - end; -end; - -procedure TFormDigikeijs.Edit2Change(Sender: TObject); -var erreur : integer; -begin - if index<>0 then - begin - val(Edit2.Text,Feux[index].SR[2].sortie1,erreur); - Maj_DB; - end; -end; - -procedure TFormDigikeijs.Edit3Change(Sender: TObject); -var erreur : integer; -begin - if index<>0 then - begin - val(Edit3.Text,Feux[index].SR[3].sortie1,erreur); - Maj_DB; - end; -end; - -procedure TFormDigikeijs.Edit4Change(Sender: TObject); -var erreur : integer; -begin - if index<>0 then - begin - val(Edit4.Text,Feux[index].SR[4].sortie1,erreur); - Maj_DB; - end; -end; - -procedure TFormDigikeijs.Edit5Change(Sender: TObject); -var erreur : integer; -begin - if index<>0 then - begin - val(Edit5.Text,Feux[index].SR[5].sortie1,erreur); - Maj_DB; - end; -end; - -procedure TFormDigikeijs.Edit6Change(Sender: TObject); -var erreur : integer; -begin - if index<>0 then - begin - val(Edit6.Text,Feux[index].SR[6].sortie1,erreur); - Maj_DB; - end; -end; - -procedure TFormDigikeijs.Edit7Change(Sender: TObject); -var erreur : integer; -begin - if index<>0 then - begin - val(Edit7.Text,Feux[index].SR[7].sortie1,erreur); - Maj_DB; - end; -end; - -procedure TFormDigikeijs.Edit8Change(Sender: TObject); -var erreur : integer; -begin - if index<>0 then - begin - val(Edit8.Text,Feux[index].SR[8].sortie1,erreur); - Maj_DB; - end; -end; - -procedure TFormDigikeijs.Edit9Change(Sender: TObject); -var erreur : integer; -begin - if index<>0 then - begin - val(Edit9.Text,Feux[index].SR[9].sortie1,erreur); - Maj_DB; - end; -end; - -procedure TFormDigikeijs.Edit10Change(Sender: TObject); -var erreur : integer; -begin - if index<>0 then - begin - val(Edit10.Text,Feux[index].SR[10].sortie1,erreur); - Maj_DB; - end; -end; - -procedure TFormDigikeijs.Edit11Change(Sender: TObject); -var erreur : integer; -begin - if index<>0 then - begin - val(Edit11.Text,Feux[index].SR[11].sortie1,erreur); - Maj_DB; - end; -end; - -procedure TFormDigikeijs.Edit12Change(Sender: TObject); -var erreur : integer; -begin - if index<>0 then - begin - val(Edit12.Text,Feux[index].SR[12].sortie1,erreur); - Maj_DB; - end; -end; - -procedure TFormDigikeijs.Edit13Change(Sender: TObject); -var erreur : integer; -begin - if index<>0 then - begin - val(Edit13.Text,Feux[index].SR[13].sortie1,erreur); - Maj_DB; - end; -end; - -procedure TFormDigikeijs.Edit14Change(Sender: TObject); -var erreur : integer; -begin - if index<>0 then - begin - val(Edit14.Text,Feux[index].SR[14].sortie1,erreur); - Maj_DB; - end; -end; - -procedure TFormDigikeijs.Edit15Change(Sender: TObject); -var erreur : integer; -begin - if index<>0 then - begin - val(Edit15.Text,Feux[index].SR[15].sortie1,erreur); - Maj_DB; - end; -end; - -procedure TFormDigikeijs.Edit16Change(Sender: TObject); -var erreur : integer; -begin - if index<>0 then - begin - val(Edit16.Text,Feux[index].SR[16].sortie1,erreur); - Maj_DB; - end; -end; - -procedure TFormDigikeijs.Edit17Change(Sender: TObject); -var erreur : integer; -begin - if index<>0 then - begin - val(Edit17.Text,Feux[index].SR[17].sortie1,erreur); - Maj_DB; - end; -end; - -procedure TFormDigikeijs.Edit18Change(Sender: TObject); -var erreur : integer; -begin - if index<>0 then - begin - val(Edit18.Text,Feux[index].SR[18].sortie1,erreur); - Maj_DB; - end; -end; - -procedure TFormDigikeijs.Edit19Change(Sender: TObject); -var erreur : integer; -begin - if index<>0 then - begin - val(Edit19.Text,Feux[index].SR[19].sortie1,erreur); - Maj_DB; - end; -end; - -end. diff --git a/UnitPilote.dcu b/UnitPilote.dcu index 6ea4eb9..758bc3b 100644 Binary files a/UnitPilote.dcu and b/UnitPilote.dcu differ diff --git a/UnitPrinc.dcu b/UnitPrinc.dcu index d722452..5d91a14 100644 Binary files a/UnitPrinc.dcu and b/UnitPrinc.dcu differ diff --git a/UnitPrinc.dfm b/UnitPrinc.dfm index b724280..c3247b2 100644 --- a/UnitPrinc.dfm +++ b/UnitPrinc.dfm @@ -1,6 +1,6 @@ object FormPrinc: TFormPrinc - Left = 48 - Top = 231 + Left = 59 + Top = 174 Width = 1213 Height = 670 Caption = 'Signaux complexes' @@ -18,7 +18,7 @@ object FormPrinc: TFormPrinc OnCreate = FormCreate DesignSize = ( 1197 - 612) + 611) PixelsPerInch = 96 TextHeight = 13 object LabelTitre: TLabel @@ -1200,6 +1200,16 @@ object FormPrinc: TFormPrinc Font.Style = [] ParentFont = False end + object Splitter: TSplitter + Left = 0 + Top = 0 + Width = 5 + Height = 589 + Color = clWindowFrame + ParentColor = False + Visible = False + OnMoved = SplitterMoved + end object ScrollBox1: TScrollBox Left = 632 Top = 192 @@ -1263,7 +1273,7 @@ object FormPrinc: TFormPrinc end object StatusBar1: TStatusBar Left = 0 - Top = 590 + Top = 589 Width = 1197 Height = 22 Panels = <> diff --git a/UnitPrinc.pas b/UnitPrinc.pas index d02ebc2..7aa1b59 100644 --- a/UnitPrinc.pas +++ b/UnitPrinc.pas @@ -157,6 +157,7 @@ type SBMarcheArretLoco: TSpeedButton; Label1: TLabel; LabelNbTrains: TLabel; + Splitter: TSplitter; procedure FormCreate(Sender: TObject); procedure MSCommUSBLenzComm(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); @@ -233,6 +234,7 @@ type procedure RazResaClick(Sender: TObject); procedure SBMarcheArretLocoClick(Sender: TObject); procedure EditAdrTrainChange(Sender: TObject); + procedure SplitterMoved(Sender: TObject); private { Déclarations privées } procedure DoHint(Sender : Tobject); @@ -361,20 +363,20 @@ TFeu = record modifie : boolean; // feu modifié EtatSignal : word ; // état du signal AncienEtat : word ; // ancien état du signal - UniSemaf : integer ; // définition supplémentaire de la cible pour les décodeurs UNISEMAF ou du préréglage pour digikeijs + 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 - posAig : char; - end; + Adresse : integer; // 6 feux max associés à un tableau dynamique décrivant les aiguillages +1 position 0 + posAig : char; + end; CondCarre : array[1..6] of array of record // conditions supplémentaires d'aiguillages en position pour le carré - // attention les données sont stockées en adresse 1 du tableau dynamique - Adresse : integer; // aiguillage - posAig : char; - end; - SR : array[1..19] of record // configuration du décodeur Stéphane Ravaut : 8 valeurs maxi - sortie1,sortie0 : integer; - end; - Na : integer; // nombre d'adresses du feu occupées par le décodeur CDF + // attention les données sont stockées en adresse 1 du tableau dynamique + Adresse : integer; // aiguillage + posAig : char; + end; + SR : array[1..19] of record // configuration du décodeur Stéphane Ravaut ou digikeijs ou cdf + sortie1,sortie0 : integer; + end; + Na : integer; // nombre d'adresses du feu occupées par le décodeur CDF/digikeijs end; @@ -382,7 +384,7 @@ var maxaiguillage,detecteur_chgt,Temps,Tempo_init,Suivant,ntrains,MaxPortCom, N_Cv,index_simule,NDetecteurs,N_Trains,N_routes,espY,Tps_affiche_retour_dcc, NbreImagePligne,NbreBranches,Index2_det,Index2_aig,branche_det,ntrains_cdm, - I_simule,maxTablo_act,NbreVoies,El_suivant,N_modules_dcc,NbDet1, + I_simule,maxTablo_act,NbreVoies,El_suivant,N_modules_dcc,NbDet1,ncrois, tempsCli,NbreFeux,pasreponse,AdrDevie,fenetre,Tempo_Aig,Tempo_feu,etat_init_interface, NombreImages,signalCpx,branche_trouve,Indexbranche_trouve,Actuel,Signal_suivant, Nbre_recu_cdm,Tempo_chgt_feux,Adj1,Adj2,NbrePN,ServeurInterfaceCDM,index_couleur, @@ -450,7 +452,6 @@ var entree,sortie, // point d'entrée et de sortie affect_train : integer; // numéro du train affecté end; - ncrois : integer; // Prévision des zones suivantes (en fonction de la position aiguillages) TrainPrevZone : array[1..20] of array[1..5] of integer; // non utilisé @@ -523,7 +524,7 @@ var index_event_det_train : integer; // index du train en cours de roulage du tableau event_det_train end; - // éléments verrouillés + // éléments scannés et/ou verrouillés elements : array[1..20] of record adresse : integer; typ : Tequipement; @@ -552,9 +553,7 @@ var end; Feu_supprime,Feu_sauve : Tfeu; Aig_supprime,Aig_sauve : TAiguillage; - Fimage : Timage; - BrancheN : array[1..MaxBranches,1..MaxElBranches] of TBranche; {$R *.dfm} @@ -608,6 +607,7 @@ procedure Det_Adj(adresse : integer); procedure reserve_canton(detecteur1,detecteur2,adrtrain : integer); function signal_detecteur(detecteur : integer) : integer; function det_suiv_cont(det1,det2 : integer) : integer; +function BTypeToChaine(BT : TEquipement) : string; implementation @@ -638,8 +638,14 @@ begin end; procedure Tformprinc.DoHint(Sender : Tobject); +var s: string; begin - StatusBar1.Simpletext:=Application.Hint; + s:=Application.Hint; + StatusBar1.Simpletext:=s; + if s='insère une ligne au dessus' then + begin + // grise_ligne_TCO; + end; end; // fonctions sur les bits @@ -797,7 +803,6 @@ procedure dessine_feu3(Acanvas : Tcanvas;x,y : integer;frX,frY : real;EtatSignal var Temp,rayon,xSem,Ysem,xJaune,Yjaune,Xvert,Yvert, LgImage,HtImage,code,combine : integer; ech : real; - begin code_to_aspect(Etatsignal,code,combine); rayon:=round(6*frX); @@ -847,7 +852,6 @@ procedure dessine_feu4(Acanvas : Tcanvas;x,y : integer;frX,frY : real;EtatSignal var Temp,rayon,xSem,Ysem,xJaune,Yjaune,Xcarre,Ycarre,Xvert,Yvert, LgImage,HtImage,code,combine : integer; ech : real; - begin code_to_aspect(Etatsignal,code,combine); // et aspect rayon:=round(6*frX); @@ -6635,7 +6639,7 @@ begin end; if AffSignal then begin - s:='Traitement du feu '+intToSTR(Adrfeu)+'------------------------------------'; + s:='Traitement du signal '+intToSTR(Adrfeu)+'------------------------------------'; AfficheDebug(s,clOrange); nivDebug:=3; end; @@ -6707,15 +6711,16 @@ begin // si le signal peut afficher un carré et les aiguillages après le signal sont mal positionnées ou aig réservé ou que pas présence train avant signal et signal // verrouillable au carré, afficher un carré car:=carre_signal(AdrFeu,AdrTrainLoc,reserveTrainTiers); // si reserveTrainTiers, réservé par un autre train + if AffSignal and car then AfficheDebug('le signal a des aiguilles en talon aval mal positionnées',clYellow); // En mode roulage, si la réservation est faite par le train détecté en étape A, ne pas verrouiller au carré if roulage then car:=reserveTrainTiers or car; // conditions supplémentaires de carré en fonction des aiguillages décrits car:=cond_carre(AdrFeu) or car; - if AffSignal and car then AfficheDebug('le signal a des aiguilles en talon aval mal positionnées',clYellow); + //if AffSignal and car then AfficheDebug('le signal a des aiguilles en talon aval mal positionnées',clYellow); if AffSignal and feux[index].VerrouilleCarre then AfficheDebug('le signal est verrouillé au carré',clYellow); - if (modele>=4) and ( (not(PresTrain) and Feux[index].VerrouCarre) or car or feux[index].VerrouilleCarre ) then Maj_Etat_Signal(AdrFeu,carre) + if (modele>=4) and ( (not(PresTrain) and Feux[index].VerrouCarre) or (car and feux[index].VerrouilleCarre) ) then Maj_Etat_Signal(AdrFeu,carre) else begin // si on quitte le détecteur on affiche un sémaphore : tester le sens de circulation @@ -9303,7 +9308,8 @@ begin result:=false; exit; end; - if protocole=1 then + + if protocole=1 then // xpressnet begin groupe:=(adresse-1) div 4; fonction:=((adresse-1) mod 4)*2 + (pilotage-1); @@ -9333,7 +9339,8 @@ begin result:=true; exit; end; - if protocole=2 then + + if protocole=2 then // dcc++ begin event_aig(adresse,pilotage); // en pilotage, on envoie que l'ID cad l'adresse - 0=droit 1=dévié @@ -9346,6 +9353,7 @@ begin result:=true; exit; end; + end; // pas de centrale et pas CDM connecté: on change la position de l'aiguillage @@ -10503,13 +10511,13 @@ begin // descendre le curseur n fois pour sélectionner le serveur for i:=1 to ServeurInterfaceCDM-1 do begin - KeybdInput(VK_DOWN, 0); - KeybdInput(VK_DOWN, KEYEVENTF_KEYUP); + KeybdInput(VK_DOWN,0); + KeybdInput(VK_DOWN,KEYEVENTF_KEYUP); end; // 2x TAB pour pointer sur OK - KeybdInput(VK_TAB, 0);KeybdInput(VK_TAB, KEYEVENTF_KEYUP); - KeybdInput(VK_TAB, 0);KeybdInput(VK_TAB, KEYEVENTF_KEYUP); - KeybdInput(VK_SPACE, 0);KeybdInput(VK_SPACE, KEYEVENTF_KEYUP); + KeybdInput(VK_TAB,0);KeybdInput(VK_TAB,KEYEVENTF_KEYUP); + KeybdInput(VK_TAB,0);KeybdInput(VK_TAB,KEYEVENTF_KEYUP); + KeybdInput(VK_SPACE,0);KeybdInput(VK_SPACE,KEYEVENTF_KEYUP); SendInput(Length(KeyInputs), KeyInputs[0], SizeOf(KeyInputs[0]));SetLength(KeyInputs,0); Sleep(200); @@ -10522,9 +10530,9 @@ begin SendInput(Length(KeyInputs),KeyInputs[0],SizeOf(KeyInputs[0]));SetLength(KeyInputs,0); end; // 2x TAB pour pointer sur OK - KeybdInput(VK_TAB,0);KeybdInput(VK_TAB, KEYEVENTF_KEYUP); - KeybdInput(VK_TAB,0);KeybdInput(VK_TAB, KEYEVENTF_KEYUP); - KeybdInput(VK_SPACE,0);KeybdInput(VK_SPACE, KEYEVENTF_KEYUP); // valide la fenetre d'interface + KeybdInput(VK_TAB,0);KeybdInput(VK_TAB,KEYEVENTF_KEYUP); + KeybdInput(VK_TAB,0);KeybdInput(VK_TAB,KEYEVENTF_KEYUP); + KeybdInput(VK_SPACE,0);KeybdInput(VK_SPACE,KEYEVENTF_KEYUP); // valide la fenetre d'interface SendInput(Length(KeyInputs), KeyInputs[0], SizeOf(KeyInputs[0]));SetLength(KeyInputs,0); Sleep(200); @@ -10681,6 +10689,7 @@ begin TraceSign:=True; configPrete:=false; // form config prete PremierFD:=false; + sauve_tco:=false; // services commIP CDM par défaut ntrains:=0; ntrains_cdm:=0; @@ -10745,6 +10754,18 @@ begin StaticText.Top:=FenRich.Height+FenRich.Top+10; //---------------------------------------- + { + FenRich.Align := alLeft; + FenRich.Width := FormPrinc.ClientWidth div 3; + Splitter.Parent := FormPrinc; + // Make sure the splitter is to the right of the directory list box. + Splitter.Left := FenRich.Left + FenRich.Width + 1; + Splitter.Align := FenRich.Align; // Give it the same alignment as the directory. + // Each pane must be at least one quarter of the form?s width. + Splitter.MinSize := Formprinc.ClientWidth div 4; + //ScrollBox1.Align:=alclient; + } + ferme:=false; CDM_connecte:=false; pasreponse:=0; @@ -10767,43 +10788,14 @@ begin Application.HintHidePause:=30000; visible:=true; // rend la form visible plus tot - // ouvrir le TCO avant de lire la config car en mode DCC++, on va - // recevoir les events détecteurs et la mise à jour du TCO - // !!non il faut ouvrir e TCO après la config - - { - procetape('Debug et TCO'); - if debug=1 then affiche('Ouverture du debug',clLime); - formdebug:=TformDebug.Create(nil); - i:=0; - repeat - application.processmessages; - inc(i); - until (DebugAffiche) or (i>15); - if not(DebugAffiche) then Affiche('Erreur : fenêtre debug non créée',clred); - if debugAffiche and (Debug=1) then Affiche('Fenêtre Debug créée',clYellow); - - if debug=1 then affiche('Ouverture du TCO',clLime); - - //créée la fenêtre TCO non modale avant la fin de la création de formprinc - FormTCO:=TformTCO.Create(nil); - i:=0; - repeat - application.processmessages; - inc(i); - until (TcoOuvert) or (i>15); - if not(TCOOUvert) then Affiche('Erreur : fenêtre TCO non créée',clred); - if TCOOuvert and (Debug=1) then Affiche('Fenêtre TCO créée',clYellow); - } - - // TCO - for i:=1 to MaxCdeDccpp do CdeDccpp[i]:=''; // lecture fichiers de configuration procetape('Lecture de la configuration'); lit_config; procetape('Lecture du TCO'); lire_fichier_tco; + verif_coherence; + procetape('La configuration a été lue'); if protocole=1 then @@ -11001,10 +10993,15 @@ procedure TFormPrinc.FormClose(Sender: TObject; var Action: TCloseAction); begin Ferme:=true; - if portCommOuvert then begin portCommOuvert:=false;MSCommUSBLenz.Portopen:=false; end; + if portCommOuvert then + begin + portCommOuvert:=false; + MSCommUSBLenz.Portopen:=false; + end; portCommOuvert:=false; ClientSocketCDM.close; ClientSocketInterface.close; + timer1.Enabled:=false; if TCO_modifie then if MessageDlg('Le TCO a été modifié. Voulez vous le sauvegarder ?',mtConfirmation,[mbYes,mbNo],0)=mrYes then sauve_fichier_tco; @@ -11012,6 +11009,7 @@ begin if MessageDlg('La configuration a été modifiée. Voulez vous la sauvegarder ?',mtConfirmation,[mbYes,mbNo],0)=mrYes then sauve_config; if confasauver then sauve_config; + if sauve_tco then sauve_fichier_tco; Application.ProcessMessages; end; @@ -11082,7 +11080,7 @@ begin 5 : ImageFeu:=Formprinc.Image5feux; 7 : ImageFeu:=Formprinc.Image7feux; 9 : ImageFeu:=Formprinc.Image9feux; - else ImageFeu:=Formprinc.Image3feux; + else ImageFeu:=Formprinc.Image3feux; end; TailleY:=ImageFeu.picture.BitMap.Height; // taille du feu d'origine (verticale) @@ -12892,7 +12890,7 @@ begin inc(i); until (i>NbMemZone); - Affiche('Derniers élements verrouillés:',clWhite); + Affiche('Derniers éléments scannés:',clWhite); for i:=1 to idEl do begin Affiche(IntToSTR(elements[i].adresse),clLime); @@ -13286,7 +13284,8 @@ procedure TFormPrinc.Button1Click(Sender: TObject); begin placement_trains; //ouvre_simulation('C:\Program Files (x86)\Borland\Delphi7\Projects\Signaux_complexes_GL\2trains_autonome.txt'); - ouvre_simulation('C:\Program Files\Borland\Delphi7\Projects\Signaux_complexes_GL\2trains_autonome.txt'); + //ouvre_simulation('C:\Program Files\Borland\Delphi7\Projects\Signaux_complexes_GL\2trains_autonome.txt'); + ouvre_simulation('C:\temp\Signaux_complexes_GL\2trains_autonome.txt'); end; @@ -13369,5 +13368,12 @@ procedure TFormPrinc.EditAdrTrainChange(Sender: TObject); end; +procedure TFormPrinc.SplitterMoved(Sender: TObject); +begin + ScrollBox1.left:=Splitter.Left+10; + ScrollBox1.width:=width-scrollBox1.left-20; +end; + + end. diff --git a/UnitSR.dcu b/UnitSR.dcu index 2dad236..bcdc5be 100644 Binary files a/UnitSR.dcu and b/UnitSR.dcu differ diff --git a/UnitSimule.dcu b/UnitSimule.dcu index 2b2ec4f..ac00a28 100644 Binary files a/UnitSimule.dcu and b/UnitSimule.dcu differ diff --git a/UnitTCO.dcu b/UnitTCO.dcu index e13c38e..6beab16 100644 Binary files a/UnitTCO.dcu and b/UnitTCO.dcu differ diff --git a/UnitTCO.dfm b/UnitTCO.dfm index 9da0c5f..3e980b4 100644 --- a/UnitTCO.dfm +++ b/UnitTCO.dfm @@ -1,8 +1,8 @@ object FormTCO: TFormTCO - Left = 179 - Top = 15 - Width = 1139 - Height = 686 + Left = 132 + Top = 127 + Width = 1132 + Height = 728 VertScrollBar.Visible = False Caption = 'FormTCO' Color = clBtnFace @@ -21,8 +21,8 @@ object FormTCO: TFormTCO OnKeyDown = FormKeyDown OnMouseWheel = FormMouseWheel DesignSize = ( - 1131 - 655) + 1124 + 697) PixelsPerInch = 96 TextHeight = 13 object LabelCoord: TLabel @@ -72,8 +72,8 @@ object FormTCO: TFormTCO Height = 97 end object Label19: TLabel - Left = 1075 - Top = 399 + Left = 1068 + Top = 441 Width = 32 Height = 13 Anchors = [akRight, akBottom] @@ -88,8 +88,8 @@ object FormTCO: TFormTCO object ScrollBox: TScrollBox Left = 8 Top = 18 - Width = 1057 - Height = 367 + Width = 1050 + Height = 409 HorzScrollBar.Smooth = True HorzScrollBar.Tracking = True VertScrollBar.Smooth = True @@ -100,18 +100,17 @@ object FormTCO: TFormTCO ParentColor = False TabOrder = 0 DesignSize = ( - 1053 - 363) + 1046 + 405) object ImageTCO: TImage Left = 0 Top = 0 - Width = 1009 - Height = 337 + Width = 1002 + Height = 379 Anchors = [akLeft, akTop, akRight, akBottom] ParentShowHint = False PopupMenu = PopupMenu1 ShowHint = True - OnClick = ImageTCOClick OnContextPopup = ImageTCOContextPopup OnDblClick = ImageTCODblClick OnDragOver = ImageTCODragOver @@ -121,10 +120,10 @@ object FormTCO: TFormTCO end end object TrackBarZoom: TTrackBar - Left = 1075 + Left = 1068 Top = 18 Width = 41 - Height = 358 + Height = 400 Anchors = [akTop, akRight, akBottom] Max = 50 Min = 20 @@ -136,8 +135,8 @@ object FormTCO: TFormTCO end object Panel1: TPanel Left = 0 - Top = 480 - Width = 1121 + Top = 522 + Width = 1114 Height = 165 Anchors = [akLeft, akRight, akBottom] Color = clActiveBorder @@ -150,7 +149,7 @@ object FormTCO: TFormTCO TabOrder = 2 OnDragOver = Panel1DragOver DesignSize = ( - 1121 + 1114 165) object ImagePalette5: TImage Left = 520 @@ -720,7 +719,7 @@ object FormTCO: TFormTCO ParentFont = False end object ButtonSauveTCO: TButton - Left = 1013 + Left = 1006 Top = 48 Width = 92 Height = 33 @@ -731,7 +730,7 @@ object FormTCO: TFormTCO OnClick = ButtonSauveTCOClick end object ButtonRedessine: TButton - Left = 1013 + Left = 1006 Top = 8 Width = 92 Height = 33 @@ -759,7 +758,7 @@ object FormTCO: TFormTCO OnClick = Button2Click end object ButtonConfigTCO: TButton - Left = 1013 + Left = 1006 Top = 88 Width = 92 Height = 33 @@ -778,7 +777,7 @@ object FormTCO: TFormTCO OnClick = ButtonSimuClick end object ButtonMasquer: TButton - Left = 1013 + Left = 1006 Top = 128 Width = 92 Height = 33 @@ -792,7 +791,7 @@ object FormTCO: TFormTCO Left = 16 Top = 8 Width = 185 - Height = 137 + Height = 153 Caption = 'Configuration cellule' Font.Charset = ANSI_CHARSET Font.Color = clBackground @@ -853,9 +852,15 @@ object FormTCO: TFormTCO Font.Style = [] ParentFont = False end + object ShapeCoulFond: TShape + Left = 160 + Top = 130 + Width = 18 + Height = 18 + end object EditAdrElement: TEdit Left = 144 - Top = 16 + Top = 12 Width = 33 Height = 21 Font.Charset = ANSI_CHARSET @@ -870,7 +875,7 @@ object FormTCO: TFormTCO end object EditTypeImage: TEdit Left = 144 - Top = 40 + Top = 36 Width = 33 Height = 21 Font.Charset = ANSI_CHARSET @@ -893,7 +898,7 @@ object FormTCO: TFormTCO end object EditTexte: TEdit Left = 88 - Top = 64 + Top = 60 Width = 89 Height = 21 TabOrder = 3 @@ -915,9 +920,9 @@ object FormTCO: TFormTCO 'Bas') end object CheckPinv: TCheckBox - Left = 16 - Top = 112 - Width = 161 + Left = 8 + Top = 110 + Width = 113 Height = 17 Hint = 'Cocher si l'#39'aiguillage est repr'#233'sent'#233' invers'#233 Caption = 'aiguillage invers'#233 @@ -932,9 +937,18 @@ object FormTCO: TFormTCO TabOrder = 5 OnClick = CheckPinvClick end + object ButtonCoulFond: TButton + Left = 80 + Top = 130 + Width = 81 + Height = 18 + Caption = 'Couleur de fond' + TabOrder = 6 + OnClick = ButtonCoulFondClick + end end object buttonRaz: TButton - Left = 909 + Left = 902 Top = 128 Width = 92 Height = 33 @@ -944,10 +958,19 @@ object FormTCO: TFormTCO WordWrap = True OnClick = buttonRazClick end + object ButtonCalibrage: TButton + Left = 560 + Top = 112 + Width = 75 + Height = 25 + Caption = 'Calibrage' + TabOrder = 9 + OnClick = ButtonCalibrageClick + end end object ButtonAfficheBandeau: TButton - Left = 1067 - Top = 423 + Left = 1060 + Top = 465 Width = 57 Height = 33 Anchors = [akRight, akBottom] @@ -1014,6 +1037,7 @@ object FormTCO: TFormTCO Caption = 'Inserer' object LigneDessus: TMenuItem Caption = 'Ligne au dessus' + Hint = 'ins'#232're une ligne au dessus' OnClick = LigneDessusClick end object LigneDessous: TMenuItem @@ -1061,4 +1085,9 @@ object FormTCO: TFormTCO Left = 256 Top = 432 end + object ColorDialog1: TColorDialog + OnShow = ColorDialog1Show + Left = 448 + Top = 456 + end end diff --git a/UnitTCO.pas b/UnitTCO.pas index 7fd5ec1..86d58e3 100644 --- a/UnitTCO.pas +++ b/UnitTCO.pas @@ -4,8 +4,8 @@ interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, Grids , UnitPrinc, StdCtrls, ExtCtrls, Menus, UnitPilote, UnitDebug, - ComCtrls ; + Dialogs, Grids , UnitPrinc, StdCtrls, ExtCtrls, Menus, UnitPilote, UnitDebug, + ComCtrls ,StrUtils, math ; type TFormTCO = class(TForm) @@ -114,8 +114,11 @@ type Colonnegauche1: TMenuItem; Colonnedroite1: TMenuItem; buttonRaz: TButton; + ButtonCalibrage: TButton; + ButtonCoulFond: TButton; + ColorDialog1: TColorDialog; + ShapeCoulFond: TShape; procedure FormCreate(Sender: TObject); - procedure ImageTCOClick(Sender: TObject); procedure FormActivate(Sender: TObject); procedure ImageTCOContextPopup(Sender: TObject; MousePos: TPoint; var Handled: Boolean); @@ -301,9 +304,12 @@ type procedure Colonnedroite1Click(Sender: TObject); procedure ColonneClick(Sender: TObject); procedure buttonRazClick(Sender: TObject); - procedure FormMouseWheel(Sender: TObject; Shift: TShiftState; + procedure FormMouseWheel(Sender: TObject; Shift: TShiftState; WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); - + procedure ButtonCalibrageClick(Sender: TObject); + procedure ButtonCoulFondClick(Sender: TObject); + procedure ColorDialog1Show(Sender: TObject); + private { Déclarations privées } public @@ -319,6 +325,7 @@ const clGrille_ch='CoulGrille'; clTexte_ch='CoulTexte'; clQuai_ch='CoulQuai'; + clPiedSignal_ch='CoulPiedSig'; Matrice_ch='Matrice'; Cellule_ch='Cellule'; ClCanton_ch='CoulCanton'; @@ -335,12 +342,12 @@ type trajet : integer; // décrit le trajet ouvert sur la voie (cas d'un croisement ou d'ue tjd/S) inverse : boolean; // aiguillage piloté inversé repr : integer; // position de la représentation texte 0 = rien 1=centrale 2=Haut 3=Bas - Texte : string; // texte de la cellule - Fonte : string; // fonte du texte - FontStyle : string; // GSIB (Gras Souligné Italique Barré) + Texte : string; // texte de la cellule + Fonte : string; // fonte du texte + FontStyle : string; // GSIB (Gras Souligné Italique Barré) coulFonte : Tcolor; TailleFonte : integer; - Couleur : Tcolor; // couleur non utilisée + CouleurFond : Tcolor; // couleur de fond // pour les feux seulement PiedFeu : integer; // type de pied au feu : signal à gauche=1 ou à droite=2 de la voie x,y : integer ; // coordonnées pixels relativés du coin sup gauche du feu pour le décalage par rapport à la cellule @@ -348,10 +355,10 @@ type end; var - clAllume,clVoies,Fond,couleurAdresse,clGrille,cltexte,clQuai,CoulFonte,ClCanton : Tcolor; + clAllume,clVoies,clFond,couleurAdresse,clGrille,cltexte,clQuai,CoulFonte,ClCanton,clPiedSignal : Tcolor; FormTCO: TFormTCO; Forminit,sourisclic,SelectionAffichee,TamponAffecte,entoure,Diffusion,TCO_modifie, - clicTCO,piloteAig,BandeauMasque,eval_format,TCOouvert : boolean; + clicTCO,piloteAig,BandeauMasque,eval_format,TCOouvert,sauve_tco : boolean; HtImageTCO,LargImageTCO,XclicCell,YclicCell,XminiSel,YminiSel,XCoupe,Ycoupe,Temposouris, XmaxiSel,YmaxiSel,AncienXMiniSel,AncienXMaxiSel ,AncienYMiniSel,AncienYMaxiSel, Xclic,Yclic,XClicCellInserer,YClicCellInserer,Xentoure,Yentoure,RatioC,ModeCouleurCanton, @@ -366,7 +373,7 @@ var TamponTCO_Org : record x1,y1,x2,y2,NbreCellX,NbreCellY : integer; end; - routeTCO : array[1..100] of record + routeTCO : array[1..500] of record x,y : integer; end; @@ -374,7 +381,7 @@ var PCanvasTCO : Tcanvas; PBitMapTCO : TBitMap; PScrollBoxTCO : TScrollBox; - PImageTCO,PImageTemp : Timage; + PImageTCO,PImageTemp,attached : Timage; frXGlob,frYGlob : real; procedure calcul_reduction(Var frx,fry : real;DimDestX,DimDestY,DimOrgX,DimOrgY : integer); @@ -393,6 +400,8 @@ procedure Vertical; procedure signalG; procedure signalD; procedure lire_fichier_tco; +procedure grise_ligne_tco; +procedure change_couleur_fond; implementation @@ -403,11 +412,10 @@ uses UnitConfigTCO, Unit_Pilote_aig, UnitConfigCellTCO; procedure lire_fichier_tco; var fichier : textfile; s,sa : string; - nv,x,y,i,j,m,adresse,valeur,erreur,FeuOriente,PiedFeu,tailleFont : integer; - e : integer; + nv,x,y,i,j,m,adresse,valeur,erreur,FeuOriente,PiedFeu,tailleFont,e,NPar : integer; trouve_CoulFond,trouve_clVoies,trouve_clAllume,trouve_clGrille,trouve_clCanton, trouve_clTexte,trouve_clQuai,trouve_matrice,trouve_ratio,trouve_ModeCanton, - trouve_AvecGrille : boolean; + trouve_AvecGrille,trouve_clPiedSignal : boolean; function lit_ligne : string ; var c : char; begin @@ -439,6 +447,7 @@ begin trouve_clVoies:=false; trouve_clGrille:=false; trouve_clTexte:=false; + trouve_clPiedSignal:=false; trouve_clQuai:=false; trouve_matrice:=false; trouve_ratio:=false; @@ -461,10 +470,9 @@ begin trouve_CoulFond:=true; delete(s,i,length(sa)); val('$'+s,i,erreur); - fond:=i; + clfond:=i; // eval_format:=true; - end ; - + end; sa:=uppercase(clVoies_ch)+'='; i:=pos(sa,s); @@ -521,7 +529,17 @@ begin clQuai:=i; end; - // nouveaux ----------------------------------------------------- + sa:=uppercase(clPiedSignal_ch)+'='; + i:=pos(sa,s); + if i<>0 then + begin + inc(nv); + trouve_clPiedSignal:=true; + delete(s,i,length(sa)); + val('$'+s,i,erreur); + clPiedSignal:=i; + end; + sa:=uppercase(ClCanton_ch)+'='; i:=pos(sa,s); if i<>0 then @@ -626,15 +644,28 @@ begin Affiche(s,clYellow); Affiche('ETCO1',clred);closefile(fichier);exit; end; - delete(s,i,1); + delete(s,1,i); + // compter le nombre de virgules avant le ) + npar:=0;i:=0; + j:=pos(')',s); + repeat + i:=posEx(',',s,i+1); + inc(npar); + until (i>j) or (i=0); - // rien + if npar<>13 then sauve_tco:=true; + + // 1 couleur de fond i:=pos(',',s); if i=0 then begin Affiche('ETCO2',clred);closefile(fichier);exit;end; - val(copy(s,1,i-1),valeur,erreur);if erreur<>0 then begin Affiche('ETCO3',clred);closefile(fichier);exit;end; + val('$'+copy(s,1,i-1),CoulFonte,erreur); + if erreur<>0 then begin Affiche('ETCO3',clred);closefile(fichier);exit;end; + if coulFonte=0 then + begin coulFonte:=clfond;sauve_tco:=true;end; + tco[x,y].CouleurFond:=coulFonte; delete(s,1,i); - // Adresse + // 2 Adresse i:=pos(',',s); if i=0 then begin Affiche('ETCO4',clred);closefile(fichier);exit;end; val(copy(s,1,i-1),adresse,erreur); @@ -642,27 +673,27 @@ begin tco[x,y].adresse:=adresse; delete(s,1,i); - //Bimage + //3 Bimage i:=pos(',',s); if i=0 then begin Affiche('ETCO6',clred);closefile(fichier);exit;end; val(copy(s,1,i-1),valeur,erreur);if erreur<>0 then begin Affiche('ETCO7',clred);closefile(fichier);exit;end; tco[x,y].Bimage:=valeur; delete(s,1,i); - //Inverse + //4 Inverse i:=pos(',',s); if i=0 then begin Affiche('ETCO8',clred);closefile(fichier);exit;end; val(copy(s,1,i-1),valeur,erreur);if erreur<>0 then begin Affiche('ETCO9',clred);closefile(fichier);exit;end; tco[x,y].inverse:=valeur=1; delete(s,1,i); - // FeuOriente + // 5 FeuOriente i:=pos(',',s); if i=0 then begin Affiche('ETCO10',clred);closefile(fichier);exit;end; val(copy(s,1,i-1),FeuOriente,erreur);if erreur<>0 then begin Affiche('ETCO11',clred);closefile(fichier);exit;end; delete(s,1,i); - // PiedFeu + // 6 PiedFeu i:=pos(',',s); //j:=pos(')',s); //if j2 then PiedFeu:=2; TCO[x,y].PiedFeu:=PiedFeu; end; - end; - // texte optionnel + // 7 texte optionnel j:=pos(')',s); i:=pos(',',s); tco[x,y].Texte:=''; @@ -699,40 +729,48 @@ begin delete(s,1,m-1); end; + // 8 représentation if s[1]=',' then delete(s,1,1); val(s,j,erreur); tco[x,y].repr:=j; delete(s,1,erreur-1); - if s[1]=',' then - begin - // fonte - delete(s,1,1); - i:=pos(',',s); - tco[x,y].fonte:=copy(s,1,i-1); + + // 9 fonte + if s[1]=',' then delete(s,1,1); + i:=pos(',',s); + tco[x,y].fonte:=copy(s,1,i-1); //Affiche(fonte,clyellow); - Delete(s,1,i); + Delete(s,1,i); - Val(s,taillefont,erreur); - tco[x,y].TailleFonte:=taillefont; - delete(s,1,erreur); + // 10 taille fonte + Val(s,taillefont,erreur); + tco[x,y].TailleFonte:=taillefont; + delete(s,1,erreur); - i:=pos(',',s); - val('$'+s,coulFonte,erreur); - tco[x,y].coulFonte:=coulFonte; - delete(s,1,i); - if s[1]<>')' then - begin - // style GISB - i:=pos(')',s); - tco[x,y].fontstyle:=copy(s,1,i-1); - end; - - i:=pos(')',s); - //Affiche(IntToHEX(coulFonte,6),clred); - delete(s,1,i); + // 11 couleur fonte + i:=pos(',',s); + val('$'+s,coulFonte,erreur); + tco[x,y].coulFonte:=coulFonte; + delete(s,1,i); + //12 style + if (s[1]<>')') and (s[1]<>',') then + begin + // style GISB + i:=pos(')',s); j:=pos(',',s); + if j0 then delete(s,1,i); + inc(x); until s=''; end; @@ -742,6 +780,8 @@ begin e:=sizeof(Tco) div 1024; //Affiche('Dimensions du tco : '+intToSTR(NbreCellX)+'x'+intToSTR(NbreCellY)+' / '+IntToSTR(e)+'Ko',clyellow); + if not(trouve_clPiedSignal) then clPiedSignal:=Clvoies; + end; procedure sauve_fichier_tco; @@ -753,12 +793,13 @@ begin AssignFile(fichier,'tco.cfg'); rewrite(fichier); Writeln(fichier,'/ Définitions'); - Writeln(fichier,clFond_ch+'='+IntToHex(fond,6)); + Writeln(fichier,clFond_ch+'='+IntToHex(clfond,6)); Writeln(fichier,clVoies_ch+'='+IntToHex(ClVoies,6)); Writeln(fichier,clAllume_ch+'='+IntToHex(ClAllume,6)); Writeln(fichier,clGrille_ch+'='+IntToHex(ClGrille,6)); Writeln(fichier,clTexte_ch+'='+IntToHex(ClTexte,6)); Writeln(fichier,clQuai_ch+'='+IntToHex(ClQuai,6)); + Writeln(fichier,clPiedSignal_ch+'='+intToHex(clPiedSignal,6)); Writeln(fichier,ClCanton_ch+'='+IntToHex(ClCanton,6)); Writeln(fichier,ModeCouleurCanton_ch+'='+intToSTR(ModeCouleurCanton)); if avecGrille then s:='1' else s:='0'; @@ -770,13 +811,13 @@ begin writeln(fichier,Ratio_ch+'='+intToSTR(ratioC)); writeln(fichier,'/Matrice TCO'); writeln(fichier,'[Matrice]'); - writeln(fichier,'/ inutilisé,adresse,image,inversion aiguillage,Orientation du feu, pied du feu , [texte], representation, fonte, taille fonte, couleur fonte, style '); + writeln(fichier,'/ couleur fond,adresse,image,inversion aiguillage,Orientation du feu, pied du feu , [texte], representation, fonte, taille fonte, couleur fonte, style, réserve '); for y:=1 to NbreCellY do begin s:=''; for x:=1 to NbreCellX do begin - s:=s+'(0,'+inttostr(TCO[x,y].Adresse)+','+IntToSTR(TCO[x,y].BImage)+','; + s:=s+'('+intToHex(TCO[x,y].CouleurFond,6)+','+inttostr(TCO[x,y].Adresse)+','+IntToSTR(TCO[x,y].BImage)+','; if TCO[x,y].inverse then s:=s+'1,' else s:=s+'0,'; @@ -798,6 +839,7 @@ begin couleurfonte:=TCO[x,y].coulFonte; s:=s+','+intTohex(couleurFonte,6); s:=s+','+TCO[x,y].FontStyle; + s:=s+',0'; s:=s+')'; end; writeln(fichier,s); @@ -820,9 +862,10 @@ procedure entoure_cell_grille(x,y : integer); // jour de la cellule var Xorg,Yorg : integer; begin; + if not(AvecGrille) then exit; Xorg:=(x-1)*LargeurCell; Yorg:=(y-1)*HauteurCell; - if AvecGrille then With PcanvasTCO do + With PcanvasTCO do begin Pen.Color:=clGrille; Pen.mode:=PmCopy; @@ -843,7 +886,8 @@ begin With PCanvasTCO do begin pen.color:=ClGrille; - Brush.Color:=Fond; + pen.Width:=1; + Brush.Color:=ClFond; pen.mode:=PmCopy; // lignes verticales for x:=1 to NbreCellX do @@ -886,7 +930,7 @@ begin with canvas do begin - Brush.Color:=Fond; + Brush.Color:=TCO[x,y].CouleurFond; Pen.Mode:=pmCopy; r:=Rect(x0,y0,x0+LargeurCell,y0+HauteurCell); FillRect(r); @@ -979,7 +1023,7 @@ var x0,y0,xc,yc,jy1,jy2,xf,yf,position : integer; pen.color:=clvoies; Brush.Color:=clvoies; moveto(x0,yc);LineTo(xc,yc); - + if mode=1 then couleur:=ClCanton; if mode=2 then couleur:=couleurtrain[index_couleur]; pen.color:=couleur; @@ -1001,8 +1045,8 @@ begin with canvas do begin Pen.Width:=1; - Brush.Color:=fond; - Pen.Color:=fond; + Brush.Color:=TCO[x,y].CouleurFond; + Pen.Color:=TCO[x,y].CouleurFond;; r:=Rect(x0,y0,xf,yf); FillRect(r); // efface la cellule @@ -1024,8 +1068,8 @@ begin if (position=const_Devie) then begin // effacement du morceau - pen.color:=fond; - Brush.Color:=fond; + pen.color:=Clfond; + Brush.Color:=Clfond; pen.width:=1; jy1:=yc-(Epaisseur div 2); // pos Y de la bande sup pen.width:=1; @@ -1035,8 +1079,8 @@ begin if position=const_droit then begin // effacement du morceau - pen.color:=fond; - Brush.Color:=fond; + pen.color:=Clfond; + Brush.Color:=Clfond; pen.Width:=1; jy2:=yc+(Epaisseur div 2); // pos Y de la bande inf r:=rect(x0+1,jy2+1,x0+largeurCell-1,jy2+epaisseur); @@ -1047,6 +1091,7 @@ end; procedure dessin_3(Canvas : Tcanvas;x,y : integer;Mode : integer); var x0,y0,xc,yc,jy1,xf,yf,position : integer; + fond : Tcolor; r : Trect; procedure trajet_droit; @@ -1101,7 +1146,7 @@ var x0,y0,xc,yc,jy1,xf,yf,position : integer; pen.color:=clvoies; Brush.Color:=clvoies; moveto(xc,yc);LineTo(xf,yc); - + if mode=1 then couleur:=ClCanton; if mode=2 then couleur:=couleurtrain[index_couleur]; pen.color:=couleur; @@ -1119,6 +1164,7 @@ begin xf:=x0+largeurCell; // x fin yf:=y0+HauteurCell; // y fin position:=positionTCO(x,y); + fond:=TCO[x,y].CouleurFond; with canvas do begin @@ -1146,8 +1192,8 @@ begin if (position=const_Devie) then begin // effacement du morceau - pen.color:=fond; - Brush.Color:=fond; + pen.color:=Clfond; + Brush.Color:=Clfond; pen.width:=1; pen.width:=1; Polygon([point(xc+epaisseur-4,yc+epaisseur-1),point(xc+2*epaisseur-1,yc-epaisseur),point(xc+3*epaisseur,yc-epaisseur),point(xc+2*epaisseur,yc+epaisseur-1)]); @@ -1156,8 +1202,8 @@ begin if position=const_droit then begin // effacement du morceau - pen.color:=fond; - Brush.Color:=fond; + pen.color:=Clfond; + Brush.Color:=Clfond; pen.Width:=1; jy1:=yc-(Epaisseur div 2); // pos Y de la bande sup r:=rect(x0+1,jy1,x0+largeurCell-1,jy1-epaisseur); @@ -1169,11 +1215,12 @@ end; procedure dessin_4(Canvas : Tcanvas;x,y : integer;Mode : integer); var x0,y0,xc,yc,xf,yf,x1,x2,y1,y2,x3,y3,x4,y4,position : integer; r : Trect; + fond : tcolor; procedure trajet_droit; begin if mode=0 then - with canvas do + with canvas do begin pen.color:=clvoies; Brush.Color:=clvoies; @@ -1240,6 +1287,7 @@ begin xf:=x0+largeurCell; // x fin yf:=y0+HauteurCell; // y fin position:=positionTCO(x,y); + fond:=TCO[x,y].CouleurFond; with canvas do begin @@ -1267,8 +1315,8 @@ begin if (position=const_Devie) then begin // effacement du morceau - pen.color:=fond; - Brush.Color:=fond; + pen.color:=Clfond; + Brush.Color:=Clfond; pen.width:=1; x1:=xc+(epaisseur div 2);y1:=yc-(epaisseur div 2)-1; x2:=x1+8;y2:=y1; @@ -1280,8 +1328,8 @@ begin if position=const_droit then begin // effacement du morceau - pen.color:=fond; - Brush.Color:=fond; + pen.color:=Clfond; + Brush.Color:=Clfond; pen.Width:=1; // efface le morceau x1:=xc-epaisseur-1;y1:=yc+(epaisseur div 2)+1; @@ -1295,6 +1343,7 @@ end; procedure dessin_5(Canvas : Tcanvas;x,y : integer;Mode : integer); var x0,y0,xc,yc,xf,yf,x1,x2,y1,y2,x3,y3,x4,y4,position : integer; r : Trect; + fond : tcolor; procedure trajet_droit; begin @@ -1366,6 +1415,7 @@ begin xf:=x0+largeurCell; // x fin yf:=y0+HauteurCell; // y fin position:=positionTCO(x,y); + fond:=TCO[x,y].CouleurFond; with canvas do begin @@ -1398,8 +1448,8 @@ begin x2:=x1-epaisseur;y2:=y1; x3:=x2-epaisseur;y3:=y2-epaisseur-1; x4:=x3+epaisseur;y4:=y3; - pen.color:=fond; - Brush.Color:=fond; + pen.color:=Clfond; + Brush.Color:=Clfond; Polygon([point(x1,y1),Point(x2,y2),Point(x3,y3),Point(x4,y4)]); end; @@ -1410,8 +1460,8 @@ begin // efface le morceau x1:=xc-(epaisseur div 2)-10;y1:=yc-(epaisseur div 2); x2:=x1+20;y2:=y1-epaisseur; - pen.color:=fond; - Brush.Color:=fond; + pen.color:=Clfond; + Brush.Color:=Clfond; r:=rect(x1,y1,x2,y2); rectangle(r); end; @@ -1430,7 +1480,7 @@ begin yc:=y0+(hauteurCell div 2); with canvas do begin - Brush.Color:=Fond; + Brush.Color:=TCO[x,y].CouleurFond; Pen.Width:=1; r:=Rect(x0,y0,x0+LargeurCell,y0+HauteurCell); FillRect(r); @@ -1460,7 +1510,7 @@ begin with canvas do begin - Brush.Color:=Fond; + Brush.Color:=TCO[x,y].CouleurFond; Pen.Width:=1; r:=Rect(x0,y0,x0+LargeurCell,y0+HauteurCell); FillRect(r); @@ -1490,7 +1540,7 @@ begin with canvas do begin - Brush.Color:=Fond; + Brush.Color:=TCO[x,y].CouleurFond; Pen.Width:=1; r:=Rect(x0,y0,x0+LargeurCell,y0+HauteurCell); FillRect(r); @@ -1520,7 +1570,7 @@ begin with canvas do begin - Brush.Color:=Fond; + Brush.Color:=TCO[x,y].CouleurFond; Pen.Width:=1; r:=Rect(x0,y0,x0+LargeurCell,y0+HauteurCell); FillRect(r); @@ -1548,7 +1598,7 @@ begin with canvas do begin - Brush.Color:=Fond; + Brush.Color:=TCO[x,y].CouleurFond; Pen.Width:=1; r:=Rect(x0,y0,x0+LargeurCell,y0+HauteurCell); FillRect(r); @@ -1579,7 +1629,7 @@ begin with canvas do begin - Brush.Color:=Fond; + Brush.Color:=TCO[x,y].CouleurFond; Pen.Width:=1; r:=Rect(x0,y0,x0+LargeurCell,y0+HauteurCell); FillRect(r); @@ -1605,6 +1655,7 @@ end; procedure dessin_12(Canvas : Tcanvas;x,y : integer;Mode : integer); var x0,y0,xc,yc,xf,yf,x1,x2,y1,y2,x3,y3,x4,y4,position : integer; r : Trect; + fond : tcolor; procedure trajet_droit; begin @@ -1675,6 +1726,7 @@ begin xf:=x0+largeurCell; // x fin yf:=y0+HauteurCell; // y fin position:=positionTCO(x,y); + fond:=TCO[x,y].CouleurFond; with canvas do begin @@ -1707,8 +1759,8 @@ begin x2:=x1+3*epaisseur;y2:=y1; x3:=x2;y3:=y2+epaisseur; x4:=x1;y4:=y3; - pen.color:=fond; - Brush.COlor:=fond; + pen.color:=Clfond; + Brush.COlor:=Clfond; Polygon([point(x1,y1),Point(x2,y2),Point(x3,y3),Point(x4,y4)]); end; @@ -1720,8 +1772,8 @@ begin x2:=x1+epaisseur;y2:=y1; x3:=x2+epaisseur+2;y3:=y2+epaisseur+2; x4:=x3-epaisseur;y4:=y3; - pen.color:=fond; - Brush.COlor:=fond; + pen.color:=Clfond; + Brush.COlor:=Clfond; Polygon([point(x1,y1),Point(x2,y2),Point(x3,y3),Point(x4,y4)]); end; end; @@ -1731,6 +1783,7 @@ end; procedure dessin_13(Canvas : Tcanvas;x,y : integer;Mode : integer); var x0,y0,xc,yc,xf,yf,x1,x2,y1,y2,x3,y3,x4,position : integer; r : Trect; + fond : tcolor; procedure trajet_droit; begin @@ -1801,6 +1854,7 @@ begin xf:=x0+largeurCell; // x fin yf:=y0+HauteurCell; // y fin position:=positionTCO(x,y); + fond:=TCO[x,y].CouleurFond; with canvas do begin @@ -1856,6 +1910,7 @@ end; procedure dessin_14(Canvas : Tcanvas;x,y : integer;Mode : integer); var x0,y0,xc,yc,xf,yf,x1,x2,y1,y2,x3,y3,x4,y4,position : integer; r : Trect; + fond : tcolor; procedure trajet_droit; begin @@ -1927,6 +1982,7 @@ begin xf:=x0+largeurCell; // x fin yf:=y0+HauteurCell; // y fin position:=positionTCO(x,y); + fond:=TCO[x,y].CouleurFond; with canvas do begin @@ -1948,7 +2004,7 @@ begin if (position=const_droit) or (position=const_inconnu) then begin - trajet_droit; + trajet_droit; end; if (position=const_Devie) then @@ -1982,6 +2038,7 @@ end; procedure dessin_15(Canvas : Tcanvas;x,y : integer;Mode : integer); var x0,y0,xc,yc,xf,yf,x1,x2,y1,y2,x3,position : integer; r : Trect; + fond : Tcolor; procedure trajet_droit; begin @@ -2052,6 +2109,7 @@ begin xf:=x0+largeurCell; // x fin yf:=y0+HauteurCell; // y fin position:=positionTCO(x,y); + fond:=TCO[x,y].CouleurFond; with canvas do begin @@ -2113,7 +2171,7 @@ begin with canvas do begin - Brush.Color:=Fond; + Brush.Color:=TCO[x,y].CouleurFond; Pen.Width:=1; r:=Rect(x0,y0,x0+LargeurCell,y0+HauteurCell); FillRect(r); @@ -2143,7 +2201,7 @@ begin with canvas do begin - Brush.Color:=Fond; + Brush.Color:=TCO[x,y].CouleurFond; Pen.Width:=1; r:=Rect(x0,y0,x0+LargeurCell,y0+HauteurCell); FillRect(r); @@ -2173,7 +2231,7 @@ begin with canvas do begin - Brush.Color:=Fond; + Brush.Color:=TCO[x,y].CouleurFond; Pen.Width:=1; r:=Rect(x0,y0,x0+LargeurCell,y0+HauteurCell); FillRect(r); @@ -2203,7 +2261,7 @@ begin with canvas do begin - Brush.Color:=Fond; + Brush.Color:=TCO[x,y].CouleurFond; Pen.Width:=1; r:=Rect(x0,y0,x0+LargeurCell,y0+HauteurCell); FillRect(r); @@ -2233,7 +2291,7 @@ begin with canvas do begin Pen.Width:=1; - Brush.Color:=Fond; + Brush.Color:=TCO[x,y].CouleurFond; r:=Rect(x0,y0,x0+LargeurCell,y0+HauteurCell); FillRect(r); @@ -2266,7 +2324,7 @@ begin with canvas do begin Pen.Width:=1; - Brush.Color:=Fond; + Brush.Color:=TCO[x,y].CouleurFond; r:=Rect(x0,y0,x0+LargeurCell,y0+HauteurCell); FillRect(r); @@ -2314,7 +2372,7 @@ begin with canvas do begin Pen.Width:=1; - Brush.Color:=Fond; + Brush.Color:=TCO[x,y].CouleurFond; r:=Rect(x0,y0,x0+LargeurCell,y0+HauteurCell); FillRect(r); @@ -2362,7 +2420,7 @@ begin with canvas do begin Pen.Width:=1; - Brush.Color:=Fond; + Brush.Color:=TCO[x,y].CouleurFond; r:=Rect(x0,y0,x0+LargeurCell,y0+HauteurCell); FillRect(r); @@ -2381,8 +2439,9 @@ end; // calcul des facteurs de réductions X et Y pour l'adapter à l'image de destination procedure calcul_reduction(Var frx,fry : real;DimDestX,DimDestY,DimOrgX,DimOrgY : integer); begin - frX:=DimDestX/DimOrgX; + frX:=DimDestX/DimOrgX; frY:=DimDestY/DimOrgY; + //Affiche(formatfloat('0.000000',frY),clyellow); end; // Affiche dans le TCO en x,y un Feu à 90° d'après l'image transmise @@ -2393,9 +2452,7 @@ var p : array[0..2] of TPoint; begin TailleY:=ImageSource.Picture.Height; TailleX:=ImageSource.Picture.Width; - //offset:=2*largeurCell-TailleX; - // Affiche(intToSTR(offset),clyellow); - + // copie à 90°G sans mise à l'échelle dans l'image provisoire p[0].X:=TailleY; //90; p[0].Y:=0; //0; @@ -2408,7 +2465,7 @@ begin // copie l'image du feu retournée depuis image temporaire vers tco avec une réduction en mode transparennt TransparentBlt(PcanvasTCO.Handle,x,y,round(TailleY*FrY),round(TailleX*FrX), // destination - PImageTemp.Canvas.Handle,0,0,TailleY,TailleX,clBlue); // source - clblue est la couleur de transparence + PImageTemp.Canvas.Handle,0,0,TailleY,TailleX,clBlue); // source - clblue est la couleur de transparence PImageTCO.Picture.Bitmap.Modified:=True; // rafraichit l'affichage sinon le stretchblt n'apparaît pas. end; @@ -2438,45 +2495,37 @@ end; procedure affiche_pied2G_90G(x,y : integer;FrX,frY : real;pied : integer); var x1,y1 : integer; - ech : real; + ech,frYR : real; begin ech:=frY;frY:=frX;FrX:=ech; + frYR:=frY*ratioC/10; with PcanvasTCO do begin - Pen.Width:=1; - Pen.Color:=clOrange; + Pen.Width:=2; + Pen.Color:=clPiedSignal; x1:=0;y1:=12; - moveTo( x+round((x1)*frX),y+round(y1*frY) ); - LineTo( x+round((x1-7)*frX),y+round((y1+0)*frY) ); - if pied=1 then LineTo( x+round((x1-7)*frX),y+round((y1+50)*frY) ) else - LineTo( x+round((x1-7)*frX),y+round((y1-50)*frY) ); - - moveTo( x+round((x1)*frX),y+round((y1+1)*frY) ); - LineTo( x+round((x1-6)*frX),y+round((y1+1)*frY) ); - if pied=1 then LineTo( x+round((x1-6)*frX),y+round((y1+50)*frY) ) else - LineTo( x+round((x1-6)*frX),y+round((y1-50)*frY) ) ; + moveTo( x+round(x1*frX),y+round(y1*frYR) ); + LineTo( x+round((x1-6)*frX),y+round((y1+0)*frYR) ); + if pied=1 then LineTo( x+round((x1-6)*frX),y+round((y1+50)*frYR) ) else + LineTo( x+round((x1-6)*frX),y+round((y1-50)*frYR) ); end; end; procedure affiche_pied2G_90D(x,y : integer;FrX,frY : real;pied : integer); var x1,y1 : integer; - ech : real; + ech,frYR: real; begin ech:=frY;frY:=frX;FrX:=ech; + frYR:=frY*ratioC/10; with PcanvasTCO do begin - Pen.Width:=1; - Pen.Color:=clOrange; + Pen.Width:=2; + Pen.Color:=clPiedSignal; x1:=35;y1:=12; - moveTo( x+round((x1)*frX),y+round(y1*frY) ); - LineTo( x+round((x1+7)*frX),y+round((y1+0)*frY) ); - if pied=1 then LineTo( x+round((x1+7)*frX),y+round((y1-50)*fry) ) else - LineTo( x+round((x1+7)*frX),y+round((y1+50)*fry) ) ; - - moveTo( x+round((x1)*frX),y+round((y1+1)*frY) ); - LineTo( x+round((x1+6)*frX),y+round((y1+1)*frY) ); - if pied=1 then LineTo( x+round((x1+6)*frX),y+round((y1-50)*fry) ) else - LineTo( x+round((x1+6)*frX),y+round((y1+50)*fry) ) + moveTo( x+round(x1*frX),y+round(y1*frYR) ); + LineTo( x+round((x1+6)*frX),y+round((y1+0)*frYR) ); + if pied=1 then LineTo( x+round((x1+6)*frX),y+round((y1-50)*fryR) ) else + LineTo( x+round((x1+6)*frX),y+round((y1+50)*fryR) ) ; end; end; @@ -2485,62 +2534,49 @@ var x1,y1 : integer; begin with PcanvasTCO do begin - Pen.Width:=1; - Pen.Color:=clOrange; + Pen.Width:=2; + Pen.Color:=clPiedSignal; x1:=12;y1:=35; moveTo( x+round((x1+0)*frX),y+round(y1*frY) ); LineTo( x+round((x1+0)*frX),y+round((y1+6)*frY) ); if pied=1 then LineTo( x+round((x1+50)*frX),y+round((y1+6)*frY) ) else LineTo( x+round((x1-50)*frX),y+round((y1+6)*frY) ); - - moveTo( x+round((x1+1)*frX),y+round((y1+0)*frY) ); - LineTo( x+round((x1+1)*frX),y+round((y1+7)*frY) ); - if pied=1 then LineTo( x+round((x1+50)*frX),y+round((y1+7)*frY) ) else - LineTo( x+round((x1-50)*frX),y+round((y1+7)*frY) ); end; end; procedure affiche_pied3G_90D(x,y : integer;FrX,frY : real;pied : integer); var x1,y1 : integer; - ech : real; + ech,fryR : real; begin ech:=frY;frY:=frX;FrX:=ech; + frYR:=frY*ratioC/10; with PcanvasTCO do begin - Pen.Width:=1; - Pen.Color:=clOrange; + Pen.Width:=2; + Pen.Color:=clPiedSignal; x1:=45;y1:=12; moveTo( x+round(x1*frX),y+round(y1*frY) ); - LineTo( x+round((x1+7)*frX),y+round((y1+0)*frY) ); - if pied=1 then LineTo( x+round((x1+7)*frX),y+round((y1-50)*fry) ) else - LineTo( x+round((x1+7)*frX),y+round((y1+50)*fry) ); - - moveTo( x+round((x1)*frX),y+round((y1+1)*frY) ); - LineTo( x+round((x1+6)*frX),y+round((y1+1)*frY) ); - if pied=1 then LineTo( x+round((x1+6)*frX),y+round((y1-50)*fry) ) else - LineTo( x+round((x1+6)*frX),y+round((y1+50)*fry) ) ; + LineTo( x+round((x1+6)*frX),y+round((y1+0)*frY) ); + if pied=1 then LineTo( x+round((x1+6)*frX),y+round((y1-50)*fryR) ) else + LineTo( x+round((x1+6)*frX),y+round((y1+50)*fryR) ); end; end; procedure affiche_pied3G_90G(x,y : integer;FrX,frY : real;pied : integer); var x1,y1 : integer; - ech : real; + ech,frYR : real; begin ech:=frY;frY:=frX;FrX:=ech; + frYR:=frY*ratioC/10; with PcanvasTCO do begin - Pen.Width:=1; - Pen.Color:=clOrange; + Pen.Width:=2; + Pen.Color:=clPiedSignal; x1:=0;y1:=12; moveTo( x+round(x1*frX),y+round(y1*frY) ); - LineTo( x+round((x1-7)*frX),y+round((y1+0)*frY) ); - if pied=1 then LineTo( x+round((x1-7)*frX),y+round((y1+50)*frY) ) else - LineTo( x+round((x1-7)*frX),y+round((y1-50)*fry) ); - - moveTo( x+round((x1)*frX),y+round((y1+1)*frY) ); - LineTo( x+round((x1-6)*frX),y+round((y1+1)*frY) ); - if pied=1 then LineTo( x+round((x1-6)*frX),y+round((y1+50)*frY) ) else - LineTo( x+round((x1-6)*frX),y+round((y1-50)*fry) ); + LineTo( x+round((x1-4)*frX),y+round((y1+0)*frY) ); + if pied=1 then LineTo( x+round((x1-4)*frX),y+round((y1+50)*frYR) ) else + LineTo( x+round((x1-4)*frX),y+round((y1-50)*fryR) ); end; end; @@ -2549,60 +2585,50 @@ var x1,y1 : integer; begin with PcanvasTCO do begin - Pen.Width:=1; - Pen.Color:=clOrange; + Pen.Width:=2; + Pen.Color:=clPiedSignal; x1:=12;y1:=42; moveTo( x+round((x1+0)*frX),y+round(y1*frY) ); LineTo( x+round((x1+0)*frX),y+round((y1+6)*frY) ); if pied=1 then LineTo( x+round((x1+50)*frX),y+round((y1+6)*frY) ) else LineTo( x+round((x1-50)*frX),y+round((y1+6)*frY) ) ; - - moveTo( x+round((x1+1)*frX),y+round((y1+0)*frY) ); - LineTo( x+round((x1+1)*frX),y+round((y1+7)*frY) ); - if pied=1 then LineTo( x+round((x1+50)*frX),y+round((y1+7)*frY) ) else - LineTo( x+round((x1-50)*frX),y+round((y1+7)*frY) ) ; end; end; procedure affiche_pied4G_90G(x,y : integer;FrX,frY : real;piedFeu : integer); var x1,y1 : integer; + fryR,ech : real; begin + ech:=frY;frY:=frX;FrX:=ech; + frYR:=frY*ratioC/10; with PcanvasTCO do begin - Pen.Width:=1; - Pen.Color:=clOrange; + Pen.Width:=2; + Pen.Color:=clPiedSignal; x1:=0;y1:=12; - moveTo( x+round((x1)*frX),y+round(y1*frY) ); - LineTo( x+round((x1-7)*frX),y+round((y1+0)*frY) ); - if piedFeu=1 then LineTo( x+round((x1-7)*frX),y+round((y1+50)*frY) ) else - LineTo( x+round((x1-7)*frX),y+round((y1-50)*frY) ) ; - - moveTo( x+round((x1)*frX),y+round((y1+1)*frY) ); - LineTo( x+round((x1-6)*frX),y+round((y1+1)*frY) ); - if piedFeu=1 then LineTo( x+round((x1-6)*frX),y+round((y1+50)*frY) ) else - LineTo( x+round((x1-6)*frX),y+round((y1-50)*frY) ) ; + frYR:=frY*ratioC/10; + moveTo( x+round(x1*frX),y+round(y1*frY) ); + LineTo( x+round((x1-6)*frX),y+round((y1+0)*frY) ); + if piedFeu=1 then LineTo( x+round((x1-6)*frX),y+round((y1+50)*frYR) ) else + LineTo( x+round((x1-6)*frX),y+round((y1-50)*frYR) ) ; end; end; procedure affiche_pied4G_90D(x,y : integer;FrX,frY : real;piedfeu: integer); var x1,y1 : integer; - ech : real; + ech,frYR : real; begin ech:=frY;frY:=frX;FrX:=ech; + frYR:=frY*ratioC/10; with PcanvasTCO do begin - Pen.Width:=1; - Pen.Color:=clOrange; + Pen.Width:=2; + Pen.Color:=clPiedSignal; x1:=55;y1:=12; moveTo( x+round(x1*frX),y+round(y1*frY) ); - LineTo( x+round((x1+7)*frX),y+round((y1+0)*frY) ); - if piedFeu=1 then LineTo( x+round((x1+7)*frX),y+round((y1-50)*fry) ) - else LineTo( x+round((x1+7)*frX),y+round((y1+50)*fry) ); - - moveTo( x+round((x1)*frX),y+round((y1+1)*frY) ); - LineTo( x+round((x1+6)*frX),y+round((y1+1)*frY) ); - if piedFeu=1 then LineTo( x+round((x1+6)*frX),y+round((y1-50)*fry) ) else - LineTo( x+round((x1+6)*frX),y+round((y1+50)*fry) ); + LineTo( x+round((x1+6)*frX),y+round((y1+0)*frY) ); + if piedFeu=1 then LineTo( x+round((x1+6)*frX),y+round((y1-50)*fryR) ) + else LineTo( x+round((x1+6)*frX),y+round((y1+50)*fryR) ); end; end; @@ -2611,85 +2637,67 @@ var x1,y1 : integer; begin with PcanvasTCO do begin - Pen.Width:=1; - Pen.Color:=clOrange; + Pen.Width:=2; + Pen.Color:=clPiedSignal; x1:=12;y1:=55; moveTo( x+round((x1+0)*frX),y+round(y1*frY) ); LineTo( x+round((x1+0)*frX),y+round((y1+7)*frY) ); if pied=1 then LineTo( x+round((x1+50)*frX),y+round((y1+7)*frY) ) else LineTo( x+round((x1-50)*frX),y+round((y1+7)*frY) ); - - moveTo( x+round((x1+1)*frX),y+round((y1+0)*frY) ); - LineTo( x+round((x1+1)*frX),y+round((y1+8)*frY) ); - if pied=1 then LineTo( x+round((x1+50)*frX),y+round((y1+8)*frY) ) else - LineTo( x+round((x1-50)*frX),y+round((y1+8)*frY) ); end; end; procedure affiche_pied9G_90D(x,y : integer;FrX,frY : real;pied : integer); var x1,y1 : integer; - var ech : real; + var ech,frYR : real; begin ech:=frY;frY:=frX;FrX:=ech; + frYR:=frY*ratioC/10; with PcanvasTCO do begin - Pen.Width:=1; - Pen.Color:=clOrange; + Pen.Width:=2; + Pen.Color:=clPiedSignal; x1:=90;y1:=38; - moveTo( x+round((x1)*frX),y+round(y1*frY) ); + moveTo( x+round(x1*frX),y+round(y1*frY) ); LineTo( x+round((x1+7)*frX),y+round((y1+0)*frY) ); - if pied=1 then LineTo( x+round((x1+7)*frX),y+round((y1-62)*fry)) else - LineTo( x+round((x1+7)*frX),y+round((y1+40)*fry)); - - moveTo( x+round((x1)*frX),y+round((y1+1)*frY) ); - LineTo( x+round((x1+6)*frX),y+round((y1+1)*frY) ); - if pied=1 then LineTo( x+round((x1+6)*frX),y+round((y1-62)*fry) ) else - LineTo( x+round((x1+6)*frX),y+round((y1+40)*fry)) ; + if pied=1 then LineTo( x+round((x1+7)*frX),y+round((y1-62)*fryR)) else + LineTo( x+round((x1+7)*frX),y+round((y1+40)*fryR)); end; end; - procedure affiche_pied5G_90D(x,y : integer;FrX,frY : real;piedFeu : integer); var x1,y1 : integer; - ech : real; + ech,frYR : real; begin ech:=frY;frY:=frX;FrX:=ech; + frYR:=frY*ratioC/10; with PcanvasTCO do begin - Pen.Width:=1; - Pen.Color:=clOrange; + Pen.Width:=2; + Pen.Color:=clPiedSignal; x1:=66;y1:=12; - moveTo( x+round((x1)*frX),y+round(y1*frY) ); - LineTo( x+round((x1+7)*frX),y+round((y1+0)*frY) ); - if piedFeu=1 then LineTo( x+round((x1+7)*frX),y+round((y1-50)*fry) ) else - LineTo( x+round((x1+7)*frX),y+round((y1+50)*fry) ); - - moveTo( x+round((x1)*frX),y+round((y1+1)*frY) ); - LineTo( x+round((x1+6)*frX),y+round((y1+1)*frY) ); - if piedFeu=1 then LineTo( x+round((x1+6)*frX),y+round((y1-50)*fry) ) else - LineTo( x+round((x1+6)*frX),y+round((y1+50)*fry) ); + moveTo( x+round(x1*frX),y+round(y1*frY) ); + LineTo( x+round((x1+6)*frX),y+round((y1+0)*frY) ); + if piedFeu=1 then LineTo( x+round((x1+6)*frX),y+round((y1-50)*fryR) ) else + LineTo( x+round((x1+6)*frX),y+round((y1+50)*fryR) ); end; end; procedure affiche_pied5G_90G(x,y : integer;FrX,frY : real;piedFeu : integer); var x1,y1 : integer; - ech : real; + ech,fryR : real; begin ech:=frY;frY:=frX;FrX:=ech; + frYR:=frY*ratioC/10; with PcanvasTCO do begin - Pen.Width:=1; - Pen.Color:=clOrange; + Pen.Width:=2; + Pen.Color:=clPiedSignal; x1:=0;y1:=12; - moveTo( x+round((x1)*frX),y+round(y1*frY) ); - LineTo( x+round((x1-7)*frX),y+round((y1+0)*frY) ); - if piedFeu=1 then LineTo( x+round((x1-7)*frX),y+round((y1+50)*frY) ) else - LineTo( x+round((x1-7)*frX),y+round((y1-50)*fry) ); - - moveTo( x+round((x1)*frX),y+round((y1+1)*frY) ); - LineTo( x+round((x1-6)*frX),y+round((y1+1)*frY) ); - if piedFeu=1 then LineTo( x+round((x1-6)*frX),y+round((y1+50)*frY) ) else - LineTo( x+round((x1-6)*frX),y+round((y1-50)*fry) ); + moveTo( x+round(x1*frX),y+round(y1*frY) ); + LineTo( x+round((x1-6)*frX),y+round((y1+0)*frY) ); + if piedFeu=1 then LineTo( x+round((x1-6)*frX),y+round((y1+50)*frYR) ) else + LineTo( x+round((x1-6)*frX),y+round((y1-50)*fryR) ); end; end; @@ -2698,63 +2706,50 @@ var x1,y1 : integer; begin with PcanvasTCO do begin - Pen.Width:=1; - Pen.Color:=clOrange; + Pen.Width:=2; + Pen.Color:=clPiedSignal; x1:=12;y1:=65; moveTo( x+round((x1+0)*frX),y+round(y1*frY) ); LineTo( x+round((x1+0)*frX),y+round((y1+7)*frY) ); - + if pied=1 then LineTo( x+round((x1+50)*frX),y+round((y1+7)*frY) ) else LineTo( x+round((x1-50)*frX),y+round((y1+7)*frY) ); - - moveTo( x+round((x1+1)*frX),y+round((y1+0)*frY) ); - LineTo( x+round((x1+1)*frX),y+round((y1+8)*frY) ); - if pied=1 then LineTo( x+round((x1+50)*frX),y+round((y1+8)*frY) ) else - LineTo( x+round((x1-50)*frX),y+round((y1+8)*frY) ); end; end; procedure affiche_pied7G_90D(x,y : integer;FrX,frY : real;pied : integer); var x1,y1 : integer; - ech : real; + ech,frYR : real; begin ech:=frY;frY:=frX;FrX:=ech; + frYR:=frY*ratioC/10; with PcanvasTCO do begin - Pen.Width:=1; - Pen.Color:=clorange; + Pen.Width:=2; + Pen.Color:=clPiedSignal; x1:=75;y1:=38; - moveTo( x+round((x1)*frX),y+round(y1*frY) ); + moveTo( x+round(x1*frX),y+round(y1*frY) ); LineTo( x+round((x1+7)*frX),y+round((y1+0)*frY) ); - if pied=1 then LineTo( x+round((x1+7)*frX),y+round((y1-62)*fry) ) else - LineTo( x+round((x1+7)*frX),y+round((y1+38)*fry) ) ; - - moveTo( x+round((x1)*frX),y+round((y1+1)*frY) ); - LineTo( x+round((x1+6)*frX),y+round((y1+1)*frY) ); - if pied=1 then LineTo( x+round((x1+6)*frX),y+round((y1-62)*fry) ) else - LineTo( x+round((x1+6)*frX),y+round((y1+38)*fry) ) ; + if pied=1 then LineTo( x+round((x1+7)*frX),y+round((y1-62)*fryR) ) else + LineTo( x+round((x1+7)*frX),y+round((y1+38)*fryR) ) ; end; end; procedure affiche_pied7G_90G(x,y : integer;FrX,frY : real;pied : integer); var x1,y1 : integer; - ech : real; + ech,frYR : real; begin ech:=frY;frY:=frX;FrX:=ech; + frYR:=frY*ratioC/10; with PcanvasTCO do begin - Pen.Color:=clOrange; - Pen.Width:=1; + Pen.Color:=clPiedSignal; + Pen.Width:=2; x1:=0;y1:=12; - moveTo( x+round((x1)*frX),y+round(y1*frY) ); - LineTo( x+round((x1-7)*frX),y+round((y1+0)*frY) ); - if pied=1 then LineTo( x+round((x1-7)*frX),y+round((y1+60)*frY) ) else - LineTo( x+round((x1-7)*frX),y+round((y1-40)*frY) ); - - moveTo( x+round((x1)*frX),y+round((y1+1)*frY) ); - LineTo( x+round((x1-6)*frX),y+round((y1+1)*frY) ); - if pied=1 then LineTo( x+round((x1-6)*frX),y+round((y1+60)*frY) ) else - LineTo( x+round((x1-6)*frX),y+round((y1-40)*frY) ) + moveTo( x+round(x1*frX),y+round(y1*frYR) ); + LineTo( x+round((x1-6)*frX),y+round((y1+0)*frYR) ); + if pied=1 then LineTo( x+round((x1-6)*frX),y+round((y1+60)*frYR) ) else + LineTo( x+round((x1-6)*frX),y+round((y1-40)*frYR) ) ; end; end; @@ -2763,40 +2758,33 @@ var x1,y1 : integer; begin with PcanvasTCO do begin - Pen.Width:=1; - Pen.Color:=clOrange; + Pen.Width:=2; + Pen.Color:=clPiedSignal; x1:=12;y1:=75; moveTo( x+round((x1+0)*frX),y+round(y1*frY) ); LineTo( x+round((x1+0)*frX),y+round((y1+7)*frY) ); if pied=1 then LineTo( x+round((x1+60)*frX),y+round((y1+7)*frY) ) else LineTo( x+round((x1-40)*frX),y+round((y1+7)*frY) ) ; - - moveTo( x+round((x1+1)*frX),y+round((y1+0)*frY) ); - LineTo( x+round((x1+1)*frX),y+round((y1+8)*frY) ); - if pied=1 then LineTo( x+round((x1+60)*frX),y+round((y1+8)*frY) ) else - LineTo( x+round((x1-40)*frX),y+round((y1+8)*frY) ) ; end; end; procedure affiche_pied9G_90G(x,y : integer;FrX,frY : real;pied : integer); var x1,y1 : integer; - ech : real; + frYR,ech : real; begin ech:=frY;frY:=frX;FrX:=ech; + frYR:=frY*ratioC/10; with PcanvasTCO do begin - Pen.Width:=1; - Pen.Color:=clOrange; + Pen.Color:=clPiedSignal; + pen.Width:=2; x1:=0;y1:=12; - moveTo( x+round((x1)*frX),y+round(y1*frY) ); - LineTo( x+round((x1-7)*frX),y+round((y1+0)*frY) ); - if pied=1 then LineTo( x+round((x1-7)*frX),y+round((y1+58)*frY) ) else - LineTo( x+round((x1-7)*frX),y+round((y1-40)*frY) ) ; + // segment horizontal + moveTo( x+round(x1*frX),y+round(y1*frYR) ); + LineTo( x+round((x1-6)*frX),y+round((y1+0)*frYR) ); - moveTo( x+round((x1)*frX),y+round((y1+1)*frY) ); - LineTo( x+round((x1-6)*frX),y+round((y1+1)*frY) ); - if pied=1 then LineTo( x+round((x1-6)*frX),y+round((y1+58)*frY) ) else - LineTo( x+round((x1-6)*frX),y+round((y1-40)*frY) ) ; + if pied=1 then LineTo( x+round((x1-6)*frX),y+round((y1+58)*frYR) ) else + LineTo( x+round((x1-6)*frX),y+round((y1-40)*frYR) ) ; end; end; @@ -2805,19 +2793,47 @@ var x1,y1 : integer; begin with PcanvasTCO do begin - Pen.Width:=1; - Pen.Color:=clOrange; + Pen.Width:=2; + Pen.Color:=clPiedSignal; x1:=12;y1:=90; moveTo( x+round((x1+0)*frX),y+round(y1*frY) ); LineTo( x+round((x1+0)*frX),y+round((y1+7)*frY) ); if pied=1 then LineTo( x+round((x1+60)*frX),y+round((y1+7)*frY) ) else LineTo( x+round((x1-40)*frX),y+round((y1+7)*frY) ) ; - - moveTo( x+round((x1+1)*frX),y+round((y1+0)*frY) ); - LineTo( x+round((x1+1)*frX),y+round((y1+8)*frY) ); - if pied=1 then LineTo( x+round((x1+60)*frX),y+round((y1+8)*frY) ) else - LineTo( x+round((x1-40)*frX),y+round((y1+8)*frY) ) ; - + end; +end; + +procedure Efface_Cellule(Canvas : Tcanvas;x,y : integer;Mode : TPenMode); +var x0,y0 : integer; + r : TRect; + c : tcolor; +begin + { + if y>1 then + begin + // si la cellule au dessus contient un feu vertical, ne pas effacer la cellule + // if (tco[x,y-1].BImage=12) and (tco[x,y-1].FeuOriente=1) then exit; + end; + if x1 then - begin - // si la cellule au dessus contient un feu vertical, ne pas effacer la cellule - // if (tco[x,y-1].BImage=12) and (tco[x,y-1].FeuOriente=1) then exit; - end; - if x1 then if (tco[x,y-1].Bimage=30) then exit; - // affiche d'abord l'icone de la cellule et colore la voie si zone ou détecteur actionnée selon valeur mode case Bimage of - //0 : formTCO.efface_cellule(PCanvasTCO,x,y,fond,pmcopy); + 0 : efface_cellule(PCanvasTCO,x,y,pmcopy); 1 : dessin_voie(PCanvasTCO,X,Y,mode); 2 : dessin_2(PCanvasTCO,X,Y,mode); 3 : dessin_3(PCanvasTCO,X,Y,mode); @@ -3058,7 +3045,7 @@ begin s:='A'+s; with PCanvasTCO do begin - Brush.Color:=fond; + Brush.Color:=tco[x,y].CouleurFond; Font.Color:=tco[x,y].coulFonte; Font.Name:='Arial'; Font.Style:=style(tco[x,y].FontStyle); @@ -3084,7 +3071,7 @@ begin if repr<>0 then with PCanvasTCO do begin - Brush.Color:=fond; + Brush.Color:=tco[x,y].CouleurFond; Font.Color:=tco[x,y].coulFonte; Font.Name:='Arial'; Font.Style:=style(tco[x,y].FontStyle); @@ -3117,7 +3104,7 @@ begin begin // Adresse de l'élément with PCanvasTCO do begin - Brush.Color:=fond; + Brush.Color:=tco[x,y].CouleurFond; Font.Name:='Arial'; Font.Style:=style(tco[x,y].FontStyle); Font.Color:=tco[x,y].coulFonte; @@ -3129,7 +3116,7 @@ begin begin // Adresse de l'élément with PCanvasTCO do begin - Brush.Color:=fond; + Brush.Color:=tco[x,y].CouleurFond; Font.Name:='Arial'; Font.Style:=style(tco[x,y].FontStyle); Font.Color:=tco[x,y].coulFonte; @@ -3141,7 +3128,7 @@ begin begin // Adresse de l'élément with PCanvasTCO do begin - Brush.Color:=fond; + Brush.Color:=tco[x,y].CouleurFond; Font.Color:=tco[x,y].coulFonte;; Font.Style:=style(tco[x,y].FontStyle); Font.Name:='Arial'; @@ -3179,7 +3166,7 @@ begin if (aspect=2) and (Oriente=3) then begin xt:=round(10*frXGlob);yt:=HauteurCell;end; // orientation D with PCanvasTCO do begin - Brush.Color:=fond; + Brush.Color:=tco[x,y].CouleurFond; Font.Color:=tco[x,y].coulFonte; Font.Style:=style(tco[x,y].FontStyle); Font.Name:='Arial'; @@ -3231,7 +3218,13 @@ begin else begin Entoure_cell(Xentoure,Yentoure); // efface l'ancien - Entoure_cell(XclicCell,YclicCell); + // si on clique sur le même on l'efface sans afficher un nouveau + if (Xentoure<>XclicCell) or (Yentoure<>YClicCell) then + begin + Entoure_cell(XclicCell,YclicCell); + end + else entoure:=false; + Xentoure:=XClicCell;Yentoure:=YclicCell; end; end; @@ -3244,7 +3237,7 @@ begin y0:=(y-1)*hauteurcell; //PCanvasTCO.Brush.Style:=bsSolid; - if TCO[x,y].BImage=23 then PCanvasTCO.Brush.Color:=clQuai else PCanvasTCO.Brush.Color:=fond; + if TCO[x,y].BImage=23 then PCanvasTCO.Brush.Color:=clQuai else PCanvasTCO.Brush.Color:=tco[x,y].CouleurFond; //PCanvasTCO.pen.color:=clyellow; PcanvasTCO.Font.Color:=tco[x,y].CoulFonte; ss:=tco[x,y].fonte; @@ -3258,11 +3251,10 @@ begin taillefonte:=tco[x,y].TailleFonte; case repr of 0,1 : yt:=(HauteurCell div 2)-round(tailleFonte*fryGlob); // milieu - 2 : yt:=1; // haut - 3 : yt:=HauteurCell-round(2*TailleFonte*frYGlob); // bas + 2 : yt:=1; // haut + 3 : yt:=HauteurCell-round(2*TailleFonte*frYGlob); // bas end; - if taillefonte=0 then taillefonte:=8; PCanvasTCO.font.Size:=(taillefonte*LargeurCell) div 40; @@ -3300,7 +3292,7 @@ begin begin Pen.width:=1; Brush.Style:=bsSolid; - Brush.Color:=fond; + Brush.Color:=Clfond; pen.color:=clyellow; r:=rect(0,0,NbreCellX*LargeurCell,NbreCelly*HauteurCell); FillRect(r); @@ -3335,6 +3327,14 @@ begin end; end; +procedure grise_ligne_tco; +var x : integer; +begin + for x:=1 to NbreCellX do + begin + Affiche_Cellule(x,YClicCell); + end; +end; procedure TFormTCO.FormCreate(Sender: TObject); begin @@ -3346,7 +3346,7 @@ begin YclicCell:=1; xCoupe:=0;yCoupe:=0; KeyPreview:=false; // invalide les évènements clavier - fond:=$202050; + Clfond:=$202050; couleurAdresse:=Cyan; xMiniSel:=99999;yMiniSel:=99999; xMaxiSel:=0;yMaxiSel:=0; @@ -3361,84 +3361,13 @@ begin comborepr.Enabled:=false; ImageTCO.Top:=0; ImageTCO.Left:=0; - //controlStyle:=controlStyle+[csOpaque]; + end; -// clic gauche sur TCO -procedure TFormTCO.ImageTCOClick(Sender: TObject); -var Position: TPoint; - Bimage : integer; - s : string; -begin - if affevt then Affiche('TCO ImageTCOClic',clLime); - clicTCO:=true; - GetCursorPos(Position); - { - Menuitem:=TmenuItem.Create(popupMenu1); - MenuItem.caption:='Element'; - // MenuItem.onclick:= - MenuItem.Tag:=GetTickCount; - popupMenu1.Items.Add(MenuItem); } - Position:=ImageTCO.screenToCLient(Position); - //Affiche(IntToSTR(position.x),clyellow); - Xclic:=position.X;YClic:=position.Y; - XclicCell:=Xclic div largeurCell +1; - YclicCell:=Yclic div hauteurCell +1; - if XclicCell>NbreCellX then exit; - if YclicCell>NbreCellY then exit; - - Bimage:=tco[XClicCell,YClicCell].Bimage; - - // si aiguillage, mettre à jour l'option de pilotage inverse - if (bimage=2) or (bimage=3) or (bimage=4) or (bimage=5) or (bimage=12) or (bimage=13) - or (bimage=14) or (bimage=15) then - begin - // aiguillage inversé - with FormConfCellTCO.CheckPinv do - begin - enabled:=true; - checked:=TCO[XClicCell,YClicCell].inverse; - end; - CheckPinv.checked:=TCO[XClicCell,YClicCell].inverse; - CheckPinv.enabled:=true ; - end - else - begin - CheckPinv.enabled:=false; - FormConfCellTCO.checkPinv.enabled:=false; - end; - - // si voie ou rien ou signal ou quai - if (Bimage=1) or (Bimage=0) or (Bimage=23) then - begin - s:=Tco[XClicCell,YClicCell].Texte; - EditTexte.Text:=s; - EditTexte.Visible:=true; - ComboRepr.Enabled:=true; - end - else - begin - EditTexte.Visible:=false; - comboRepr.Enabled:=false; - end; - - LabelCoord.caption:=IntToSTR(XclicCell)+','+IntToSTR(YclicCell); - - XclicCellInserer:=XClicCell; - YclicCellInserer:=YClicCell; - - EditAdrElement.Text:=IntToSTR(tco[XClicCellInserer,YClicCellInserer].Adresse); - EdittypeImage.Text:=IntToSTR(BImage); - ComboRepr.ItemIndex:=tco[XClicCell,yClicCell].repr; - - if not(selectionaffichee) then _entoure_cell_clic; - actualise; - clicTCO:=false; -end; - -// trouve le détecteur det dans le TCO et renvoie X et Y +// trouve le détecteur det dans le TCO et renvoie x et y +// si on le trouve pas, renvoie x=0,y=0 procedure trouve_det(det : integer;var x,y : integer); var xc,yc : integer; trouve : boolean; @@ -3449,9 +3378,9 @@ begin repeat inc(xc); trouve:=tco[xc,yc].Adresse=det; - until (xc=NbreCellX+1) or trouve; + until (xc=NbreCellX) or trouve; inc(yc); - until (yc=NbreCellY+1) or trouve; + until (yc=NbreCellY) or trouve; dec(yc); if trouve then begin @@ -3478,7 +3407,6 @@ begin end; - // allume ou éteint (mode=0 ou 1) la voie, zone de det1 à det2 sur le TCO // si mode=0 : éteint // =1 : couleur détecteur allumé @@ -3511,13 +3439,13 @@ begin x:=xDet1;y:=Ydet1; xn:=x;yn:=y; i:=0; memtrouve:=false; sortir:=false; - ir:=1; + ir:=1; // index de la route du tco // boucle de remplissage du tableau routeTCO de det1 à det2 repeat routeTCO[ir].x:=x; routeTCO[ir].y:=y; - if ir<100 then inc(ir); + if ir<500 then inc(ir); if debugTCO then AfficheDebug('X='+intToSTR(x)+' Y='+IntToSTR(Y)+' AncienX='+intToSTR(ancienX)+' AncienY='+IntToSTR(ancienY),clyellow); @@ -3538,6 +3466,7 @@ begin end; if ancienXdet2) and memTrouve) or (i>NbCellulesTCO); - until ((adresse<>det2) and memTrouve) or (i>NbCellulesTCO) or sortir; + //until ((adresse<>det2) and memTrouve) or (i>NbCellulesTCO) or sortir; + until (memTrouve) or (i>NbCellulesTCO) or (x>NbreCellX) or (y>NbreCellY) or (x=0) or (y=0) or sortir; //Affiche(intToSTR(x),clLime); if i>NbCellulesTCO then @@ -3786,6 +3716,7 @@ begin adresse:=TCO[x,y].Adresse; tco[x,y].trajet:=0; + // croisement if (bimage=21) and (i>1) then begin j:=index_aig(adresse); @@ -3797,7 +3728,7 @@ begin if (ax-x=-1) and (ay-y=0) and (sx-x=1) and (sy-y=0) then tco[x,y].trajet:=1; // de gauche à droite if (ax-x=1) and (ay-y=0) and (sx-x=-1) and (sy-y=0) then tco[x,y].trajet:=1; // de droite à gauche if (ax-x=-1) and (ay-y=1) and (sx-x=1) and (sy-y=-1) then tco[x,y].trajet:=2; // de bas gauche vers haut droit - if (ax-x=1) and (ay-y=-1) and (sx-x=-1) and (sy-y=1) then tco[x,y].trajet:=2; // de haut droit vers bas gauche + if (ax-x=1) and (ay-y=-1) and (sx-x=-1) and (sy-y=1) then tco[x,y].trajet:=2; // de haut droit vers bas gauche if (ax-x=-1) and (ay-y=0) and (sx-x=1) and (sy-y=-1) then tco[x,y].trajet:=4; // de gauche vers haut droite if (ax-x=1) and (ay-y=-1) and (sx-x=-1) and (sy-y=0) then tco[x,y].trajet:=4; // de haut droite vers gauche if (ax-x=-1) and (ay-y=1) and (sx-x=1) and (sy-y=0) then tco[x,y].trajet:=3; // de bas gauche vers droite @@ -3805,6 +3736,7 @@ begin if tco[x,y].trajet=0 then affiche('Erreur 50 TCO',clred); end; + // croisement if (bimage=22) and (i>1) then begin j:=index_aig(adresse); @@ -3823,11 +3755,13 @@ begin if (ax-x=-1) and (ay-y=0) and (sx-x=1) and (sy-y=1) then tco[x,y].trajet:=4; // de gauche vers en bas a droite if tco[x,y].trajet=0 then affiche('Erreur 51 TCO',clred); end; + Affiche_cellule(routeTCO[i].x,routeTCO[i].y); end; end; procedure TFormTCO.FormActivate(Sender: TObject); +var s : string; begin if affevt then Affiche('Form TCO activate',clyellow); if not(Forminit) then @@ -3835,6 +3769,7 @@ begin FormInit:=true; Button1.Visible:=not(Diffusion); Button2.Visible:=not(Diffusion); + ButtonCalibrage.Visible:=not(diffusion); ButtonSimu.Visible:=not(Diffusion); ImageTemp.Visible:=not(Diffusion); SourisX.Visible:=not(Diffusion); @@ -3875,6 +3810,29 @@ begin dessin_22(ImagePalette22.canvas,1,1,0); dessin_23(ImagePalette23.canvas,1,1,0); + s:='Voie'; + ImagePalette1.Hint:=s;ImagePalette1.ShowHint:=true; + ImagePalette6.Hint:=s;ImagePalette6.ShowHint:=true; + ImagePalette7.Hint:=s;ImagePalette7.ShowHint:=true; + ImagePalette8.Hint:=s;ImagePalette8.ShowHint:=true; + ImagePalette9.Hint:=s;ImagePalette9.ShowHint:=true; + ImagePalette10.Hint:=s;ImagePalette10.ShowHint:=true; + ImagePalette11.Hint:=s;ImagePalette11.ShowHint:=true; + ImagePalette16.Hint:=s;ImagePalette16.ShowHint:=true; + ImagePalette17.Hint:=s;ImagePalette17.ShowHint:=true; + ImagePalette18.Hint:=s;ImagePalette18.ShowHint:=true; + ImagePalette19.Hint:=s;ImagePalette19.ShowHint:=true; + ImagePalette20.Hint:=s;ImagePalette20.ShowHint:=true; + s:='Aiguillage'; + ImagePalette2.Hint:=s;ImagePalette2.ShowHint:=true; + ImagePalette3.Hint:=s;ImagePalette3.ShowHint:=true; + ImagePalette4.Hint:=s;ImagePalette4.ShowHint:=true; + ImagePalette5.Hint:=s;ImagePalette5.ShowHint:=true; + ImagePalette12.Hint:=s;ImagePalette12.ShowHint:=true; + ImagePalette13.Hint:=s;ImagePalette13.ShowHint:=true; + ImagePalette14.Hint:=s;ImagePalette14.ShowHint:=true; + ImagePalette15.Hint:=s;ImagePalette15.ShowHint:=true; + NbCellulesTCO:=NbreCellX*NbreCellY; ImageTCO.Width:=LargeurCell*NbreCellX; ImageTCO.Height:=HauteurCell*NbreCellY; @@ -3923,9 +3881,6 @@ procedure TFormTCO.ImageTCOContextPopup(Sender: TObject; MousePos: TPoint; var H var Position: TPoint; begin - // Affiche('Clic droit',clyellow); - // efface le carré pointeur - //Entoure_cell(XclicCell,YclicCell); GetCursorPos(Position); Position:=ImageTCO.screenToCLient(Position); @@ -3961,64 +3916,37 @@ end; procedure Elmentdroit1Click(Sender: TObject); begin - // effacer le carré pointeur - //Entoure_cell(XclicCell,YclicCell); - // dessine le dessin dessin_voie(FormTCO.ImageTCO.canvas,XClicCellInserer,YClicCellInserer,0); - // remet le carré pointeur - //Entoure_cell(XclicCell,YclicCell); - FormTCO.EditAdrElement.Text:=IntToSTR(tco[XClicCellInserer,YClicCellInserer].Adresse); end; procedure Courbegaucheversdroite1Click(Sender: TObject); var Position: TPoint; begin - // effacer le carré pointeur - //Entoure_cell(XclicCell,YclicCell); - // dessine le dessin dessin_9(FormTCO.ImageTCO.canvas,XClicCellInserer,YClicCellInserer,0); - // remet le carré pointeur - //Entoure_cell(XclicCell,YclicCell); GetCursorPos(Position); end; procedure Courbedroiteversgauche1Click(Sender: TObject); var Position: TPoint; begin - // effacer le carré pointeur - //Entoure_cell(XclicCell,YclicCell); - // dessine le dessin dessin_8(FormTCO.ImageTCO.canvas,XClicCellInserer,YClicCellInserer,0); - // remet le carré pointeur - //Entoure_cell(XclicCell,YclicCell); - GetCursorPos(Position); + GetCursorPos(Position); end; procedure CourbeSupD1Click(Sender: TObject); var Position: TPoint; begin - // effacer le carré pointeur - //Entoure_cell(XclicCell,YclicCell); - // dessine le dessin dessin_7(FormTCO.ImageTCO.canvas,XClicCellInserer,YClicCellInserer,0); - // remet le carré pointeur - //Entoure_cell(XclicCell,YclicCell); GetCursorPos(Position); end; procedure CourbeSupG1Click(Sender: TObject); var Position: TPoint; begin - // effacer le carré pointeur - //Entoure_cell(XclicCell,YclicCell); - // dessine le dessin dessin_6(FormTCO.ImageTCO.canvas,XClicCellInserer,YClicCellInserer,0); - // remet le carré pointeur - //Entoure_cell(XclicCell,YclicCell); GetCursorPos(Position); - end; procedure TFormTCO.ImageTCODragOver(Sender, Source: TObject; X, Y: Integer; @@ -4603,8 +4531,8 @@ begin TamponTCO_Org.x1:=XminiSel div LargeurCell +1; TamponTCO_Org.x2:=XmaxiSel div LargeurCell +1; - TamponTCO_Org.y1:=yminiSel div LargeurCell +1; - TamponTCO_Org.y2:=ymaxiSel div LargeurCell +1; + TamponTCO_Org.y1:=yminiSel div HauteurCell +1; + TamponTCO_Org.y2:=ymaxiSel div HauteurCell +1; for y:=TamponTCO_Org.y1 to TamponTCO_Org.y2 do for x:=TamponTCO_Org.x1 to TamponTCO_Org.x2 do tamponTCO[x,y]:=tco[x,y]; @@ -4637,7 +4565,7 @@ begin tco[XclicCell,YClicCell].Texte:=''; efface_entoure; - efface_cellule(ImageTCO.Canvas,XclicCell,YClicCell,fond,PmCopy); + efface_cellule(ImageTCO.Canvas,XclicCell,YClicCell,PmCopy); TamponAffecte:=true; xCoupe:=XclicCell;yCoupe:=YclicCell; @@ -4663,7 +4591,7 @@ begin tco[x,y].Texte:=''; //Affiche('Efface cellules '+IntToSTR(X)+' '+intToSTR(y),clyellow); efface_entoure; - efface_cellule(ImageTCO.Canvas,X,Y,fond,PmCopy); + efface_cellule(ImageTCO.Canvas,X,Y,PmCopy); if avecGrille then grille; end; end; @@ -4700,6 +4628,8 @@ end; // évènement qui se produit quand on clique gauche ou droit procedure TFormTCO.ImageTCOMouseDown(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer); var position : Tpoint; + Bimage : integer; + s : string; begin // ImageTCO.BeginDrag(true); if button=mbLeft then @@ -4722,11 +4652,75 @@ begin end; SelectionAffichee:=false; end; + + // clic gauche + clicTCO:=true; + GetCursorPos(Position); + + Position:=formTCO.ImageTCO.screenToCLient(Position); + //Affiche(IntToSTR(position.x),clyellow); + Xclic:=position.X;YClic:=position.Y; + XclicCell:=Xclic div largeurCell +1; + YclicCell:=Yclic div hauteurCell +1; + //Affiche('xcliccell='+IntToSTR(XclicCell)+' ycliccell='+IntToSTR(YclicCell),clyellow); + if XclicCell>NbreCellX then exit; + if YclicCell>NbreCellY then exit; + + Bimage:=tco[XClicCell,YClicCell].Bimage; + + // si aiguillage, mettre à jour l'option de pilotage inverse + if (bimage=2) or (bimage=3) or (bimage=4) or (bimage=5) or (bimage=12) or (bimage=13) + or (bimage=14) or (bimage=15) then + begin + // aiguillage inversé + with FormConfCellTCO.CheckPinv do + begin + enabled:=true; + checked:=TCO[XClicCell,YClicCell].inverse; + end; + CheckPinv.checked:=TCO[XClicCell,YClicCell].inverse; + CheckPinv.enabled:=true ; + end + else + begin + CheckPinv.enabled:=false; + FormConfCellTCO.checkPinv.enabled:=false; + end; + + // si voie ou rien ou signal ou quai + if (Bimage=1) or (Bimage=0) or (Bimage=23) then + begin + s:=Tco[XClicCell,YClicCell].Texte; + EditTexte.Text:=s; + EditTexte.Visible:=true; + ComboRepr.Enabled:=true; + end + else + begin + formTCO.EditTexte.Visible:=false; + formTCO.comboRepr.Enabled:=false; + end; + + s:=IntToSTR(XclicCell)+','+IntToSTR(YclicCell); + LabelCoord.caption:=s; + GroupBox1.Caption:='Configuration cellule '+s; + + XclicCellInserer:=XClicCell; + YclicCellInserer:=YClicCell; + + EditAdrElement.Text:=IntToSTR(tco[XClicCellInserer,YClicCellInserer].Adresse); + EdittypeImage.Text:=IntToSTR(BImage); + ComboRepr.ItemIndex:=tco[XClicCell,yClicCell].repr; + ShapeCoulFond.Brush.Color:=tco[XClicCell,yClicCell].CouleurFond; + + if not(selectionaffichee) then _entoure_cell_clic; //zizi + actualise; + clicTCO:=false; end; if button=mbRight then begin - if affEvt then Affiche('TCO Souris clicG enfoncée',clLime); + if affEvt then Affiche('TCO Souris clicD enfoncée',clLime); GetCursorPos(Position); Position:=ImageTCO.screenToCLient(Position); Xclic:=position.X; @@ -4745,59 +4739,48 @@ end; procedure TFormTCO.ImageTCOMouseMove(Sender: TObject; Shift: TShiftState;X, Y: Integer); var Position: TPoint; r : Trect; - cellX,cellY,x0,y0,XSel1,YSel1,XSel2,YSel2,Bimage : integer; + cellX,cellY,x0,y0,XSel1,YSel1,XSel2,YSel2,Bimage,xMiniSelP,yMiniSelP,xMaxiSelP,yMaxiSelP : integer; s : string; begin - //Affiche('Mouse Move direct',clLime); + // if affevt then Affiche('ImageTCOMouseMove',clLime); if Temposouris<1 then exit; if not(sourisclic) then exit; - //Affiche('Mouse Move',clLime); SourisX.Caption:=IntToSTR(x); SourisY.Caption:=IntToSTR(y); cellX:=x div largeurCell+1; cellY:=y div hauteurCell+1; + //Affiche('Cellx='+IntToSTR(Cellx)+' Celly='+intToSTR(Celly)+' AncienCellx='+IntToSTR(AncienXClicCell)+' AncienCelly='+intToSTR(AncienYClicCell),clorange); + + if (AncienXClicCell=CellX) and (AncienYClicCell=CellY) then exit; + + AncienXClicCell:=CellX; + AncienYClicCell:=CellY; + + //Affiche('cellX='+IntToSTR(Cellx)+' cellY='+intToSTR(cellY),clyellow); + if CellX>NbreCellX then exit; if CellY>NbreCellY then exit; Bimage:=tco[cellX,cellY].BImage; - s:='Type Image='+IntToSTR(Bimage); - ImageTCO.Hint:=s; - // on a cliqué la souris en la bougeant : sélection bleue en cours - GetCursorPos(Position); - Position:=ImageTCO.screenToCLient(Position); - Xclic:=position.X; - YClic:=position.Y; + xMiniSel:=(XclicCell-1)*LargeurCell; + yMiniSel:=(YclicCell-1)*HauteurCell; + xMaxiSel:=(cellX-1)*LargeurCell; + yMaxiSel:=(cellY-1)*HauteurCell; - // coordonnées grille - AncienXClicCell:=XclicCell; - AncienYClicCell:=YclicCell; - XclicCell:=Xclic div largeurCell + 1; - YclicCell:=Yclic div hauteurCell + 1; - if (AncienXClicCell=XclicCell) and (AncienYClicCell=YclicCell) then exit; - if XclicCell>NbreCellX then exit; - if YclicCell>NbreCellY then exit; + xminiSelP:=min(xminiSel,xMaxiSel); + yminiSelP:=min(yminiSel,yMaxiSel); + xmaxiSelP:=max(xminiSel,xMaxiSel); + ymaxiSelP:=max(yminiSel,yMaxiSel); - //Affiche('MouseMove',clyellow); - //Affiche('X='+IntToSTR(XClicCell)+' Y='+intToSTR(YclicCell),clyellow); + xminiSel:=xMiniSelP; + yminiSel:=yMiniSelP; + xMaxiSel:=xMaxiSelP; + yMaxiSel:=yMaxiSelP; - x0:=(XclicCell-1)*LargeurCell; - y0:=(YclicCell-1)*HauteurCell; - //Affiche('X0='+IntToSTR(x0)+' Y0='+intToSTR(y0),clyellow); - - AncienXMiniSel:=xMiniSel; - AncienYMiniSel:=YminiSel; - AncienXmaxiSel:=XmaxiSel; - AncienYMaxiSel:=YmaxiSel; - - if xMiniSel>x0 then XminiSel:=X0; - if yMiniSel>y0 then yminiSel:=y0; - if xMaxiSel=4 then Efface_Cellule(PCanvasTCO,xClicCell+1,yClicCell,fond,PmCopy); + Efface_Cellule(PCanvasTCO,xClicCell,yClicCell,PmCopy); + if aspect>=4 then Efface_Cellule(PCanvasTCO,xClicCell+1,yClicCell,PmCopy); end; // ancien feu orienté orienté 90G if tco[XClicCell,YClicCell].FeuOriente=2 then begin - Efface_Cellule(PCanvasTCO,xClicCell,yClicCell,fond,PmCopy); - if aspect>=4 then Efface_Cellule(PCanvasTCO,xClicCell+1,yClicCell,fond,PmCopy); + Efface_Cellule(PCanvasTCO,xClicCell,yClicCell,PmCopy); + if aspect>=4 then Efface_Cellule(PCanvasTCO,xClicCell+1,yClicCell,PmCopy); end; // si l'image était verticale, il faut effacer la cellule en bas if tco[XClicCell,YClicCell].FeuOriente=1 then begin - Efface_Cellule(PCanvasTCO,xClicCell,yClicCell,fond,PmCopy); - Efface_Cellule(PCanvasTCO,xClicCell,yClicCell+1,fond,PmCopy); + Efface_Cellule(PCanvasTCO,xClicCell,yClicCell,PmCopy); + Efface_Cellule(PCanvasTCO,xClicCell,yClicCell+1,PmCopy); end; tco[XClicCell,YClicCell].FeuOriente:=3; // feu orienté à 90° droit @@ -5139,24 +5121,24 @@ begin // ancien feu orienté orienté 90D if tco[XClicCell,YClicCell].FeuOriente=3 then begin - Efface_Cellule(PCanvasTCO,xClicCell,yClicCell,fond,PmCopy); + Efface_Cellule(PCanvasTCO,xClicCell,yClicCell,PmCopy); // si le feu occupe 2 cellules - if aspect>=4 then Efface_Cellule(PCanvasTCO,xClicCell+1,yClicCell,fond,PmCopy); + if aspect>=4 then Efface_Cellule(PCanvasTCO,xClicCell+1,yClicCell,PmCopy); end; // ancien feu orienté orienté 90G if tco[XClicCell,YClicCell].FeuOriente=2 then begin - Efface_Cellule(PCanvasTCO,xClicCell,yClicCell,fond,PmCopy); + Efface_Cellule(PCanvasTCO,xClicCell,yClicCell,PmCopy); // si le feu occupe 2 cellules - if aspect>=4 then Efface_Cellule(PCanvasTCO,xClicCell+1,yClicCell,fond,PmCopy); + if aspect>=4 then Efface_Cellule(PCanvasTCO,xClicCell+1,yClicCell,PmCopy); end; // si l'image était verticale, il faut effacer la cellule en bas if tco[XClicCell,YClicCell].FeuOriente=1 then begin - Efface_Cellule(PCanvasTCO,xClicCell,yClicCell,fond,PmCopy); - Efface_Cellule(PCanvasTCO,xClicCell,yClicCell+1,fond,PmCopy); + Efface_Cellule(PCanvasTCO,xClicCell,yClicCell,PmCopy); + Efface_Cellule(PCanvasTCO,xClicCell,yClicCell+1,PmCopy); end; tco[XClicCell,YClicCell].FeuOriente:=1; // feu orienté à 180° @@ -5183,7 +5165,7 @@ procedure TFormTCO.EditTexteChange(Sender: TObject); begin if clicTCO then exit; if affevt then Affiche('TCO.EditTextChange',clOrange); - PCanvasTCO.Brush.Color:=fond; + PCanvasTCO.Brush.Color:=Clfond; efface_entoure; if Tco[XClicCell,YClicCell].texte='' then begin @@ -5220,6 +5202,8 @@ begin zone_TCO(530,520,1); zone_TCO(515,517,1); + zone_TCO(523,590,2); + end; procedure TFormTCO.CheckPinvClick(Sender: TObject); @@ -5563,6 +5547,11 @@ begin SetWindowText(FontDialog1.Handle,pchar(titre_Fonte)); end; +procedure TFormTCO.ColorDialog1Show(Sender: TObject); +begin + SetWindowText(ColorDialog1.Handle,pchar(titre_couleur)); +end; + procedure signalD; begin if actualize then exit; @@ -5601,6 +5590,15 @@ procedure TFormTCO.PopupMenu1Popup(Sender: TObject); var oriente,piedFeu : integer; begin //Affiche('on popup',clyellow); + + PopUpMenu1.Items[8][0].Caption:='Ligne au dessus de la '+intToSTR(YclicCell); + PopUpMenu1.Items[8][1].Caption:='Ligne en dessous de la '+intToSTR(YclicCell); + PopUpMenu1.Items[8][3].Caption:='Colonne à gauche de la '+intToSTR(XclicCell); + PopUpMenu1.Items[8][4].Caption:='Colonne à droite de la '+intToSTR(XclicCell); + + PopUpMenu1.Items[9][0].Caption:='Ligne '+intToSTR(YclicCell); + PopUpMenu1.Items[9][1].Caption:='Colonne '+intToSTR(XclicCell); + // grise ou non l'entrée signal du menu if tco[XClicCell,YClicCell].Bimage=30 then begin @@ -5653,65 +5651,176 @@ begin end; - - -procedure TFormTCO.LigneDessusClick(Sender: TObject); -var x,y : integer; -begin - if NbreCellY>=MaxCellY then exit; - for y:=NbreCellY downto YClicCell do - begin - for x:=1 to NbreCellX do tco[x,y+1]:=tco[x,y]; - end; - for x:=1 to NbreCellX do - begin - tco[x,YClicCell].Adresse:=0; - tco[x,YClicCell].BImage:=0; - tco[x,YClicCell].inverse:=false; - tco[x,YClicCell].repr:=0; - tco[x,YClicCell].texte:=''; - tco[x,YClicCell].fonte:=''; - tco[x,YClicCell].Couleur:=fond; - tco[x,YClicCell].PiedFeu:=0; - tco[x,YClicCell].FeuOriente:=0; - end; - inc(NbreCellY); - affiche_TCO; -end; - -procedure TFormTCO.LigneDessousClick(Sender: TObject); -var x,y : integer; -begin - if NbreCellY>=MaxCellY then exit; - for y:=NbreCellY downto YClicCell+1 do - begin - for x:=1 to NbreCellX do tco[x,y+1]:=tco[x,y]; - end; - for x:=1 to NbreCellX do - begin - tco[x,YClicCell+1].Adresse:=0; - tco[x,YClicCell+1].BImage:=0; - tco[x,YClicCell+1].inverse:=false; - tco[x,YClicCell+1].repr:=0; - tco[x,YClicCell+1].texte:=''; - tco[x,YClicCell+1].fonte:=''; - tco[x,YClicCell+1].Couleur:=fond; - tco[x,YClicCell+1].PiedFeu:=0; - tco[x,YClicCell+1].FeuOriente:=0; - end; - inc(NbreCellY); - affiche_TCO; -end; - -procedure TFormTCO.SupprimeLigneClick(Sender: TObject); -var x,y : integer; -begin - if NbreCellY<=1 then exit; - - // tampon de sauvegarde - TamponTCO_Org.NbreCellX:=NbreCellX; - TamponTCO_Org.NbreCellY:=NbreCellY; - TamponTCO_Org.x1:=1; + procedure TFormTCO.LigneDessusClick(Sender: TObject); + var x,y : integer; +begin + if NbreCellY>=MaxCellY then exit; + TamponAffecte:=false; + SetLength(TCO,NbreCellX+1,NbreCellY+2); // ajoute une ligne en Y + SetLength(TamponTCO,NbreCellX+1,NbreCellY+2); + + for y:=NbreCellY-1 downto YClicCell do + begin + for x:=1 to NbreCellX do + begin + tco[x,y+1]:=tco[x,y]; + end; + end; + for x:=1 to NbreCellX do + begin + tco[x,YClicCell].Adresse:=0; + tco[x,YClicCell].BImage:=0; + tco[x,YClicCell].inverse:=false; + tco[x,YClicCell].repr:=0; + tco[x,YClicCell].texte:=''; + tco[x,YClicCell].fonte:=''; + tco[x,YClicCell].CouleurFond:=Clfond; + tco[x,YClicCell].PiedFeu:=0; + tco[x,YClicCell].FeuOriente:=0; + end; + inc(NbreCellY); + affiche_TCO; +end; + +procedure TFormTCO.LigneDessousClick(Sender: TObject); +var x,y : integer; +begin + if NbreCellY>=MaxCellY then exit; + TamponAffecte:=false; + SetLength(TCO,NbreCellX+1,NbreCellY+2); // ajoute une ligne en Y + SetLength(TamponTCO,NbreCellX+1,NbreCellY+2); // ajoute une ligne en Y + + for y:=NbreCellY downto YClicCell+1 do + begin + for x:=1 to NbreCellX do tco[x,y+1]:=tco[x,y]; + end; + for x:=1 to NbreCellX do + begin + tco[x,YClicCell+1].Adresse:=0; + tco[x,YClicCell+1].BImage:=0; + tco[x,YClicCell+1].inverse:=false; + tco[x,YClicCell+1].repr:=0; + tco[x,YClicCell+1].texte:=''; + tco[x,YClicCell+1].fonte:=''; + tco[x,YClicCell+1].Couleurfond:=Clfond; + tco[x,YClicCell+1].PiedFeu:=0; + tco[x,YClicCell+1].FeuOriente:=0; + end; + inc(NbreCellY); + affiche_TCO; +end; + +procedure TFormTCO.SupprimeLigneClick(Sender: TObject); +var x,y : integer; +begin + if NbreCellY<=1 then exit; + TamponAffecte:=false; + // tampon de sauvegarde + TamponTCO_Org.NbreCellX:=NbreCellX; + TamponTCO_Org.NbreCellY:=NbreCellY; + TamponTCO_Org.x1:=1; + TamponTCO_Org.x2:=NbreCellX; + TamponTCO_Org.y1:=1; + TamponTCO_Org.y2:=NbreCellY; + xcoupe:=1;ycoupe:=1; + for y:=TamponTCO_Org.y1 to TamponTCO_Org.y2 do + for x:=TamponTCO_Org.x1 to TamponTCO_Org.x2 do + begin + //Affiche(intToSTR(x)+' '+intToSTR(y),clyellow); + tamponTCO[x,y]:=tco[x,y]; + end; + //TamponAffecte:=true; + + // supression ligne + for y:=YClicCell to NbreCellY-1 do + begin + for x:=1 to NbreCellX do tco[x,y]:=tco[x,y+1]; + end; + for x:=1 to NbreCellX do + begin + tco[x,NbreCellY].Adresse:=0; + tco[x,NbreCellY].BImage:=0; + tco[x,NbreCellY].inverse:=false; + tco[x,NbreCellY].repr:=0; + tco[x,NbreCellY].texte:=''; + tco[x,NbreCellY].fonte:=''; + tco[x,NbreCellY].Couleurfond:=Clfond; + tco[x,NbreCellY].PiedFeu:=0; + tco[x,NbreCellY].FeuOriente:=0; + end; + dec(NbreCellY); + SetLength(TCO,NbreCellX+1,NbreCellY+1); // ajuste la taille du tableau + SetLength(TamponTCO,NbreCellX+1,NbreCellY+1); // ajoute une ligne en Y + + affiche_TCO; +end; + +procedure TFormTCO.Colonnegauche1Click(Sender: TObject); + var x,y : integer; +begin + if NbreCellX>=MaxCellX then exit; + TamponAffecte:=false; + SetLength(TCO,NbreCellX+2,NbreCellY+1); // ajoute taille X + SetLength(TamponTCO,NbreCellX+2,NbreCellY+1); + + for x:=NbreCellX downto XClicCell do + begin + for y:=1 to NbreCellY do tco[x+1,y]:=tco[x,y]; + end; + for y:=1 to NbreCellY do + begin + tco[XClicCell,y].Adresse:=0; + tco[XClicCell,y].BImage:=0; + tco[XClicCell,y].inverse:=false; + tco[XClicCell,y].repr:=0; + tco[XClicCell,y].texte:=''; + tco[XClicCell,y].fonte:=''; + tco[XClicCell,y].Couleurfond:=Clfond; + tco[XClicCell,y].PiedFeu:=0; + tco[XClicCell,y].FeuOriente:=0; + end; + inc(NbreCellX); + affiche_TCO; +end; + +procedure TFormTCO.Colonnedroite1Click(Sender: TObject); + var x,y : integer; +begin + if NbreCellX>=MaxCellX then exit; + TamponAffecte:=false; + SetLength(TCO,NbreCellX+2,NbreCellY+1); // ajoute taille X + SetLength(TamponTCO,NbreCellX+2,NbreCellY+1); // ajoute taille X + + for x:=NbreCellX downto XClicCell+1 do + begin + for y:=1 to NbreCellY do tco[x+1,y]:=tco[x,y]; + end; + for y:=1 to NbreCellY do + begin + tco[XClicCell+1,y].Adresse:=0; + tco[XClicCell+1,y].BImage:=0; + tco[XClicCell+1,y].inverse:=false; + tco[XClicCell+1,y].repr:=0; + tco[XClicCell+1,y].texte:=''; + tco[XClicCell+1,y].fonte:=''; + tco[XClicCell+1,y].Couleurfond:=Clfond; + tco[XClicCell+1,y].PiedFeu:=0; + tco[XClicCell+1,y].FeuOriente:=0; + end; + inc(NbreCellX); + affiche_TCO; +end; + +// suppression colonne +procedure TFormTCO.ColonneClick(Sender: TObject); +var x,y : integer; +begin + if NbreCellX<=1 then exit; + TamponAffecte:=false; + // tampon de sauvegarde + TamponTCO_Org.NbreCellX:=NbreCellX; + TamponTCO_Org.NbreCellY:=NbreCellY; + TamponTCO_Org.x1:=1; TamponTCO_Org.x2:=NbreCellX; TamponTCO_Org.y1:=1; TamponTCO_Org.y2:=NbreCellY; @@ -5719,171 +5828,158 @@ begin for y:=TamponTCO_Org.y1 to TamponTCO_Org.y2 do for x:=TamponTCO_Org.x1 to TamponTCO_Org.x2 do tamponTCO[x,y]:=tco[x,y]; - TamponAffecte:=true; - - // supression ligne - for y:=YClicCell to NbreCellY do - begin - for x:=1 to NbreCellX do tco[x,y]:=tco[x,y+1]; - end; - for x:=1 to NbreCellX do - begin - tco[x,NbreCellY].Adresse:=0; - tco[x,NbreCellY].BImage:=0; - tco[x,NbreCellY].inverse:=false; - tco[x,NbreCellY].repr:=0; - tco[x,NbreCellY].texte:=''; - tco[x,NbreCellY].fonte:=''; - tco[x,NbreCellY].Couleur:=fond; - tco[x,NbreCellY].PiedFeu:=0; - tco[x,NbreCellY].FeuOriente:=0; - end; - dec(NbreCellY); - affiche_TCO; -end; - -procedure TFormTCO.Colonnegauche1Click(Sender: TObject); - var x,y : integer; -begin - if NbreCellX>=MaxCellX then exit; - for x:=NbreCellX downto XClicCell do - begin - for y:=1 to NbreCellY do tco[x+1,y]:=tco[x,y]; - end; - for y:=1 to NbreCellX do - begin - tco[XClicCell,y].Adresse:=0; - tco[XClicCell,y].BImage:=0; - tco[XClicCell,y].inverse:=false; - tco[XClicCell,y].repr:=0; - tco[XClicCell,y].texte:=''; - tco[XClicCell,y].fonte:=''; - tco[XClicCell,y].Couleur:=fond; - tco[XClicCell,y].PiedFeu:=0; - tco[XClicCell,y].FeuOriente:=0; - end; - inc(NbreCellX); - affiche_TCO; -end; - -procedure TFormTCO.Colonnedroite1Click(Sender: TObject); - var x,y : integer; -begin - if NbreCellX>=MaxCellX then exit; - for x:=NbreCellX downto XClicCell+1 do - begin - for y:=1 to NbreCellY do tco[x+1,y]:=tco[x,y]; - end; - for y:=1 to NbreCellX do - begin - tco[XClicCell+1,y].Adresse:=0; - tco[XClicCell+1,y].BImage:=0; - tco[XClicCell+1,y].inverse:=false; - tco[XClicCell+1,y].repr:=0; - tco[XClicCell+1,y].texte:=''; - tco[XClicCell+1,y].fonte:=''; - tco[XClicCell+1,y].Couleur:=fond; - tco[XClicCell+1,y].PiedFeu:=0; - tco[XClicCell+1,y].FeuOriente:=0; - end; - inc(NbreCellX); - affiche_TCO; -end; - -// suppression colonne -procedure TFormTCO.ColonneClick(Sender: TObject); -var x,y : integer; -begin - if NbreCellX<=1 then exit; - - // tampon de sauvegarde - TamponTCO_Org.NbreCellX:=NbreCellX; - TamponTCO_Org.NbreCellY:=NbreCellY; - TamponTCO_Org.x1:=1; - TamponTCO_Org.x2:=NbreCellX; - TamponTCO_Org.y1:=1; - TamponTCO_Org.y2:=NbreCellY; - xcoupe:=1;ycoupe:=1; - for y:=TamponTCO_Org.y1 to TamponTCO_Org.y2 do - for x:=TamponTCO_Org.x1 to TamponTCO_Org.x2 do - tamponTCO[x,y]:=tco[x,y]; - TamponAffecte:=true; - - // supression colonne - for x:=xClicCell to NbreCellx do - begin - for y:=1 to NbreCelly do tco[x,y]:=tco[x+1,y]; - end; - for y:=1 to NbreCellY do - begin - tco[NbreCellx,y].Adresse:=0; - tco[NbreCellx,y].BImage:=0; - tco[NbreCellx,y].inverse:=false; - tco[NbreCellx,y].repr:=0; - tco[NbreCellx,y].texte:=''; - tco[NbreCellx,y].fonte:=''; - tco[NbreCellx,y].Couleur:=fond; - tco[NbreCellx,y].PiedFeu:=0; - tco[NbreCellx,y].FeuOriente:=0; - end; - dec(NbreCellX); - affiche_TCO; -end; - -procedure TFormTCO.buttonRazClick(Sender: TObject); -var x,y : integer; -begin - for x:=1 to NbreCellx do - for y:=1 to NbreCelly do tco[x,y].mode:=0; + // TamponAffecte:=true; + + // supression colonne + for x:=xClicCell to NbreCellx-1 do + begin + for y:=1 to NbreCelly do + begin + tco[x,y]:=tco[x+1,y]; + end; + end; + for y:=1 to NbreCellY do + begin + tco[NbreCellx,y].Adresse:=0; + tco[NbreCellx,y].BImage:=0; + tco[NbreCellx,y].inverse:=false; + tco[NbreCellx,y].repr:=0; + tco[NbreCellx,y].texte:=''; + tco[NbreCellx,y].fonte:=''; + tco[NbreCellx,y].CouleurFond:=Clfond; + tco[NbreCellx,y].PiedFeu:=0; + tco[NbreCellx,y].FeuOriente:=0; + end; + dec(NbreCellX); + SetLength(TCO,NbreCellX+1,NbreCellY+1); // ajuste taille + SetLength(TamponTCO,NbreCellX+1,NbreCellY+1); // ajuste taille + + affiche_TCO; +end; + +procedure TFormTCO.buttonRazClick(Sender: TObject); +var x,y : integer; +begin + for x:=1 to NbreCellx do + for y:=1 to NbreCelly do tco[x,y].mode:=0; + Affiche_TCO; +end; + +procedure TFormTCO.FormMouseWheel(Sender: TObject; Shift: TShiftState; + WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); +var i,maxi : integer; +begin + + i:=FormTCO.TrackBarZoom.Position; + + if WheelDelta>0 then + begin + if (i<=ZoomMin) then + begin + FormTCO.TrackBarZoom.Position:=ZoomMin; + exit; + end; + dec(i); + end + else + begin + if (i>=ZoomMax) then + begin + FormTCO.TrackBarZoom.Position:=ZoomMax; + exit; + end; + inc(i); + end; + + // positionner la trackbar zoom + FormTCO.TrackBarZoom.Position:=i; + calcul_cellules; Affiche_TCO; -end; - -procedure TFormTCO.FormMouseWheel(Sender: TObject; Shift: TShiftState; - WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); -var i,maxi : integer; -begin - - i:=FormTCO.TrackBarZoom.Position; - - if WheelDelta>0 then - begin - if (i<=ZoomMin) then + SelectionAffichee:=false; + + //positionner les trackbar du scrollbox sur la position cliquée de la souris + {GetCursorPos(Position); + x:=position.x div largeurCell +1 ; + y:=position.Y div HauteurCell +1 ; + } + maxi:=ScrollBox.HorzScrollBar.Range-ScrollBox.ClientWidth; + i:=round(xClicCell*maxi/NbreCellx); + ScrollBox.HorzScrollBar.position:=i; + + maxi:=ScrollBox.VertScrollBar.Range-ScrollBox.ClientHeight; + i:=round(yClicCell*maxi/NbreCelly); + ScrollBox.VertScrollBar.position:=i; +end; + +procedure TFormTCO.ButtonCalibrageClick(Sender: TObject); +var x,y : integer; +begin + x:=0; + y:=0; + calcul_reduction(frxGlob,fryGlob,LargeurCell,HauteurCell,ZoomMax,ZoomMax); + with imageTCO.Canvas do + begin + pen.color:=clyellow; + moveTo( round(x),round(y*frYGlob) ); + LineTo( round((x+LargeurCell)),round(y+HauteurCell*ratioC/10) ); + end; + Affiche(formatfloat('0.000000',fryglob),clyellow); +end; + +procedure change_couleur_fond; +var cs : string; + x,y,xmini,ymini,xmaxi,ymaxi : integer; + modeselection : boolean; +begin + xmini:=(XminiSel div LargeurCell) +1; + ymini:=(YminiSel div HauteurCell) +1; + xmaxi:=(XmaxiSel div LargeurCell) +1; + ymaxi:=(YmaxiSel div HauteurCell) +1; + modeSelection:=xmini=ZoomMax) then - begin - FormTCO.TrackBarZoom.Position:=ZoomMax; - exit; - end; - inc(i); end; - - // positionner la trackbar zoom - FormTCO.TrackBarZoom.Position:=i; - calcul_cellules; - Affiche_TCO; - SelectionAffichee:=false; - - //positionner les trackbar du scrollbox sur la position cliquée de la souris - {GetCursorPos(Position); - x:=position.x div largeurCell +1 ; - y:=position.Y div HauteurCell +1 ; - } - maxi:=ScrollBox.HorzScrollBar.Range-ScrollBox.ClientWidth; - i:=round(xClicCell*maxi/NbreCellx); - ScrollBox.HorzScrollBar.position:=i; - - maxi:=ScrollBox.VertScrollBar.Range-ScrollBox.ClientHeight; - i:=round(yClicCell*maxi/NbreCelly); - ScrollBox.VertScrollBar.position:=i; - -end; - -begin -end. +end; + + + +procedure TFormTCO.ButtonCoulFondClick(Sender: TObject); +begin + change_couleur_fond; +end; + + +begin +end. diff --git a/Unit_Pilote_aig.dcu b/Unit_Pilote_aig.dcu index 3cda026..ce95e69 100644 Binary files a/Unit_Pilote_aig.dcu and b/Unit_Pilote_aig.dcu differ diff --git a/Unitplace.dcu b/Unitplace.dcu index e394a18..93f22e4 100644 Binary files a/Unitplace.dcu and b/Unitplace.dcu differ diff --git a/Unitplace.pas b/Unitplace.pas index d13f9b9..8686fb5 100644 --- a/Unitplace.pas +++ b/Unitplace.pas @@ -173,7 +173,6 @@ begin inc(it); //detecteur[detect].adrTrain:=trains[i].adresse; //event_detecteur(detect,true,trains[i].nom_train); - Affiche('Positionnement train '+detecteur[detect].train+' sur détecteur '+intToSTR(detect)+' vers '+Ssuiv,clLime); { SauvefiltrageDet0:=filtrageDet0; filtrageDet0:=0; @@ -203,6 +202,9 @@ begin event_det_train[it].det[1].adresse:=prec; event_det_train[it].det[1].etat:=false; event_det_train[it].nom_train:=placement[i].train; + + Affiche('Positionnement train '+detecteur[detect].train+' sur détecteur '+intToSTR(detect)+' vers '+Ssuiv,clLime); + inc(N_trains); end diff --git a/tco.cfg b/tco.cfg index 148ac90..70206aa 100644 --- a/tco.cfg +++ b/tco.cfg @@ -2,9 +2,10 @@ CoulFond=202050 CoulVoies=0077FF CoulAllume=00FFFF -CoulGrille=4A4A4A +CoulGrille=404040 CoulTexte=00FF00 CoulQuai=808080 +CoulPiedSig=4080FF CoulCanton=00FFFF ModeCouleurCanton=1 AvecGrille=1 @@ -14,17 +15,17 @@ Matrice=35,13 Ratio=10 /Matrice TCO [Matrice] -/ inutilisé,adresse,image,inversion aiguillage,Orientation du feu, pied du feu , [texte], representation, fonte, taille fonte, couleur fonte, style -(0,358,30,0,1,1,,2,,0,FFFFFF,)(0,0,20,0,0,0,,2,,0,00FFFF,)(0,0,20,0,0,0,,2,,0,00FFFF,)(0,497,30,0,1,2,,2,,0,FFFFFF,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,TCO GARE PRINCIPALE,1,ARIAL,20,00FFFF,GI)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,FFFFFF,)(0,0,0,0,0,0,,0,,0,000000,) -(0,0,0,0,0,0,,2,,0,000000,)(0,0,20,0,0,0,,2,,0,00FFFF,)(0,0,20,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,8,00FF00,)(0,0,0,0,0,0,,2,,8,00FF00,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,9,0,0,0,,2,,0,000000,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,0,0,0,0,,0,,0,000000,) -(0,0,0,0,0,0,,2,,0,000000,)(0,517,20,0,0,0,,2,,0,00FFFF,)(0,531,20,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,6,2,0,0,0,,2,,0,00FF00,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,10,0,0,0,,2,,0,000000,)(0,0,9,0,0,0,,2,,0,000000,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,0,0,0,0,,0,,0,000000,) -(0,0,0,0,0,0,,2,,0,000000,)(0,0,20,0,0,0,,2,,0,00FFFF,)(0,0,20,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,10,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,232,30,0,3,1,,2,,0,00FF00,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,FFFFFF,)(0,288,30,0,2,1,,2,,0,FFFFFF,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,10,0,0,0,,2,MS SANS SERIF,10,00FFFF,)(0,0,10,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,) -(0,0,0,0,0,0,,2,,0,000000,)(0,0,20,0,0,0,,2,,0,00FFFF,)(0,0,20,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,372,30,0,1,1,,2,,0,FFFFFF,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,4,15,0,0,0,,2,,0,00FF00,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,514,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,522,1,0,0,0,,2,,0,00FFFF,)(0,0,7,0,0,0,,2,,0,000000,)(0,0,10,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,) -(0,0,0,0,0,0,,2,,0,000000,)(0,0,20,0,0,0,,2,,0,00FFFF,)(0,0,20,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,3,15,0,0,0,,2,,0,00FF00,)(0,5,2,0,0,0,,2,,0,00FF00,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,515,1,0,0,0,,2,,0,00FFFF,)(0,515,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,7,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,) -(0,0,0,0,0,0,,2,,0,000000,)(0,0,19,0,0,0,,2,,0,00FFFF,)(0,0,19,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,520,30,0,2,1,,2,,0,00FF00,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,10,0,0,0,,2,,0,000000,)(0,0,10,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,316,30,0,3,1,,2,,0,00FF00,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,23,0,0,0,,2,,0,000000,)(0,0,23,0,0,0,,2,,0,000000,)(0,0,23,0,0,0,QUAI 1,1,ARIAL,12,FFFFFF,G)(0,0,23,0,0,0,,2,,8,00FF00,)(0,0,23,0,0,0,,2,,8,00FF00,)(0,0,23,0,0,0,,2,,0,000000,)(0,0,23,0,0,0,,2,,0,000000,)(0,0,23,0,0,0,,2,,0,000000,)(0,0,23,0,0,0,,2,,0,000000,)(0,0,23,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,190,30,0,2,1,,2,,0,00FF00,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,) -(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,11,0,0,0,,2,,0,00FFFF,)(0,0,6,0,0,0,,2,,0,000000,)(0,518,1,0,0,0,,0,,0,00FFFF,)(0,518,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,1,3,0,0,0,,2,,8,00FF00,)(0,100,21,0,0,0,,2,,0,00FF00,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,VOIE 2,2,ARIAL,10,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,523,1,0,0,0,,0,,0,00FFFF,)(0,523,1,0,0,0,,0,,0,00FFFF,)(0,523,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,) -(0,530,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,8,0,0,0,,2,,0,00FFFF,)(0,0,6,0,0,0,,2,,0,000000,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,12,4,1,0,0,,2,,0,00FF00,)(0,2,3,0,0,0,,2,,0,00FF00,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,519,1,0,0,0,,2,,0,00FFFF,)(0,519,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,VOIE 1,2,ARIAL,10,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,8,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,7,2,0,0,0,,2,,0,00FF00,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,527,1,0,0,0,,2,,8,00FFFF,)(0,0,1,0,0,0,,3,,8,00FFFF,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,) -(0,529,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,26,22,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,8,0,0,0,,0,,0,000000,)(0,0,11,0,0,0,,0,,0,000000,)(0,330,30,0,3,1,,0,,0,00FF00,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,23,0,0,0,,0,,0,000000,)(0,0,23,0,0,0,,0,,0,000000,)(0,0,23,0,0,0,QUAI 2,1,ARIAL,12,FFFFFF,G)(0,0,23,0,0,0,,0,,0,000000,)(0,0,23,0,0,0,,0,,0,000000,)(0,0,23,0,0,0,,0,,0,000000,)(0,0,23,0,0,0,,0,,0,000000,)(0,0,23,0,0,0,,0,,0,000000,)(0,0,23,0,0,0,,0,,0,000000,)(0,0,23,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,10,0,0,0,,0,,0,000000,)(0,204,30,0,3,1,,0,,0,00FF00,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,8,00FF00,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,) -(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,6,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,21,5,0,0,0,,0,,0,00FF00,)(0,20,5,0,0,0,,0,,0,00FF00,)(0,520,1,0,0,0,,2,,8,00FFFF,)(0,520,1,0,0,0,,0,,0,00FFFF,)(0,520,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,8,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,8,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,8,00FFFF,)(0,0,1,0,0,0,,2,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,8,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,8,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,1,0,0,0,,0,,0,00FFFF,)(0,0,7,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,8,00FF00,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,) -(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,176,30,0,3,1,,0,,0,00FF00,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,3,,8,00FF00,)(0,0,0,0,0,0,,0,,8,00FF00,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,8,00FF00,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,8,00FF00,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,8,00FF00,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,) -(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,2,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,)(0,0,0,0,0,0,,0,,0,000000,) +/ couleur fond,adresse,image,inversion aiguillage,Orientation du feu, pied du feu , [texte], representation, fonte, taille fonte, couleur fonte, style, réserve +(202050,358,30,0,1,1,,2,,0,FFFFFF,,0)(202050,0,20,0,0,0,,2,,0,00FFFF,G,0)(202050,0,20,0,0,0,,2,,0,00FFFF,,0)(202050,497,30,0,1,2,,2,,0,FFFFFF,G,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,TCO GARE PRINCIPALE,1,ARIAL,20,00FFFF,GI,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,FFFFFF,,0)(202050,0,0,0,0,0,,0,,0,000000,,0) +(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,20,0,0,0,,2,,0,00FFFF,,0)(202050,0,20,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,8,00FF00,,0)(202050,0,0,0,0,0,,2,,8,00FF00,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,9,0,0,0,,2,,0,000000,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,0,,0,00FFFF,,0)(202050,0,0,0,0,0,,0,,0,000000,,0) +(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,517,20,0,0,0,,2,,0,00FFFF,,0)(202050,531,20,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,6,2,0,0,0,,2,,0,00FF00,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,10,0,0,0,,2,,0,000000,,0)(202050,0,9,0,0,0,,2,,0,000000,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,0,,0,00FFFF,,0)(202050,0,0,0,0,0,,0,,0,000000,,0) +(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,20,0,0,0,,2,,0,00FFFF,,0)(202050,0,20,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,10,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,232,30,0,2,1,,2,,0,00FF00,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,FFFFFF,,0)(202050,288,30,0,2,1,,2,,0,FFFFFF,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,10,0,0,0,,2,MS SANS SERIF,10,00FFFF,,0)(202050,0,10,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0) +(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,20,0,0,0,,2,,0,00FFFF,,0)(202050,0,20,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,372,30,0,1,1,,2,,0,FFFFFF,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,4,15,0,0,0,,2,,0,00FF00,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,514,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,522,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,7,0,0,0,,2,,0,000000,,0)(202050,0,10,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0) +(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,20,0,0,0,,2,,0,00FFFF,,0)(202050,0,20,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,3,15,0,0,0,,2,,0,00FF00,,0)(202050,5,2,0,0,0,,2,,0,00FF00,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,515,1,0,0,0,,2,,0,00FFFF,,0)(202050,515,1,0,0,0,,0,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,7,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,00FFFF,,0)(202050,0,0,0,0,0,,0,,0,000000,,0) +(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,19,0,0,0,,2,,0,00FFFF,,0)(202050,0,19,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,520,30,0,2,1,,2,,0,00FF00,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,10,0,0,0,,2,,0,000000,,0)(202050,0,10,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,316,30,0,3,1,,2,,0,00FF00,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,23,0,0,0,,2,,0,000000,,0)(202050,0,23,0,0,0,,2,,0,000000,,0)(202050,0,23,0,0,0,QUAI 1,1,ARIAL,12,FFFFFF,G,0)(202050,0,23,0,0,0,,2,,8,00FF00,,0)(202050,0,23,0,0,0,,2,,8,00FF00,,0)(202050,0,23,0,0,0,,2,,0,000000,,0)(202050,0,23,0,0,0,,2,,0,000000,,0)(202050,0,23,0,0,0,,2,,0,000000,,0)(202050,0,23,0,0,0,,2,,0,000000,,0)(202050,0,23,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,190,30,0,2,1,,2,,0,00FF00,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,00FFFF,,0)(202050,0,0,0,0,0,,0,,0,000000,,0) +(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,11,0,0,0,,2,,0,00FFFF,,0)(202050,0,6,0,0,0,,2,,0,000000,,0)(202050,518,1,0,0,0,,0,,0,00FFFF,,0)(202050,518,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,1,3,0,0,0,,2,,8,00FF00,,0)(202050,100,21,0,0,0,,2,,0,00FF00,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,VOIE 2,2,ARIAL,10,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,523,1,0,0,0,,0,,0,00FFFF,,0)(202050,523,1,0,0,0,,0,,0,00FFFF,,0)(202050,523,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,0,0,0,0,,2,,0,00FFFF,,0) +(202050,530,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,8,0,0,0,,2,,0,00FFFF,,0)(202050,0,6,0,0,0,,2,,0,000000,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,12,4,1,0,0,,2,,0,00FF00,,0)(202050,2,3,0,0,0,,2,,0,00FF00,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,519,1,0,0,0,,2,,0,00FFFF,,0)(202050,519,1,0,0,0,,0,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,VOIE 1,2,ARIAL,10,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,8,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,7,2,0,0,0,,2,,0,00FF00,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,527,1,0,0,0,,2,,8,00FFFF,,0)(202050,0,1,0,0,0,,3,,8,00FFFF,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0) +(202050,529,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,0,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,26,22,0,0,0,,0,,0,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,0,,0,00FFFF,,0)(202050,0,1,0,0,0,,0,,0,00FFFF,,0)(202050,0,8,0,0,0,,0,,0,000000,,0)(202050,0,11,0,0,0,,0,,0,000000,,0)(202050,330,30,0,3,1,,0,,0,00FF00,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,23,0,0,0,,0,,0,000000,,0)(202050,0,23,0,0,0,,0,,0,000000,,0)(202050,0,23,0,0,0,QUAI 2,1,ARIAL,12,FFFFFF,G,0)(202050,0,23,0,0,0,,0,,0,000000,,0)(202050,0,23,0,0,0,,0,,0,000000,,0)(202050,0,23,0,0,0,,0,,0,000000,,0)(202050,0,23,0,0,0,,0,,0,000000,,0)(202050,0,23,0,0,0,,0,,0,000000,,0)(202050,0,23,0,0,0,,0,,0,000000,,0)(202050,0,23,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,10,0,0,0,,0,,0,000000,,0)(202050,204,30,0,3,1,,0,,0,00FF00,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,8,00FF00,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0) +(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,6,0,0,0,,0,,0,00FFFF,,0)(202050,0,1,0,0,0,,0,,0,00FFFF,,0)(202050,0,1,0,0,0,,0,,0,00FFFF,,0)(202050,0,1,0,0,0,,0,,0,00FFFF,,0)(202050,21,5,0,0,0,,0,,0,00FF00,,0)(202050,20,5,0,0,0,,0,,0,00FF00,,0)(202050,520,1,0,0,0,,2,,8,00FFFF,,0)(202050,520,1,0,0,0,,0,,0,00FFFF,,0)(202050,520,1,0,0,0,,0,,0,00FFFF,,0)(202050,0,1,0,0,0,,0,,8,00FFFF,,0)(202050,0,1,0,0,0,,0,,0,00FFFF,,0)(202050,0,1,0,0,0,,0,,0,00FFFF,,0)(202050,0,1,0,0,0,,0,,8,00FFFF,,0)(202050,0,1,0,0,0,,0,,0,00FFFF,,0)(202050,0,1,0,0,0,,0,,0,00FFFF,,0)(202050,0,1,0,0,0,,0,,8,00FFFF,,0)(202050,0,1,0,0,0,,2,,0,00FFFF,,0)(202050,0,1,0,0,0,,0,,0,00FFFF,,0)(202050,0,1,0,0,0,,0,,8,00FFFF,,0)(202050,0,1,0,0,0,,0,,0,00FFFF,,0)(202050,0,1,0,0,0,,0,,8,00FFFF,,0)(202050,0,1,0,0,0,,0,,0,00FFFF,,0)(202050,0,1,0,0,0,,0,,0,00FFFF,,0)(202050,0,7,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,8,00FF00,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0) +(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,176,30,0,3,1,,0,,0,00FF00,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,3,,8,00FF00,,0)(202050,0,0,0,0,0,,0,,8,00FF00,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,8,00FF00,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,8,00FF00,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,8,00FF00,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0) +(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,2,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0)(202050,0,0,0,0,0,,0,,0,000000,,0) diff --git a/verif_version.dcu b/verif_version.dcu index c2f1ee3..918c98a 100644 Binary files a/verif_version.dcu and b/verif_version.dcu differ diff --git a/verif_version.pas b/verif_version.pas index 1f55891..7483ad7 100644 --- a/verif_version.pas +++ b/verif_version.pas @@ -23,7 +23,7 @@ var Lance_verif : integer; verifVersion,notificationVersion : boolean; -Const Version='5.5'; // sert à la comparaison de la version publiée +Const Version='5.6'; // sert à la comparaison de la version publiée SousVersion=' '; // en cas d'absence de sous version mettre un espace implementation diff --git a/versions.txt b/versions.txt index bf914dc..361bf07 100644 --- a/versions.txt +++ b/versions.txt @@ -144,4 +144,11 @@ version 5.4 : Am version 5.5 : Gestion signaux en doublon. Vérification des adresses interdites en XpressNet Passage au rouge du signal au premier train quittant son détecteur +version 5.51 : Renforcement de la vérification de la cohérence + (chevauchement des signaux et des aiguillages) + Correction bug édition TCO (suppression/insertion ligne/colonne) +version 5.52 : Correction bug exploitation TCO +version 5.6 : Ajout d'affichage d'informations supplémentaires + Couleur de fond définissable pour chaque cellule du TCO ou une zone. +