V8.33
This commit is contained in:
249
UnitConfig.pas
249
UnitConfig.pas
@@ -410,7 +410,6 @@ type
|
||||
procedure ButtonConfigSRClick(Sender: TObject);
|
||||
procedure EditDet1Change(Sender: TObject);
|
||||
procedure EditSuiv1Change(Sender: TObject);
|
||||
procedure EditAdrSigChange(Sender: TObject);
|
||||
procedure EditDet2Change(Sender: TObject);
|
||||
procedure EditSuiv2Change(Sender: TObject);
|
||||
procedure EditDet3Change(Sender: TObject);
|
||||
@@ -528,6 +527,7 @@ type
|
||||
|
||||
procedure RadioCdeDecClick(Sender: TObject);
|
||||
|
||||
procedure Toutslectionner1Click(Sender: TObject);
|
||||
|
||||
procedure ButtonChercheClick(Sender: TObject);
|
||||
|
||||
@@ -1218,7 +1218,7 @@ begin
|
||||
AfficheDebug('Erreur 670 : index nul',clred);
|
||||
exit;
|
||||
end;
|
||||
j:=pos(',',s);
|
||||
s:=chaine_signal;
|
||||
j:=pos(',',s);
|
||||
if j>1 then
|
||||
begin
|
||||
@@ -1961,11 +1961,55 @@ begin
|
||||
writeln(fichierN,'/------------');
|
||||
writeln(fichierN,section_placement_ch);
|
||||
for i:=1 to 6 do
|
||||
s:=placement[i].train+','+inttoSTR(placement[i].detecteur)+',';
|
||||
begin
|
||||
if placement[i].inverse then s:=s+'1' else s:=s+'0';
|
||||
s:=placement[i].train+','+inttoSTR(placement[i].detecteur)+',';
|
||||
s:=s+intToSTR(placement[i].detdir)+',';
|
||||
if placement[i].inverse then s:=s+'1' else s:=s+'0';
|
||||
writeln(fichierN,s);
|
||||
end;
|
||||
writeln(fichierN,'0');
|
||||
|
||||
// périphériques comusb
|
||||
writeln(fichierN,'/------------');
|
||||
writeln(fichierN,section_accCOM_ch);
|
||||
for i:=1 to NbPeriph do
|
||||
begin
|
||||
s:=encode_Periph(i);
|
||||
writeln(fichierN,s);
|
||||
end;
|
||||
writeln(fichierN,'0');
|
||||
closefile(fichierN);
|
||||
end;
|
||||
|
||||
// trie les aiguillages
|
||||
procedure trier_aig;
|
||||
var i,j : integer;
|
||||
temp : TAiguillage;
|
||||
begin
|
||||
for i:=1 to MaxAiguillage do
|
||||
begin
|
||||
for j:=i+1 to MaxAiguillage do
|
||||
begin
|
||||
if aiguillage[i].Adresse>aiguillage[j].adresse then
|
||||
begin
|
||||
temp:=aiguillage[i];
|
||||
aiguillage[i]:=aiguillage[j];
|
||||
aiguillage[j]:=temp;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
for i:=1 to MaxAiguillage do
|
||||
index_accessoire[aiguillage[i].adresse]:=i;
|
||||
end;
|
||||
|
||||
// trie les signaux
|
||||
procedure trier_sig;
|
||||
var i,j : integer;
|
||||
temp : TSignal;
|
||||
begin
|
||||
for i:=1 to NbreFeux do
|
||||
begin
|
||||
for j:=i+1 to NbreFeux do
|
||||
begin
|
||||
if feux[i].Adresse>feux[j].adresse then
|
||||
@@ -2369,8 +2413,7 @@ var s,sa,SOrigine: string;
|
||||
begin
|
||||
if MaxAiguillage>=NbreMaxiAiguillages then
|
||||
begin
|
||||
end
|
||||
else
|
||||
Affiche('Nombre maximal d''aiguillages atteint',clRed);
|
||||
end
|
||||
else
|
||||
inc(maxaiguillage);
|
||||
@@ -2874,28 +2917,10 @@ var s,sa,SOrigine: string;
|
||||
Tablo_periph[NbPeriph].protocole:=sa;
|
||||
i:=com_socket(NbPeriph);
|
||||
if i=1 then
|
||||
inc(NbPeriph_COMUSB);
|
||||
Tablo_periph[NbPeriph].numComposant:=NbPeriph_COMUSB;
|
||||
end;
|
||||
if i=2 then
|
||||
begin
|
||||
inc(NbPeriph_socket);
|
||||
Tablo_periph[NbPeriph].numComposant:=NbPeriph_socket;
|
||||
end;
|
||||
|
||||
// extraire le numéro de com5:9600,n,8,1
|
||||
i:=extract_int(sa);
|
||||
if i=0 then Affiche('Erreur COM nul : '+sOrigine,clred);
|
||||
Tablo_periph[NbPeriph].NumCom:=i;
|
||||
Tablo_com_cde[NbPeriph].NumPeriph:=NbPeriph;
|
||||
end;
|
||||
until (sOrigine='0') or (NbPeriph>=NbMaxi_Periph);
|
||||
end;
|
||||
|
||||
|
||||
// trie les signaux
|
||||
begin
|
||||
inc(NbPeriph_COMUSB);
|
||||
Tablo_periph[NbPeriph].numComposant:=NbPeriph_COMUSB;
|
||||
end;
|
||||
if i=2 then
|
||||
begin
|
||||
inc(NbPeriph_socket);
|
||||
@@ -8014,41 +8039,6 @@ begin
|
||||
end;
|
||||
|
||||
procedure TFormConfig.CheckRAZClick(Sender: TObject);
|
||||
begin
|
||||
if clicliste or (ligneclicAct<0) then exit;
|
||||
if affevt then affiche('Evt CheckRaz Change',clyellow);
|
||||
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetAct then
|
||||
with Formconfig do
|
||||
begin
|
||||
if radioButtonAccess.Checked then
|
||||
begin
|
||||
tablo_actionneur[ligneClicAct+1].raz:=CheckRAZ.checked;
|
||||
s:=encode_act_loc_son(ligneClicAct+1);
|
||||
ListBoxAct.Items[ligneClicAct]:=s;
|
||||
ListBoxAct.Selected[ligneClicAct]:=true;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.EditAdrSigChange(Sender: TObject);
|
||||
var s : string;
|
||||
i, erreur : integer;
|
||||
begin
|
||||
if clicliste then exit;
|
||||
if affevt then Affiche('Evt adresse signal',clOrange);
|
||||
// attention interférence avec clic droit propriétés sur un signal qui génère un evt sur ce contrôle
|
||||
if FormConfig.PageControl.ActivePage=FormConfig.TabSheetSig then
|
||||
with Formconfig do
|
||||
begin
|
||||
s:=EditAdrSig.Text;
|
||||
if (s='') or (ligneClicSig<0) then exit;
|
||||
Val(s,i,erreur);
|
||||
if (erreur<>0) or (i<=0) or (i>MaxAcc) then
|
||||
begin
|
||||
EditAdrSig.Color:=clred;
|
||||
LabelInfo.caption:='Erreur adresse signal ';exit;
|
||||
end;
|
||||
if (index_Signal(i)<>0) then
|
||||
var s : string;
|
||||
begin
|
||||
if clicliste or (ligneclicAct<0) then exit;
|
||||
@@ -8626,26 +8616,6 @@ begin
|
||||
selected[NbrePN-1]:=true;
|
||||
perform(WM_VSCROLL,SB_BOTTOM,0);
|
||||
end;
|
||||
formconfig.GroupBoxRadio.Visible:=false;
|
||||
formconfig.LabelInfo.caption:='';
|
||||
LigneCliqueePN:=NbrePN-1;
|
||||
AncLigneCliqueePN:=LigneCliqueePN;
|
||||
tablo_PN[lignecliqueePN+1].Pulse:=1;
|
||||
Aff_champs_PN(nbrePN);
|
||||
clicliste:=false;
|
||||
config_modifie:=true;
|
||||
end;
|
||||
|
||||
procedure TFormConfig.ButtonNouvPNClick(Sender: TObject);
|
||||
begin
|
||||
ajoute_pn;
|
||||
end;
|
||||
|
||||
|
||||
// trie les aiguillages
|
||||
procedure trier_aig;
|
||||
var i,j : integer;
|
||||
temp : TAiguillage;
|
||||
|
||||
formconfig.GroupBoxRadio.Visible:=false;
|
||||
formconfig.LabelInfo.caption:='';
|
||||
@@ -9830,58 +9800,62 @@ begin
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
begin
|
||||
Affiche('TCO: Erreur de proximité composants incompatibles: cellules TCO'+intToSTR(indexTCO)+' ['+intToSTR(x)+','+intToSTR(y)+'] ',clred);
|
||||
if not(verif_cellule(indexTCO,x,y,i)) then
|
||||
begin
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
// 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);
|
||||
|
||||
// si xpressnet, pas d'accesoires entre 257 à 272
|
||||
AdrOk:=True;
|
||||
if Verif_AdrXpressNet=1 then
|
||||
Affiche('TCO: Erreur de proximité composants incompatibles: cellules TCO'+intToSTR(indexTCO)+' ['+intToSTR(x)+','+intToSTR(y)+'] ',clred);
|
||||
ok:=false;
|
||||
|
||||
end;
|
||||
end;
|
||||
begin
|
||||
adresse:=aiguillage[i].Adresse ;
|
||||
if (adresse>=257) and (adresse<=272) then
|
||||
begin
|
||||
AdrOk:=false;
|
||||
ok:=false;
|
||||
Affiche('Erreur 13: l''aiguillage '+IntToSTR(adresse)+' se trouve dans la plage des accessoires DCC interdits (257-272) en Xpressnet',clred);
|
||||
end;
|
||||
end;
|
||||
for i:=1 to NbreFeux do
|
||||
begin
|
||||
adresse:=feux[i].Adresse;
|
||||
nc:=Nombre_adresses_signal(adresse);
|
||||
|
||||
end;
|
||||
|
||||
// 11 Divers
|
||||
i:=pos(':',portcom);j:=pos(',',portcom);
|
||||
val(copy(portcom,i+1,j-i),vitesse,l);
|
||||
ok:=false;
|
||||
Affiche('Erreur 14: le signal '+IntToSTR(adresse)+' se trouve dans la plage des accessoires DCC interdits (257-272)',clred);
|
||||
if (protocole=2) and (vitesse<>115200) then Affiche('La vitesse COM/USB en procotole DCC++ doit être de 115200 bauds',clred);
|
||||
|
||||
// si xpressnet, pas d'accesoires entre 257 à 272
|
||||
AdrOk:=True;
|
||||
|
||||
if Verif_AdrXpressNet=1 then
|
||||
begin
|
||||
for i:=1 to maxTablo_act do
|
||||
begin
|
||||
if Tablo_actionneur[i].act then
|
||||
begin
|
||||
for k:=1 to NDetecteurs do
|
||||
begin
|
||||
adr:=((adresse_detecteur[k]-1) div 2) +1; // transforme l'adresse du détecteur en accessoire (ex 513 devient 257
|
||||
|
||||
for i:=1 to maxaiguillage do
|
||||
if (adresse>=257) and (adresse<=272) then
|
||||
begin
|
||||
adresse:=aiguillage[i].Adresse ;
|
||||
if adresse=adr then
|
||||
begin
|
||||
AdrOk:=false;
|
||||
ok:=false;
|
||||
Affiche('Erreur 13: l''aiguillage '+IntToSTR(adresse)+' chevauche le détecteur '+intToSTR(adresse_detecteur[k]),clred);
|
||||
end;
|
||||
end;
|
||||
|
||||
for i:=1 to NbreFeux do
|
||||
begin
|
||||
adresse:=feux[i].Adresse;
|
||||
nc:=Nombre_adresses_signal(adresse);
|
||||
|
||||
if (adresse=adr) or ((adresse+nc-1>=adr) and (adresse+nc<=adr)) then
|
||||
begin
|
||||
dec:=feux[i].decodeur;
|
||||
AdrOk:=false;
|
||||
ok:=false;
|
||||
Affiche('Erreur 14: le signal '+IntToSTR(adresse)+' chevauche le détecteur '+intToStr(adresse_detecteur[k]),clred);
|
||||
Affiche('en Xpressnet car son décodeur '+decodeur[dec]+' occupe '+intToSTR(nc)+' adresses de '+intToSTR(adresse)+' à '+intToSTR(adresse+nc-1),clred);
|
||||
end;
|
||||
end;
|
||||
// actionneurs
|
||||
for i:=1 to maxTablo_act do
|
||||
begin
|
||||
if Tablo_actionneur[i].act then
|
||||
begin
|
||||
adresse:=Tablo_actionneur[i].accessoire;
|
||||
if (adresse=adr) then
|
||||
begin
|
||||
AdrOk:=false;
|
||||
ok:=false;
|
||||
Affiche('Erreur 15: l''actionneur '+IntToSTR(Tablo_actionneur[i].adresse)+' enclenche l''accessoire '+intToSTR(adresse),clred);
|
||||
Affiche('et chevauche le détecteur '+intToStr(adresse_detecteur[k])+' interdit en XpressNet',clred);
|
||||
end;
|
||||
@@ -13196,6 +13170,43 @@ procedure TFormConfig.EditPortServeurChange(Sender: TObject);
|
||||
var i,n,IndexListe : integer;
|
||||
trouve : boolean;
|
||||
Periph : Tperipherique;
|
||||
begin
|
||||
s : string;
|
||||
begin
|
||||
n:=ListBoxPeriph.Count;
|
||||
if n<=1 then exit;
|
||||
i:=0;
|
||||
repeat
|
||||
trouve:=ListBoxPeriph.Selected[i];
|
||||
inc(i);
|
||||
until (i=n) or trouve;
|
||||
if not(trouve) then exit;
|
||||
dec(i);
|
||||
if i=n-1 then exit;
|
||||
IndexListe:=i;
|
||||
LabelNumeroP.caption:='';
|
||||
|
||||
// inverse les deux entrées de la listebox
|
||||
s:=ListBoxPeriph.Items[i+1];
|
||||
ListBoxPeriph.Items[i+1]:=ListBoxPeriph.Items[i];
|
||||
ListBoxPeriph.Items[i]:=s;
|
||||
|
||||
inc(i);
|
||||
|
||||
// inverse les deux entrées des périphériques
|
||||
Periph:=Tablo_periph[i+1];
|
||||
Tablo_periph[i+1]:=Tablo_periph[i];
|
||||
Tablo_periph[i]:=Periph;
|
||||
|
||||
for i:=0 to n-1 do
|
||||
begin
|
||||
ListBoxPeriph.Selected[i]:=false;
|
||||
end;
|
||||
ListBoxPeriph.Selected[IndexListe+1]:=true;
|
||||
|
||||
ligneClicAccPeriph:=IndexListe+1;
|
||||
Aff_champs_accPeriph_tablo(indexListe+2);
|
||||
|
||||
// ancien1,ancien2,nouveau1,nouveau2
|
||||
reaffecte_index_combos(indexListe+1,IndexListe+2,IndexListe+2,IndexListe+1);
|
||||
fabrique_combos_periph;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user