This commit is contained in:
f1iwq2
2023-03-29 10:07:51 +02:00
parent 9da5aa677c
commit 325dcf308f
42 changed files with 3544 additions and 2010 deletions
+2 -2
View File
@@ -14,8 +14,8 @@
-$N+
-$O+
-$P+
-$Q-
-$R-
-$Q+
-$R+
-$S-
-$T-
-$U-
+2 -2
View File
@@ -17,8 +17,8 @@ M=0
N=1
O=1
P=1
Q=0
R=0
Q=1
R=1
S=0
T=0
U=0
BIN
View File
Binary file not shown.
+29 -29
View File
@@ -223,21 +223,12 @@ object FormCDF: TFormCDF
Height = 13
Caption = '1 '#224' 4'
end
object Button1: TButton
Left = 128
Top = 432
Width = 75
Height = 25
Caption = 'Ok'
TabOrder = 0
OnClick = Button1Click
end
object Edit1: TEdit
Left = 120
Top = 176
Width = 25
Height = 21
TabOrder = 1
TabOrder = 0
OnChange = Edit1Change
end
object Edit2: TEdit
@@ -245,7 +236,7 @@ object FormCDF: TFormCDF
Top = 200
Width = 25
Height = 21
TabOrder = 2
TabOrder = 1
OnChange = Edit2Change
end
object Edit3: TEdit
@@ -253,7 +244,7 @@ object FormCDF: TFormCDF
Top = 224
Width = 25
Height = 21
TabOrder = 3
TabOrder = 2
OnChange = Edit3Change
end
object Edit4: TEdit
@@ -261,7 +252,7 @@ object FormCDF: TFormCDF
Top = 248
Width = 25
Height = 21
TabOrder = 4
TabOrder = 3
OnChange = Edit4Change
end
object Edit5: TEdit
@@ -269,7 +260,7 @@ object FormCDF: TFormCDF
Top = 272
Width = 25
Height = 21
TabOrder = 5
TabOrder = 4
OnChange = Edit5Change
end
object Edit6: TEdit
@@ -277,7 +268,7 @@ object FormCDF: TFormCDF
Top = 296
Width = 25
Height = 21
TabOrder = 6
TabOrder = 5
OnChange = Edit6Change
end
object Edit7: TEdit
@@ -285,7 +276,7 @@ object FormCDF: TFormCDF
Top = 320
Width = 25
Height = 21
TabOrder = 7
TabOrder = 6
OnChange = Edit7Change
end
object Edit8: TEdit
@@ -293,7 +284,7 @@ object FormCDF: TFormCDF
Top = 344
Width = 25
Height = 21
TabOrder = 8
TabOrder = 7
OnChange = Edit8Change
end
object Edit9: TEdit
@@ -301,7 +292,7 @@ object FormCDF: TFormCDF
Top = 368
Width = 25
Height = 21
TabOrder = 9
TabOrder = 8
OnChange = Edit9Change
end
object Edit10: TEdit
@@ -309,7 +300,7 @@ object FormCDF: TFormCDF
Top = 392
Width = 25
Height = 21
TabOrder = 10
TabOrder = 9
OnChange = Edit10Change
end
object Edit11: TEdit
@@ -317,7 +308,7 @@ object FormCDF: TFormCDF
Top = 200
Width = 25
Height = 21
TabOrder = 11
TabOrder = 10
OnChange = Edit11Change
end
object Edit12: TEdit
@@ -325,7 +316,7 @@ object FormCDF: TFormCDF
Top = 224
Width = 25
Height = 21
TabOrder = 12
TabOrder = 11
OnChange = Edit12Change
end
object Edit13: TEdit
@@ -333,7 +324,7 @@ object FormCDF: TFormCDF
Top = 248
Width = 25
Height = 21
TabOrder = 13
TabOrder = 12
OnChange = Edit13Change
end
object Edit14: TEdit
@@ -341,7 +332,7 @@ object FormCDF: TFormCDF
Top = 272
Width = 25
Height = 21
TabOrder = 14
TabOrder = 13
OnChange = Edit14Change
end
object Edit15: TEdit
@@ -349,7 +340,7 @@ object FormCDF: TFormCDF
Top = 296
Width = 25
Height = 21
TabOrder = 15
TabOrder = 14
OnChange = Edit15Change
end
object Edit16: TEdit
@@ -357,7 +348,7 @@ object FormCDF: TFormCDF
Top = 320
Width = 25
Height = 21
TabOrder = 16
TabOrder = 15
OnChange = Edit16Change
end
object Edit17: TEdit
@@ -365,7 +356,7 @@ object FormCDF: TFormCDF
Top = 344
Width = 25
Height = 21
TabOrder = 17
TabOrder = 16
OnChange = Edit17Change
end
object Edit18: TEdit
@@ -373,7 +364,7 @@ object FormCDF: TFormCDF
Top = 368
Width = 25
Height = 21
TabOrder = 18
TabOrder = 17
OnChange = Edit18Change
end
object Edit19: TEdit
@@ -381,7 +372,7 @@ object FormCDF: TFormCDF
Top = 392
Width = 25
Height = 21
TabOrder = 19
TabOrder = 18
OnChange = Edit19Change
end
object EditNAdresses: TEdit
@@ -389,8 +380,17 @@ object FormCDF: TFormCDF
Top = 120
Width = 25
Height = 21
TabOrder = 20
TabOrder = 19
Text = '1'
OnChange = EditNAdressesChange
end
object BitBtnOk: TBitBtn
Left = 136
Top = 432
Width = 75
Height = 25
TabOrder = 20
OnClick = BitBtnOkClick
Kind = bkOK
end
end
+9 -7
View File
@@ -4,11 +4,10 @@ interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls , unitconfig, UnitPrinc;
Dialogs, StdCtrls, ExtCtrls , unitconfig, UnitPrinc, Buttons;
type
TFormCDF = class(TForm)
Button1: TButton;
Label20: TLabel;
Label1: TLabel;
Label2: TLabel;
@@ -56,7 +55,7 @@ type
EditNAdresses: TEdit;
LabelTitre: TLabel;
Label24: TLabel;
procedure Button1Click(Sender: TObject);
BitBtnOk: TBitBtn;
procedure FormActivate(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
@@ -78,6 +77,7 @@ type
procedure Edit19Change(Sender: TObject);
procedure Edit17Change(Sender: TObject);
procedure EditNAdressesChange(Sender: TObject);
procedure BitBtnOkClick(Sender: TObject);
private
{ Déclarations privées }
public
@@ -92,10 +92,7 @@ implementation
{$R *.dfm}
procedure TFormCDF.Button1Click(Sender: TObject);
begin
close;
end;
procedure TFormCDF.FormActivate(Sender: TObject);
var erreur : integer;
@@ -380,4 +377,9 @@ begin
end;
end;
procedure TFormCDF.BitBtnOkClick(Sender: TObject);
begin
close;
end;
end.
BIN
View File
Binary file not shown.
+37 -19
View File
@@ -2102,7 +2102,7 @@ object FormConfig: TFormConfig
Top = 200
Width = 297
Height = 73
Caption = 'Acc'#232's Ethernet '#224' l'#39'interface'
Caption = 'Acc'#232's Ethernet '#224' l'#39'interface vers la centrale'
TabOrder = 2
object Label7: TLabel
Left = 14
@@ -2382,7 +2382,7 @@ object FormConfig: TFormConfig
object LabelCrois: TLabel
Left = 32
Top = 320
Width = 193
Width = 187
Height = 26
Caption =
'Les croisements re'#231'oivent une adresse m'#234'me s'#39'ils ne sont pas pil' +
@@ -3793,8 +3793,8 @@ object FormConfig: TFormConfig
end
end
object GroupBoxRadio: TGroupBox
Left = 120
Top = 8
Left = 56
Top = 16
Width = 225
Height = 73
Caption = 'Type d'#39'action'
@@ -3828,8 +3828,8 @@ object FormConfig: TFormConfig
end
end
object GroupBoxAct: TGroupBox
Left = 120
Top = 44
Left = 64
Top = 60
Width = 233
Height = 341
Caption = 'Action fonction de locomotive '
@@ -4146,7 +4146,7 @@ object FormConfig: TFormConfig
Left = 0
Top = 32
Width = 345
Height = 185
Height = 225
Caption = 'Actionneurs/d'#233'tecteurs locomotives ou accessoires'
TabOrder = 1
object ButtonNouvAcc: TButton
@@ -4174,24 +4174,26 @@ object FormConfig: TFormConfig
Left = 8
Top = 48
Width = 329
Height = 129
Height = 161
Color = clBlack
Font.Charset = DEFAULT_CHARSET
Font.Color = clYellow
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
HideSelection = False
ParentFont = False
ReadOnly = True
ScrollBars = ssBoth
TabOrder = 2
WordWrap = False
OnKeyDown = RichActKeyDown
OnMouseDown = RichActMouseDown
end
end
object GroupBox17: TGroupBox
Left = 0
Top = 224
Top = 272
Width = 345
Height = 193
Caption = 'Actionneurs passage '#224' niveau'
@@ -4228,11 +4230,13 @@ object FormConfig: TFormConfig
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
HideSelection = False
ParentFont = False
ReadOnly = True
ScrollBars = ssBoth
TabOrder = 2
WordWrap = False
OnKeyDown = RichPNKeyDown
OnMouseDown = RichPNMouseDown
end
end
@@ -4607,9 +4611,11 @@ object FormConfig: TFormConfig
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
HideSelection = False
ParentFont = False
ReadOnly = True
TabOrder = 0
OnKeyDown = RichEditTrainsKeyDown
OnMouseDown = RichEditTrainsMouseDown
end
object GroupBox24: TGroupBox
@@ -4643,9 +4649,9 @@ object FormConfig: TFormConfig
object Label56: TLabel
Left = 16
Top = 72
Width = 115
Width = 215
Height = 13
Caption = 'Vitesse '#224' l'#39'avertissement'
Caption = 'Vitesse '#224' l'#39'avertissement ou au ralentissement'
end
object Label57: TLabel
Left = 16
@@ -4659,13 +4665,16 @@ object FormConfig: TFormConfig
Top = 24
Width = 145
Height = 21
Hint = 'Nom du train'
ParentShowHint = False
ShowHint = True
TabOrder = 0
OnChange = EditNomTrainChange
end
object EditAdresseTrain: TEdit
Left = 136
Left = 240
Top = 48
Width = 65
Width = 41
Height = 21
Hint = 'Adresse du d'#233'codeur du train'
ParentShowHint = False
@@ -4674,26 +4683,35 @@ object FormConfig: TFormConfig
OnChange = EditAdresseTrainChange
end
object EditVitesseMaxi: TEdit
Left = 136
Left = 240
Top = 120
Width = 65
Width = 41
Height = 21
Hint = 'Vitesse maximale autoris'#233'e par le d'#233'codeur'
ParentShowHint = False
ShowHint = True
TabOrder = 2
OnChange = EditVitesseMaxiChange
end
object EditVitRalenti: TEdit
Left = 136
Left = 240
Top = 72
Width = 65
Width = 41
Height = 21
Hint = 'Vitesse apr'#232's l'#39'avertissement'
ParentShowHint = False
ShowHint = True
TabOrder = 3
OnChange = EditVitRalentiChange
end
object EditVitNom: TEdit
Left = 136
Left = 240
Top = 96
Width = 65
Width = 41
Height = 21
Hint = 'Vitesse si voie libre'
ParentShowHint = False
ShowHint = True
TabOrder = 4
OnChange = EditVitNomChange
end
+683 -255
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.
+13 -12
View File
@@ -14,17 +14,9 @@ object FormConfCellTCO: TFormConfCellTCO
OldCreateOrder = False
OnActivate = FormActivate
OnCreate = FormCreate
OnKeyPress = FormKeyPress
PixelsPerInch = 96
TextHeight = 13
object ButtonOk: TButton
Left = 168
Top = 368
Width = 75
Height = 25
Caption = 'Ok'
TabOrder = 0
OnClick = ButtonOkClick
end
object GroupBox1: TGroupBox
Left = 8
Top = 264
@@ -37,7 +29,7 @@ object FormConfCellTCO: TFormConfCellTCO
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentFont = False
TabOrder = 1
TabOrder = 0
object Label1: TLabel
Left = 8
Top = 41
@@ -96,7 +88,7 @@ object FormConfCellTCO: TFormConfCellTCO
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentFont = False
TabOrder = 2
TabOrder = 1
object Label15: TLabel
Left = 8
Top = 22
@@ -297,7 +289,16 @@ object FormConfCellTCO: TFormConfCellTCO
ParentFont = False
ParentShowHint = False
ShowHint = True
TabOrder = 3
TabOrder = 2
OnClick = CheckPinvClick
end
object BitBtnOk: TBitBtn
Left = 152
Top = 368
Width = 75
Height = 25
TabOrder = 3
OnClick = BitBtnOkClick
Kind = bkOK
end
end
+22 -13
View File
@@ -4,11 +4,11 @@ interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, UnitTCO, ExtCtrls;
Dialogs, StdCtrls, UnitTCO, ExtCtrls,
Buttons;
type
TFormConfCellTCO = class(TForm)
ButtonOk: TButton;
GroupBox1: TGroupBox;
ComboRepr: TComboBox;
Label1: TLabel;
@@ -29,7 +29,7 @@ type
RadioButtonD: TRadioButton;
EditAdrElement: TEdit;
ButtonFond: TButton;
procedure ButtonOkClick(Sender: TObject);
BitBtnOk: TBitBtn;
procedure EditTypeImageKeyPress(Sender: TObject; var Key: Char);
procedure EditAdrElementChange(Sender: TObject);
procedure EditTexteCCTCOChange(Sender: TObject);
@@ -45,6 +45,8 @@ type
procedure EditAdrElementKeyPress(Sender: TObject; var Key: Char);
procedure ButtonFondClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure BitBtnOkClick(Sender: TObject);
private
{ Déclarations privées }
public
@@ -68,6 +70,7 @@ procedure actualise;
var Bimage : integer;
oriente,piedFeu : integer;
begin
if not(formConfCellTCOAff) then exit;
actualize:=true; // évite les évènements parasites
FormConfCellTCO.caption:='Propriétés de la cellule '+IntToSTR(XClicCell)+','+intToSTR(YClicCell);
Bimage:=TCO[XClicCell,YClicCell].Bimage;
@@ -118,7 +121,7 @@ begin
20: Assign(FormTCO.ImagePalette20.Picture);
21: Assign(FormTCO.ImagePalette21.Picture);
22: Assign(FormTCO.ImagePalette22.Picture);
23: Assign(FormTCO.ImagePalette23.Picture);
23,31: Assign(FormTCO.ImagePalette31.Picture);
30: begin
With formConfCellTCO.ImagePalette do
begin
@@ -194,10 +197,7 @@ begin
actualize:=false;
end;
procedure TFormConfCellTCO.ButtonOkClick(Sender: TObject);
begin
close;
end;
procedure TFormConfCellTCO.EditTypeImageKeyPress(Sender: TObject; var Key: Char);
var Bimage,erreur : integer;
@@ -207,7 +207,7 @@ begin
Key:=#0; // évite beeping
Val(EditTypeImage.Text,Bimage,erreur);
//Affiche('Keypressed / Bimage='+IntToSTR(bimage),clyellow);
if (erreur<>0) or not(Bimage in[0..23,30]) then
if (erreur<>0) or not(Bimage in[0..23,30,31]) then
begin
EditTypeImage.text:=intToSTR(tco[XClicCell,YClicCell].BImage);
exit;
@@ -279,6 +279,7 @@ var i,x,y : integer;
begin
// fenetre toujours dessus
actualize:=false;
formConfCellTCOAff:=true;
SetWindowPos(Handle,HWND_TOPMOST,0,0,0,0,SWP_NoMove or SWP_NoSize);
exit;
@@ -319,7 +320,7 @@ begin
20 : ImageSRC:=FormTCO.ImagePalette20;
21 : ImageSRC:=FormTCO.ImagePalette21;
22 : ImageSRC:=FormTCO.ImagePalette22;
23 : ImageSRC:=FormTCO.ImagePalette23;
23,31 : ImageSRC:=FormTCO.ImagePalette31;
24 : ImageSRC:=FormTCO.ImagePalette30;
end;
picture.Bitmap:=ImageSRC.picture.BitMap;
@@ -337,8 +338,6 @@ begin
end;
end;
procedure TFormConfCellTCO.ComboReprChange(Sender: TObject);
begin
tco[XClicCell,YClicCell].Repr:=comborepr.ItemIndex;
@@ -355,7 +354,7 @@ begin
if (xClicCell=0) or (xClicCell>NbreCellX) or (yClicCell=0) or (yClicCell>NbreCelly) then exit;
Bimage:=Tco[xClicCell,yClicCell].Bimage;
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
or (bimage=14) or (bimage=15) or (bimage=24) then
begin
TCO[xClicCell,yClicCell].inverse:=CheckPinv.checked;
TCO_modifie:=true;
@@ -423,4 +422,14 @@ begin
else ButtonFond.caption:='Couleur de fond de la cellule';
end;
procedure TFormConfCellTCO.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=chr(27) then close;
end;
procedure TFormConfCellTCO.BitBtnOkClick(Sender: TObject);
begin
close
end;
end.
BIN
View File
Binary file not shown.
+25 -26
View File
@@ -63,38 +63,29 @@ object FormConfigTCO: TFormConfigTCO
Height = 13
Caption = '/10'
end
object ButtonOK: TButton
Left = 216
Top = 240
Width = 75
Height = 25
Caption = 'OK'
TabOrder = 0
OnClick = ButtonOKClick
end
object ButtonDessine: TButton
Left = 16
Top = 240
Width = 75
Height = 25
Caption = 'Redessine'
TabOrder = 1
TabOrder = 0
OnClick = ButtonDessineClick
end
object CheckDessineGrille: TCheckBox
Left = 16
Top = 88
Top = 96
Width = 105
Height = 17
Caption = 'dessine grille'
TabOrder = 2
TabOrder = 1
end
object EditNbCellX: TEdit
Left = 184
Top = 40
Width = 49
Height = 21
TabOrder = 3
TabOrder = 2
Text = 'EditNbCellX'
end
object EditNbCellY: TEdit
@@ -102,7 +93,7 @@ object FormConfigTCO: TFormConfigTCO
Top = 64
Width = 49
Height = 21
TabOrder = 4
TabOrder = 3
Text = 'EditNbCellY'
end
object GroupBox1: TGroupBox
@@ -111,7 +102,7 @@ object FormConfigTCO: TFormConfigTCO
Width = 353
Height = 265
Caption = 'Couleurs '
TabOrder = 5
TabOrder = 4
object Label5: TLabel
Left = 21
Top = 32
@@ -134,9 +125,9 @@ object FormConfigTCO: TFormConfigTCO
OnClick = ImageFondClick
end
object Label6: TLabel
Left = 32
Left = 33
Top = 72
Width = 76
Width = 75
Height = 26
Alignment = taRightJustify
Caption = 'Couleur de fond par d'#233'faut'
@@ -247,26 +238,25 @@ object FormConfigTCO: TFormConfigTCO
Top = 208
Width = 281
Height = 17
Caption = 'Couleur du cantons activ'#233' par la couleur du train'
Caption = 'Couleur du canton activ'#233' par la couleur du train'
TabOrder = 0
end
end
object Memo1: TMemo
Left = 16
Top = 120
Top = 136
Width = 273
Height = 81
Height = 65
BevelInner = bvLowered
BevelKind = bkFlat
BorderStyle = bsNone
Lines.Strings = (
'Si vous d'#233'finissez un nombre de cellules en '
'horizontal ou en vertical plus petit(s) que l'#39'actuel'
'(s), alors le TCO sera tronqu'#233', et les '#233'l'#233'ments '
'tronqu'#233's seront perdus '#224' la prochaine '
'sauvegarde.')
'horizontal ou en vertical plus petit(s) que l'#39'actuel(s), '
'alors le TCO sera tronqu'#233', et les '#233'l'#233'ments tronqu'#233's '
'seront perdus '#224' la prochaine sauvegarde.')
ReadOnly = True
TabOrder = 6
TabOrder = 5
end
object EditRatio: TEdit
Left = 48
@@ -276,9 +266,18 @@ object FormConfigTCO: TFormConfigTCO
Hint = 'Rapport X/Y d'#39'affichage des cellules'
ParentShowHint = False
ShowHint = True
TabOrder = 7
TabOrder = 6
Text = 'EditRatio'
end
object BitBtnOk: TBitBtn
Left = 208
Top = 240
Width = 75
Height = 25
TabOrder = 7
OnClick = BitBtnOkClick
Kind = bkOK
end
object ColorDialog1: TColorDialog
OnShow = ColorDialog1Show
Left = 248
+64 -65
View File
@@ -4,11 +4,11 @@ interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls , UnitTCO, ExtCtrls, Menus;
Dialogs, StdCtrls , UnitTCO, ExtCtrls, Menus,
Buttons;
type
TFormConfigTCO = class(TForm)
ButtonOK: TButton;
Label3: TLabel;
Label4: TLabel;
ButtonDessine: TButton;
@@ -43,7 +43,7 @@ type
CheckCouleur: TCheckBox;
Label1: TLabel;
ImagePiedFeu: TImage;
procedure ButtonOKClick(Sender: TObject);
BitBtnOk: TBitBtn;
procedure ButtonDessineClick(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure ImageAigClick(Sender: TObject);
@@ -55,6 +55,7 @@ type
procedure ImageTexteClick(Sender: TObject);
procedure ImageQuaiClick(Sender: TObject);
procedure ImagePiedFeuClick(Sender: TObject);
procedure BitBtnOkClick(Sender: TObject);
private
{ Déclarations privées }
public
@@ -76,25 +77,24 @@ procedure icone_aig;
var r : Trect;
x1,y1,x2,y2,x3,y3,x4,y4 : integer;
begin
with FormConfigTCO.ImageAig do
begin
canvas.Pen.color:=clfond;
canvas.Brush.Color:=clfond;
canvas.Rectangle(0,0,Width,Height);
with FormConfigTCO.ImageAig do
begin
canvas.Pen.color:=clfond;
canvas.Brush.Color:=clfond;
canvas.Rectangle(0,0,Width,Height);
canvas.pen.color:=clVoies;
canvas.brush.color:=clvoies;
// bande horizontale
r:=Rect(0,(height div 2)-3,width,(height div 2)+3);
canvas.FillRect(r);
x1:=(width div 2); y1:=(height div 2)-3;
x2:=3; y2:=0;
x3:=0; y3:=3;
x4:=0+(width div 2)-1; y4:=(height div 2)+3-1;
canvas.Polygon([point(x1,y1),Point(x2,y2),Point(x3,y3),Point(x4,y4)]);
end;
canvas.pen.color:=clVoies;
canvas.brush.color:=clvoies;
// bande horizontale
r:=Rect(0,(height div 2)-3,width,(height div 2)+3);
canvas.FillRect(r);
x1:=(width div 2); y1:=(height div 2)-3;
x2:=3; y2:=0;
x3:=0; y3:=3;
x4:=0+(width div 2)-1; y4:=(height div 2)+3-1;
canvas.Polygon([point(x1,y1),Point(x2,y2),Point(x3,y3),Point(x4,y4)]);
end;
end;
procedure dessine_icones;
@@ -156,7 +156,7 @@ begin
canvas.FillRect(r);
end;
//6 texte
// 6 texte
with formCOnfigTCO.ImageTexte do
begin
canvas.Pen.color:=clfond;
@@ -167,7 +167,7 @@ begin
canvas.Textout(5,10,'Voie 1');
end;
//Quai
// Quai
with formconfigTCO.ImageQuai do
begin
canvas.Pen.color:=clfond;
@@ -260,48 +260,6 @@ begin
NbCellulesTCO:=NbreCellX*NbreCellY;
end;
procedure TFormConfigTCO.ButtonOKClick(Sender: TObject);
var ok : boolean;
begin
ok:=true;
if verif_config_TCO then
begin
with FormTCO.ImageTCO do
begin
Width:=LargeurCell*NbreCellX;
Height:=HauteurCell*NbreCellY;
end;
try
SetLength(TCO,NbreCellX+1,NbreCellY+1);
except
LabelErreur.caption:='TCO Mémoire insuffisante';
NbreCellX:=20;NbreCellY:=12;
SetLength(TCO,NbreCellX+1,NbreCellY+1);
ok:=false;
end;
try
SetLength(TamponTCO,NbreCellX+1,NbreCellY+1);
except
LabelErreur.caption:='TamponTCO Mémoire insuffisante';
NbreCellX:=20;NbreCellY:=12;
SetLength(TamponTCO,NbreCellX+1,NbreCellY+1);
ok:=false;
end;
AvecGrille:=checkDessineGrille.Checked;
if ok then
begin
calcul_cellules;
affiche_TCO;
LabelErreur.caption:='';
close;
end;
end;
end;
procedure TFormConfigTCO.ButtonDessineClick(Sender: TObject);
begin
@@ -434,9 +392,50 @@ end;
// change le titre de la fenêtre de choix des couleurs à son ouverture
procedure TFormConfigTCO.ColorDialog1Show(Sender: TObject);
begin
SetWindowText(ColorDialog1.Handle,pchar(titre_couleur));
SetWindowText(ColorDialog1.Handle,pchar(titre_couleur));
end;
procedure TFormConfigTCO.BitBtnOkClick(Sender: TObject);
var ok : boolean;
begin
ok:=true;
if verif_config_TCO then
begin
with FormTCO.ImageTCO do
begin
Width:=LargeurCell*NbreCellX;
Height:=HauteurCell*NbreCellY;
end;
try
SetLength(TCO,NbreCellX+1,NbreCellY+1);
except
LabelErreur.caption:='TCO Mémoire insuffisante';
NbreCellX:=20;NbreCellY:=12;
SetLength(TCO,NbreCellX+1,NbreCellY+1);
ok:=false;
end;
try
SetLength(TamponTCO,NbreCellX+1,NbreCellY+1);
except
LabelErreur.caption:='TamponTCO Mémoire insuffisante';
NbreCellX:=20;NbreCellY:=12;
SetLength(TamponTCO,NbreCellX+1,NbreCellY+1);
ok:=false;
end;
AvecGrille:=checkDessineGrille.Checked;
if ok then
begin
calcul_cellules;
affiche_TCO;
LabelErreur.caption:='';
close;
end;
end;
end;
end.
BIN
View File
Binary file not shown.
+22 -20
View File
@@ -3,8 +3,7 @@ object FormDebug: TFormDebug
Top = 21
Width = 864
Height = 788
VertScrollBar.Position = 28
VertScrollBar.Smooth = True
VertScrollBar.Increment = 67
VertScrollBar.Tracking = True
Caption = 'Fen'#234'tre de d'#233'bug'
Color = clWindow
@@ -21,13 +20,13 @@ object FormDebug: TFormDebug
OnCreate = FormCreate
OnKeyPress = FormKeyPress
DesignSize = (
839
757)
831
749)
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 595
Top = -24
Top = 4
Width = 108
Height = 13
Anchors = [akTop, akRight]
@@ -43,7 +42,7 @@ object FormDebug: TFormDebug
end
object Label2: TLabel
Left = 443
Top = -26
Top = 2
Width = 131
Height = 18
Anchors = [akTop, akRight]
@@ -57,7 +56,7 @@ object FormDebug: TFormDebug
end
object EditNivDebug: TEdit
Left = 754
Top = -26
Top = 2
Width = 49
Height = 21
Anchors = [akTop, akRight]
@@ -73,7 +72,7 @@ object FormDebug: TFormDebug
end
object ButtonEcrLog: TButton
Left = 442
Top = 300
Top = 328
Width = 97
Height = 29
Anchors = [akTop, akRight]
@@ -83,7 +82,7 @@ object FormDebug: TFormDebug
end
object ButtonRazTampon: TButton
Left = 442
Top = 332
Top = 360
Width = 97
Height = 33
Anchors = [akTop, akRight]
@@ -94,17 +93,20 @@ object FormDebug: TFormDebug
end
object ButtonCherche: TButton
Left = 442
Top = 268
Top = 296
Width = 97
Height = 25
Hint = 'Cherche la cha'#238'ne "erreur"'
Anchors = [akTop, akRight]
Caption = 'Chercher erreurs'
ParentShowHint = False
ShowHint = True
TabOrder = 3
OnClick = ButtonChercheClick
end
object ButtonAffEvtChrono: TButton
Left = 442
Top = 228
Top = 256
Width = 97
Height = 33
Anchors = [akTop, akRight]
@@ -115,7 +117,7 @@ object FormDebug: TFormDebug
end
object ButtonCop: TButton
Left = 442
Top = 180
Top = 208
Width = 97
Height = 41
Anchors = [akTop, akRight]
@@ -132,7 +134,7 @@ object FormDebug: TFormDebug
end
object ButtonRazLog: TButton
Left = 442
Top = 372
Top = 400
Width = 97
Height = 33
Anchors = [akTop, akRight]
@@ -143,7 +145,7 @@ object FormDebug: TFormDebug
end
object GroupBox1: TGroupBox
Left = 448
Top = 572
Top = 600
Width = 369
Height = 185
Anchors = [akTop, akRight]
@@ -291,7 +293,7 @@ object FormDebug: TFormDebug
end
object GroupBox2: TGroupBox
Left = 440
Top = -8
Top = 20
Width = 401
Height = 149
Anchors = [akTop, akRight]
@@ -483,7 +485,7 @@ object FormDebug: TFormDebug
end
object RichDebug: TRichEdit
Left = 8
Top = -20
Top = 8
Width = 425
Height = 741
Anchors = [akLeft, akTop, akRight, akBottom]
@@ -496,7 +498,7 @@ object FormDebug: TFormDebug
end
object GroupBox5: TGroupBox
Left = 448
Top = 460
Top = 488
Width = 372
Height = 57
Anchors = [akTop, akRight]
@@ -563,7 +565,7 @@ object FormDebug: TFormDebug
end
object ButtonRazTout: TButton
Left = 443
Top = 148
Top = 176
Width = 97
Height = 25
Hint =
@@ -578,7 +580,7 @@ object FormDebug: TFormDebug
end
object GroupBox6: TGroupBox
Left = 448
Top = 524
Top = 552
Width = 372
Height = 41
Anchors = [akTop, akRight]
@@ -655,7 +657,7 @@ object FormDebug: TFormDebug
end
object MemoEvtDet: TRichEdit
Left = 544
Top = 146
Top = 174
Width = 281
Height = 307
Anchors = [akTop, akRight]
+26 -15
View File
@@ -109,7 +109,7 @@ type
var
FormDebug: TFormDebug;
NivDebug,signalDebug : integer;
NivDebug,signalDebug,compt_erreur,positionErreur,LigneErreur : integer;
AffSignal,AffAffect,initform,AffFD,debug_dec_sig,debugTCO,DebugAffiche,AFfDetSIg : boolean;
N_event_det : integer; // index du dernier évènement (de 1 à 20)
N_Event_tick : integer ; // dernier index
@@ -183,6 +183,8 @@ begin
s:=DateToStr(date)+' '+TimeToStr(Time)+' ';
Autoscroll:=true; // permet l'affichage de l'ascenseur dans radstudio
DebugAffiche:=true;
compt_erreur:=0;
LigneErreur:=0;
end;
procedure TFormDebug.ButtonEcrLogClick(Sender: TObject);
@@ -240,28 +242,37 @@ begin
end;
procedure TFormDebug.ButtonChercheClick(Sender: TObject);
var ligne,l,position : integer;
var i,l,positionErreur : integer;
s : string;
trouve : boolean;
begin
// faire avec
with RichDebug do
begin
ligne:=0;
l:=0;
repeat
s:=lowercase(Lines[ligne]);
l:=l+length(s)+2;
position:=pos('erreur',s);
trouve:=position<>0;
inc(ligne);
until (ligne>=Lines.Count) or trouve;
s:=lowercase(Lines[ligneErreur]);
positionErreur:=pos('erreur',s);
trouve:=positionErreur<>0;
inc(LigneErreur);
until (LigneErreur>=Lines.Count) or trouve;
if trouve then
begin
//Affiche('trouvé en '+intToSTR(ligne),clyellow);
SelStart:= l-length(s)+position-3;
inc(compt_erreur);
//Affiche('trouvé en '+Lines[ligneErreur-1],clred);
l:=0;
for i:=0 to ligneErreur-1 do
begin
l:=l+length(Lines[i])+2;
end;
SelStart:= l-length(s)+positionErreur-3;
SelLength:=6;
SetFocus;
SetFocus; // afficher la sélection
Perform(EM_SCROLLCARET,0,0); // et scroller à l'endroit de la sélection
end
else
begin
LigneErreur:=0;
end;
end;
end;
@@ -380,7 +391,6 @@ begin
end;
procedure TFormDebug.ButtonCPClick(Sender: TObject);
var Adr,erreur,ancdebug,adrtrain,voie : integer ;
begin
@@ -447,12 +457,13 @@ end;
procedure TFormDebug.ButtonRazToutClick(Sender: TObject);
begin
AfficheDebug('Raz tous trains et routes',clLime);
Raz_tout;
end;
procedure TFormDebug.MemoEvtDet1Change(Sender: TObject);
begin
SendMessage(MemoEvtDet.handle, WM_VSCROLL, SB_BOTTOM, 0);
SendMessage(MemoEvtDet.handle,WM_VSCROLL,SB_BOTTOM,0);
end;
procedure TFormDebug.EditDebugSignalChange(Sender: TObject);
BIN
View File
Binary file not shown.
+14
View File
@@ -0,0 +1,14 @@
object Frame1: TFrame1
Left = 0
Top = 0
Width = 289
Height = 86
TabOrder = 0
object Label1: TLabel
Left = 104
Top = 16
Width = 60
Height = 13
Caption = 'Cadre Frame'
end
end
+22
View File
@@ -0,0 +1,22 @@
unit UnitFrame1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TFrame1 = class(TFrame)
Label1: TLabel;
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
implementation
{$R *.dfm}
end.
BIN
View File
Binary file not shown.
+9 -6
View File
@@ -61,9 +61,6 @@ type
{ Déclarations publiques }
end;
// définition des adresses normalisées du décodeur de leds de digitalBahn
// l'ordre des adresses est à respecter dans la programation des signaux.
// L'oeilleton est cablé sur la sortie 4, il est géré directement par le décodeur. **/
// code des aspects des signaux
const
@@ -258,14 +255,20 @@ if ord(Key) = VK_RETURN then
end;
procedure TFormPilote.FormActivate(Sender: TObject);
var i,d : integer;
var n,i,d : integer;
begin
// mise à jour du champ décodeur
i:=index_feu(AdrPilote);
d:=feux[i].decodeur;
n:=feux[i].aspect;
LabelDec.Caption:=decodeur[d];
// check
checkVerrouCarre.Checked:=feux[i].VerrouilleCarre;
// checkcarré
if (n<4) or (n>10) then checkVerrouCarre.Visible:=false else
begin
checkVerrouCarre.Visible:=true;
checkVerrouCarre.Checked:=feux[i].VerrouilleCarre;
end;
end;
procedure TFormPilote.CheckVerrouCarreClick(Sender: TObject);
BIN
View File
Binary file not shown.
+64 -54
View File
@@ -1,6 +1,6 @@
object FormPrinc: TFormPrinc
Left = 59
Top = 174
Left = 66
Top = 209
Width = 1213
Height = 670
Caption = 'Signaux complexes'
@@ -225,8 +225,8 @@ object FormPrinc: TFormPrinc
Visible = False
end
object Image7feux: TImage
Left = 504
Top = 8
Left = 144
Top = 0
Width = 57
Height = 105
Picture.Data = {
@@ -666,8 +666,8 @@ object FormPrinc: TFormPrinc
Visible = False
end
object Image2feux: TImage
Left = 896
Top = 88
Left = 904
Top = 136
Width = 33
Height = 57
Picture.Data = {
@@ -740,8 +740,8 @@ object FormPrinc: TFormPrinc
Visible = False
end
object Image2Dir: TImage
Left = 936
Top = 144
Left = 984
Top = 120
Width = 41
Height = 25
Picture.Data = {
@@ -815,8 +815,8 @@ object FormPrinc: TFormPrinc
Visible = False
end
object Image3Dir: TImage
Left = 840
Top = 136
Left = 968
Top = 168
Width = 49
Height = 25
Picture.Data = {
@@ -893,7 +893,7 @@ object FormPrinc: TFormPrinc
Visible = False
end
object Image4Dir: TImage
Left = 1064
Left = 1032
Top = 120
Width = 57
Height = 25
@@ -981,8 +981,8 @@ object FormPrinc: TFormPrinc
Visible = False
end
object Image5Dir: TImage
Left = 464
Top = 0
Left = 1096
Top = 120
Width = 65
Height = 25
Picture.Data = {
@@ -1079,8 +1079,8 @@ object FormPrinc: TFormPrinc
Visible = False
end
object Image6Dir: TImage
Left = 872
Top = 136
Left = 896
Top = 120
Width = 81
Height = 25
Picture.Data = {
@@ -1200,22 +1200,17 @@ object FormPrinc: TFormPrinc
Font.Style = []
ParentFont = False
end
object Splitter: TSplitter
object SplitterH: 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
Top = 200
Width = 546
Height = 399
HorzScrollBar.Smooth = True
Height = 391
HorzScrollBar.Increment = 48
HorzScrollBar.Tracking = True
VertScrollBar.Smooth = True
VertScrollBar.Tracking = True
@@ -1291,20 +1286,20 @@ object FormPrinc: TFormPrinc
end
object Panel1: TPanel
Left = 904
Top = 5
Top = 13
Width = 282
Height = 108
Anchors = [akTop, akRight]
TabOrder = 4
object Label1: TLabel
Left = 136
Left = 56
Top = 88
Width = 89
Height = 13
Caption = 'Nombre de trains : '
end
object LabelNbTrains: TLabel
Left = 256
Left = 240
Top = 84
Width = 9
Height = 19
@@ -1391,27 +1386,6 @@ object FormPrinc: TFormPrinc
Caption = 'xx'
TabOrder = 5
end
object FenRich: TRichEdit
Left = 8
Top = 32
Width = 601
Height = 513
Anchors = [akLeft, akTop, akRight, akBottom]
Color = clBlack
Font.Charset = DEFAULT_CHARSET
Font.Color = clYellow
Font.Height = -13
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentFont = False
PopupMenu = PopupMenuFenRich
ReadOnly = True
ScrollBars = ssBoth
TabOrder = 6
WordWrap = False
OnChange = FenRichChange
OnMouseDown = FenRichMouseDown
end
object GroupBox2: TGroupBox
Left = 633
Top = 64
@@ -1419,7 +1393,7 @@ object FormPrinc: TFormPrinc
Height = 105
Anchors = [akTop, akRight]
Caption = 'Variables CV'
TabOrder = 7
TabOrder = 6
object Label3: TLabel
Left = 208
Top = 34
@@ -1481,7 +1455,7 @@ object FormPrinc: TFormPrinc
Height = 129
Anchors = [akTop, akRight]
Caption = 'Commande aux trains'
TabOrder = 8
TabOrder = 7
object Label4: TLabel
Left = 8
Top = 22
@@ -1698,7 +1672,7 @@ object FormPrinc: TFormPrinc
TabOrder = 5
end
object TrackBarVit: TTrackBar
Left = 16
Left = 24
Top = 64
Width = 233
Height = 21
@@ -1717,7 +1691,7 @@ object FormPrinc: TFormPrinc
Height = 33
Anchors = [akTop, akRight]
Caption = 'Envoi vers centrale DCC++'
TabOrder = 9
TabOrder = 8
WordWrap = True
OnClick = ButtonEnvClick
end
@@ -1727,7 +1701,7 @@ object FormPrinc: TFormPrinc
Width = 121
Height = 21
Anchors = [akTop, akRight]
TabOrder = 10
TabOrder = 9
Text = '<1>'
end
object Button1: TButton
@@ -1737,10 +1711,45 @@ object FormPrinc: TFormPrinc
Height = 25
Anchors = [akTop, akRight]
Caption = 'Button1'
TabOrder = 11
TabOrder = 10
Visible = False
OnClick = Button1Click
end
object Panel2: TPanel
Left = 8
Top = 32
Width = 609
Height = 497
TabOrder = 11
object SplitterV: TSplitter
Left = 1
Top = 1
Width = 8
Height = 495
Beveled = True
OnMoved = SplitterVMoved
end
object FenRich: TRichEdit
Left = 8
Top = 16
Width = 593
Height = 505
Color = clBlack
Font.Charset = DEFAULT_CHARSET
Font.Color = clYellow
Font.Height = -13
Font.Name = 'MS Sans Serif'
Font.Style = []
ParentFont = False
PopupMenu = PopupMenuFenRich
ReadOnly = True
ScrollBars = ssBoth
TabOrder = 0
WordWrap = False
OnChange = FenRichChange
OnMouseDown = FenRichMouseDown
end
end
object Timer1: TTimer
Interval = 100
OnTimer = Timer1Timer
@@ -1959,6 +1968,7 @@ object FormPrinc: TFormPrinc
end
end
object PopupMenuFeu: TPopupMenu
OnPopup = PopupMenuFeuPopup
Left = 896
object Proprits1: TMenuItem
Caption = 'Propri'#233't'#233's du signal'
+282 -120
View File
@@ -13,7 +13,7 @@ Unit UnitPrinc;
+ 2 = aiguillage droit = sortie 2 de l'adresse d'accessoire
- 1 = aiguillage dévié = sortie 1 de l'adresse d'accessoire
port com lenz=57600
vitesse port com lenz=57600
*)
// en mode simulation run:
@@ -44,7 +44,7 @@ uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, OleCtrls, ExtCtrls, jpeg, ComCtrls, ShellAPI, TlHelp32,
ImgList, ScktComp, StrUtils, Menus, ActnList, MSCommLib_TLB, MMSystem , registry,
Buttons ;
Buttons;
type
TFormPrinc = class(TForm)
@@ -105,7 +105,6 @@ type
ButtonLanceCDM: TButton;
Affichefentredebug1: TMenuItem;
StaticText: TStaticText;
FenRich: TRichEdit;
PopupMenuFenRich: TPopupMenu;
Copier1: TMenuItem;
Etatdessignaux1: TMenuItem;
@@ -157,7 +156,10 @@ type
SBMarcheArretLoco: TSpeedButton;
Label1: TLabel;
LabelNbTrains: TLabel;
Splitter: TSplitter;
SplitterH: TSplitter;
Panel2: TPanel;
FenRich: TRichEdit;
SplitterV: TSplitter;
procedure FormCreate(Sender: TObject);
procedure MSCommUSBLenzComm(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
@@ -234,13 +236,15 @@ type
procedure RazResaClick(Sender: TObject);
procedure SBMarcheArretLocoClick(Sender: TObject);
procedure EditAdrTrainChange(Sender: TObject);
procedure SplitterMoved(Sender: TObject);
private
procedure SplitterVMoved(Sender: TObject);
procedure PopupMenuFeuPopup(Sender: TObject);
private
{ Déclarations privées }
procedure DoHint(Sender : Tobject);
public
{ Déclarations publiques }
Procedure ImageOnClick(Sender : TObject);
procedure ProcOnMouseDown(Sender: TObject;Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure proc_checkBoxFB(Sender : Tobject);
procedure proc_checkBoxFV(Sender : Tobject);
procedure proc_checkBoxFR(Sender : Tobject);
@@ -389,16 +393,18 @@ var
NombreImages,signalCpx,branche_trouve,Indexbranche_trouve,Actuel,Signal_suivant,
Nbre_recu_cdm,Tempo_chgt_feux,Adj1,Adj2,NbrePN,ServeurInterfaceCDM,index_couleur,
ServeurRetroCDM,TailleFonte,Nb_Det_Dist,Tdoubleclic,algo_Unisemaf,fA,fB,
etape,idEl,avecRoulage,intervalle_courant,filtrageDet0,SauvefiltrageDet0 : integer;
etape,idEl,avecRoulage,intervalle_courant,filtrageDet0,SauvefiltrageDet0,
TpsTimeoutSL : integer;
ack,portCommOuvert,traceTrames,AffMem,CDM_connecte,dupliqueEvt,affiche_retour_dcc,
Raz_Acc_signaux,AvecInit,AvecTCO,terminal,Srvc_Aig,Srvc_Det,Srvc_Act,MasqueBandeauTCO,
Srvc_PosTrain,Srvc_Sig,debugtrames,LayParParam,AvecFVR,InverseMotif,
Hors_tension,traceSign,TraceZone,Ferme,parSocketLenz,ackCdm,PremierFD,doubleclic,
NackCDM,MsgSim,StopSimu,succes,recu_cv,AffAigDet,Option_demarrage,AffTiers,AvecDemandeAiguillages,
NackCDM,MsgSim,StopSimu,succes,recu_cv,AffAigDet,AffTiers,AvecDemandeAiguillages,
TraceListe,clignotant,nack,Maj_feux_cours,configNulle,LanceCDM,AvecInitAiguillages,
AvecDemandeInterfaceUSB,AvecDemandeInterfaceEth,aff_acc,affiche_aigdcc,modeStkRetro,
retEtatDet,roulage,init_aig_cours,affevt,placeAffiche,clicComboTrain,clicAdrTrain : boolean;
retEtatDet,roulage,init_aig_cours,affevt,placeAffiche,clicComboTrain,clicAdrTrain,
avec_splitter : boolean;
tick,Premier_tick : longint;
@@ -465,7 +471,7 @@ var
,AdrTrain : integer;
end;
Tablo_actionneur : array[1..Max_actionneurs] of
Tablo_actionneur : array[0..Max_actionneurs] of
record
loco,act,son: boolean; // destinataire loco acessoire ou son
adresse,adresse2, // adresse: adresse de base ; adresse2=cas d'une Zone
@@ -478,7 +484,7 @@ var
end;
KeyInputs: array of TInput;
Tablo_PN : array[1..Max_actionneurs] of
Tablo_PN : array[0..Max_actionneurs] of
record
AdresseFerme : integer; // adresse de pilotage DCC pour la fermeture
commandeFerme : integer; // commande de fermeture (1 ou 2)
@@ -486,10 +492,10 @@ var
commandeOuvre : integer; // commande d'ouverture (1 ou 2)
NbVoies : integer; // Nombre de voies du PN
Pulse : integer; // 0=commande maintenue 1=Impulsionnel
compteur : integer; // comptage actionneurs fermeture et décomptage actionneurs ouverturef
Voie : array [1..4] of record
ActFerme,ActOuvre : integer ; // actionneurs provoquant la fermeture et l'ouverture
detZ1F,detZ2F,detZ1O,detZ2O : integer; // Zones de détection
PresTrain : boolean; // mémoire de présence de train sur la voie
end;
end;
@@ -606,8 +612,9 @@ procedure Maj_Feux(detect : boolean);
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 det_suiv_cont(det1,det2,alg : integer) : integer;
function BTypeToChaine(BT : TEquipement) : string;
function testBit(n : word;position : integer) : boolean;
implementation
@@ -741,7 +748,8 @@ begin
with Acanvas do
begin
brush.Color:=couleur;
Pen.Color:=clBlack;
pen.Color:=clBlack;
pen.Width:=1;
Ellipse(x-rayon,y-rayon,x+rayon,y+rayon);
end;
end;
@@ -1172,6 +1180,7 @@ var rayon,x1,x2,x3,y1,y2,y3,x4,y4,x5,y5,x6,y6,LgImage,HtImage,temp : integer;
ech : real;
begin
if (n<2) or (n>6) then n:=2;
if (orientation<1) or (orientation>3) then orientation:=1;
rayon:=round(6*frX);
if n=2 then x2:=25 else x2:=22;
x1:=11;x3:=33;x4:=43;x5:=53;x6:=63;
@@ -1417,7 +1426,25 @@ begin
end;
end;
// procédure activée quand on clique gauche sur l'image d'un feu
// procédure activée si on clique G ou D sur une image d'un signal
procedure TFormPrinc.ProcOnMouseDown(Sender: TObject;Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var s : string;
P_image_pilote : Timage;
i,erreur : integer;
begin
if button=mbRight then
begin
P_image_pilote:=Sender as TImage; // récupérer l'objet image du feu qu'on a cliqué de la forme pilote
s:=P_Image_pilote.Hint; // récupérer son hint qui contient l'adresse du feu cliqué
i:=pos('@',s); if i<>0 then delete(s,1,i);
i:=pos('=',s); if i<>0 then delete(s,i,1);
i:=pos(' ',s);
if i<>0 then s:=copy(s,1,i-1);
val(s,AdrPilote,erreur);
end;
end;
// procédure activée quand on clique gauche sur l'image d'un signal
Procedure TFormprinc.ImageOnClick(Sender : Tobject);
var s : string;
P_image_pilote : Timage;
@@ -1480,6 +1507,7 @@ begin
14 : Bm:=Formprinc.Image4Dir.picture.Bitmap;
15 : Bm:=Formprinc.Image5Dir.picture.Bitmap;
16 : Bm:=Formprinc.Image6Dir.picture.Bitmap;
else Bm:=nil;
end;
Select_dessin_feu:=bm;
end;
@@ -1500,6 +1528,8 @@ begin
begin
if debug=1 then affiche('Image '+intToSTR(rang)+' créée',clLime);
//canvas.Create;
Autosize:=true;
align:=alNone;
Parent:=Formprinc.ScrollBox1; // dire que l'image est dans la scrollBox1
//formprinc.ScrollBox1.Color:=ClGreen;
Name:='ImageFeu'+IntToSTR(adresse); // nom de l'image - sert à identifier le composant si on fait clic droit.
@@ -1515,10 +1545,16 @@ begin
Hint:=s;
onClick:=Formprinc.Imageonclick; // affectation procédure clique sur image
onMouseDown:=Formprinc.ProcOnMouseDown;
PopUpMenu:=Formprinc.PopupMenuFeu; // affectation popupmenu sur clic droit
// affecter le type d'image de feu dans l'image créée
T_BP:=Select_dessin_feu(TypeFeu);
if T_BP=nil then
begin
Affiche('Erreur 418 : sélection type signal incorrecte pour signal '+intToSTR(adresse),clred);
exit;
end;
picture.Bitmap:=T_Bp;
picture.BitMap.TransparentMode:=tmfixed; // tmauto (la couleur transparente est déterminée par pixel le plus en haut à gauche du bitmap)
@@ -3489,11 +3525,12 @@ begin
7 : envoi_SR(Adr);
end;
// Gestion démarrage temporisé des trains si on quitte le rouge : ne fonctionne qu'avec CDM rail connecté ou roulage
if (Option_demarrage and cdm_connecte) or roulage then
// Gestion démarrage temporisé des trains si on quitte le rouge : ne fonctionne qu'en roulage
if roulage then
begin
a:=feux[i].AncienEtat;
b:=feux[i].EtatSignal;
// si l'ancien état était au rouge/violet et on quitte le rouge/violet
if ((a=semaphore_F) or (a=carre_F) or (a=violet_F)) and ((b<>semaphore_F) and (b<>carre_F) and (b<>violet_F)) then
begin
// y a t il un train en face du signal
@@ -3783,7 +3820,7 @@ end;
// bits1 et 2: (2+4)=6= arret sur aiguillage en talon mal positionnée ou aiguillage réservé
// bit3 (8)=arret sur un aiguillage pris en pointe dévié et AdrDevie contient l'adresse de l'aiguillage dévié ainsi que typeGen
// code de sortie : élément suivant ou:
// 9999: erreur fatale ou itération trop longue
// 9999: erreur fatale: élément non trouvé ou itération trop longue
// 9998: arret sur aiguillage en talon mal positionnée
// 9997: arrêt sur aiguillage dévié
// 9996: arrêt sur position inconnue d'aiguillage
@@ -4764,6 +4801,7 @@ end;
// renvoie l'élément avant det2 si det1 et det2 sont contigus ou ne sont séparés que par des aiguillages
// si det1 et det2 sont contigus sans aiguillages entre eux, çà renvoie det1 sinon renvoie l'aiguillage entre les 2
// s'ils ne sont pas contigus, renvoie 0
// Si un élément est inconnu, renvoie 9999
// det_contigu(527,520: renvoie 7 dans suivant
// det_contigu(514,522: renvoie 514 dans suivant
// det_contigu(517,524: renvoie 30
@@ -4971,6 +5009,7 @@ begin
begin
if NivDebug=3 then AfficheDebug('Element '+intToSTR(det1)+' non trouvé',clred);
if debug=3 then formprinc.Caption:='';
suivant:=9999;
exit;
end;
indexBranche_det1:=IndexBranche_trouve;
@@ -4981,8 +5020,9 @@ begin
trouve_element(det2,tp,1); // branche_trouve IndexBranche_trouve
if IndexBranche_trouve=0 then
begin
if NivDebug=3 then AfficheDebug('Element '+intToSTR(actuel)+' non trouvé',clred);
if NivDebug=3 then AfficheDebug('Element '+intToSTR(det2)+' non trouvé',clred);
if debug=3 then formprinc.Caption:='';
suivant:=9999;
exit;
end;
@@ -5066,16 +5106,16 @@ end;
// les aiguillages n'ont pas besoin d'être positionnés entre 1 et 2.
// par contre pour le suivant au det2, les aiguillages doivent être positionnés
// si on ne trouve pas le suivant, renvoie 9999
function det_suiv_cont(det1,det2 : integer) : integer;
function det_suiv_cont(det1,det2,alg : integer) : integer;
var dernier: integer;
derniertyp : Tequipement;
begin
// si un aiguilage est entre det1 et det2 renvoie l'aig, sinon renvoie det1 si det1 et det2 sont contigus
det_contigu(det1,det2,dernier,dernierTyp);
if dernier<>0 then
if (dernier<>0) and (dernier<>9999) then
begin
// détecteur suivant
det_suiv_cont:=detecteur_suivant(dernier,dernierTyp,det2,det,1);
det_suiv_cont:=detecteur_suivant(dernier,dernierTyp,det2,det,alg);
//Affiche(intToSTR(suivant),clorange);
end
else det_suiv_cont:=9999;
@@ -5286,6 +5326,7 @@ end;
// renvoie le nombre de croisements entre les détecteurs el1 et el2
// jamais utilisée !
function Test_croisement(el1,el2,alg: integer) : integer ;
var IndexBranche_det1,IndexBranche_det2,branche_trouve_det1,branche_trouve_det2,i,
j,AdrPrec,Adr,AdrFonc,i1,N_det : integer;
@@ -5364,7 +5405,7 @@ begin
begin
Adr:=9999;
end;
//AfficheDebug('Sortie Alg3: '+IntToSTR(Adr)+'/'+intToSTR(typeGen),clyellow);
if TypeGen=det then inc(N_Det);
if NivDebug=3 then
@@ -5789,8 +5830,8 @@ begin
if (NivDebug=3) and (adrFeu=0) then AfficheDebug('Pas Trouvé de signal suivant au signal Adr='+IntToSTR(det1),clOrange);
end;
// renvoie l'état du signal suivant. Si renvoie 0, pas trouvé le signal suivant.
// adresse : adresse du feu
// renvoie l'état du signal suivant du signal "adresse". Si renvoie 0, pas trouvé le signal suivant.
// adresse : adresse du signal
// rang=1 pour feu suivant, 2 pour feu suivant le 1, etc
// retour dans AdrSignalsuivant : adresse du feu suivant
// stocke les éléments trouvés dans Elements
@@ -5961,7 +6002,7 @@ begin
exit;
end;
// renvoie l'adresse de l'aiguille si elle est déviée après le signal et ce jusqu'au prochain signal
// renvoie l'adresse de la première aiguille déviée après le signal "adresse" et ce jusqu'au prochain signal
// sinon renvoie 0
// adresse=adresse du signal
function Aiguille_deviee(adresse : integer) : integer ;
@@ -6075,7 +6116,7 @@ begin
end;
// renvoie vrai si une mémoire de zone est occupée après le signal courant au signal suivant
// renvoie vrai si une mémoire de zone est occupée après le signal "adresse" jusqu'au signal suivant
// sort de suite si on trouve un train
// adresse=adresse du signal
function test_memoire_zones(adresse : integer) : boolean;
@@ -6103,7 +6144,7 @@ begin
ife:=1; // index feu de 1 à 4 pour explorer les 4 détecteurs d'un feu
repeat
Nfeux:=0;
if NivDebug=3 then AfficheDebug('Boucle de test feu '+intToSTR(ife)+'/4',clOrange);
if NivDebug=3 then AfficheDebug('Boucle de test signal '+intToSTR(ife)+'/4',clOrange);
if (ife=1) then
begin
prec:=feux[i].Adr_det1;
@@ -6626,7 +6667,7 @@ end;
// AdrFeu: adresse du signal
// detect: si true, tient compte de la présence des trains par détecteurs dans la fonction signalPrec
procedure Maj_Feu(Adrfeu : integer;detect : boolean);
var Adr_det,etat,Aig,Adr_El_Suiv,modele,index,IndexAig,trainreserve,AdrTrainLoc,voie : integer ;
var Adr_det,etat,Aig,Adr_El_Suiv,modele,index,IndexAig,AdrTrainLoc,voie : integer ;
PresTrain,Aff_semaphore,car,reserveTrainTiers : boolean;
code,combine,AdrSignalsuivant : integer;
Btype_el_suivant : TEquipement;
@@ -6711,6 +6752,7 @@ 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 reserveTrainTiers then AfficheDebug('trouvé aiguillage réservé par autre train',clYellow);
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;
@@ -6720,7 +6762,8 @@ begin
//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 and feux[index].VerrouilleCarre) ) then Maj_Etat_Signal(AdrFeu,carre)
if (modele>=4) and Feux[index].VerrouCarre and
( (not(PresTrain) or car or 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
@@ -6835,6 +6878,8 @@ begin
if debug=3 then formprinc.Caption:='';
end;
// mise à jour des signaux
// detect: si true, tient compte de la présence des trains sur les détecteurs dans la fonction signalPrec
Procedure Maj_feux(detect : boolean);
var i : integer;
begin
@@ -7134,7 +7179,7 @@ begin
if TraceListe or (NivDebug=3) then AfficheDebug('2-0 traitement Train n°'+intToSTR(i)+' 2 détecteurs',couleur);
// test si det1, det2 et det3 sont contigus malgré aig mal positionnés
det_suiv:=det_suiv_cont(det1,det2); // test si le suivant de det1 à det2 est bien le nouveau détecteur (det3)
det_suiv:=det_suiv_cont(det1,det2,1); // test si le suivant de det1 à det2 est bien le nouveau détecteur (det3)
if traceliste then affichedebug('Le suivant aux '+intToSTR(det1)+' '+intToSTR(det2)+' est '+intToSTR(det_suiv),couleur);
SuivOk:=det_suiv=det3;
CasAig:=false;
@@ -7541,7 +7586,7 @@ begin
MemZone[det3,det1].etat:=False; // on dévalide la zone inverse
// test si on peut réserver le canton suivant
det_suiv:=det_suiv_cont(det1,det3);
det_suiv:=det_suiv_cont(det1,det3,1);
if det_suiv<9990 then reserve_canton(det3,det_suiv,AdrTrainLoc);
s:='route ok de '+intToSTR(det1)+' à '+IntToSTR(det3)+' pour train '+intToSTR(i);
Affiche_Evt(s,clWhite);
@@ -7580,7 +7625,7 @@ begin
begin
if TraceListe or (NivDebug=3) then AfficheDebug('2-0 traitement Train n°'+intToSTR(i)+' 2 détecteurs',couleur);
// test si det1, det2 et det3 sont contigus malgré aig mal positionnés
det_suiv:=det_suiv_cont(det1,det2); // test si le suivant de det1 à det2 est bien le nouveau détecteur (det3)
det_suiv:=det_suiv_cont(det1,det2,1); // test si le suivant de det1 à det2 est bien le nouveau détecteur (det3)
if traceliste then affichedebug('Le suivant aux '+intToSTR(det1)+' '+intToSTR(det2)+' est '+intToSTR(det_suiv),couleur);
SuivOk:=det_suiv=det3;
CasAig:=false;
@@ -7779,9 +7824,9 @@ begin
if (nbre=2) and etat then
begin
if TraceListe or (NivDebug=3) then AfficheDebug('2-1 traitement Train n°'+intToSTR(i)+' 2 détecteurs',clwhite);
if TraceListe or (NivDebug=3) then AfficheDebug('2-1 traitement Train n°'+intToSTR(i)+' 2 détecteurs',couleur);
// front descendant sur détecteur 2
det_suiv:=det_suiv_cont(det1,det2); // test si le suivant de det1 à det2 est bien le nouveau détecteur (det3)
det_suiv:=det_suiv_cont(det1,det2,1); // test si le suivant de det1 à det2 est bien le nouveau détecteur (det3)
if traceliste then affichedebug('Le suivant aux '+intToSTR(det1)+' '+intToSTR(det2)+' est '+intToSTR(det_suiv),clWhite);
if (det_suiv=det3) then
begin
@@ -7809,7 +7854,7 @@ begin
pilote_train(det2,det3,adrtrainLoc,i); // pilote le train sur det3
// test si on peut réserver le canton suivant
det_suiv:=det_suiv_cont(det2,det3);
det_suiv:=det_suiv_cont(det2,det3,1);
if det_suiv<9990 then reserve_canton(det3,det_suiv,AdrTrainLoc);
// libère canton
libere_canton(det2,det3);
@@ -7907,7 +7952,7 @@ begin
pilote_train(i2,det3,adrtrainLoc,i); // pilote le train sur det3
// test si on peut réserver le canton suivant
det_suiv:=det_suiv_cont(i2,det3);
det_suiv:=det_suiv_cont(i2,det3,1);
if det_suiv<9990 then reserve_canton(det3,det_suiv,AdrTrainLoc);
// libère canton
libere_canton(i2,det3);
@@ -8220,7 +8265,7 @@ begin
MemZone[det3,det1].etat:=False; // on dévalide la zone inverse
// test si on peut réserver le canton suivant
det_suiv:=det_suiv_cont(det1,det3);
det_suiv:=det_suiv_cont(det1,det3,1);
if det_suiv<9990 then reserve_canton(det3,det_suiv,AdrTrainLoc);
s:='route ok de '+intToSTR(det1)+' à '+IntToSTR(det3)+' pour train '+intToSTR(i);
Affiche_Evt(s,clWhite);
@@ -8281,7 +8326,7 @@ begin
if TraceListe then AfficheDebug('Route est valide, dét '+intToSTR(det2)+' '+intToSTR(det3)+' contigus',couleur);
// ici on cherche le suivant à det2 det3, algo=1
event_det_tick[N_event_tick].train:=i;
Adrsuiv:=det_suiv_cont(det1,det2);
Adrsuiv:=det_suiv_cont(det1,det2,1);
//if not(casAig) then AdrSuiv:=detecteur_suivant_el(det2,det,det3,det,0); // dans le cas de CasAig, alors adrSuiv=9996 donc AdrSuiv est calculé plus haut
event_det_train[i].suivant:=AdrSuiv;
if TraceListe then AfficheDebug('le sursuivant est '+intToSTR(adrsuiv),couleur);
@@ -8446,7 +8491,7 @@ begin
begin
if TraceListe or (NivDebug=3) then AfficheDebug('2-1 traitement Train n°'+intToSTR(i)+' 2 détecteurs',clwhite);
// front descendant sur détecteur 2
det_suiv:=det_suiv_cont(det1,det2); // test si le suivant de det1 à det2 est bien le nouveau détecteur (det3)
det_suiv:=det_suiv_cont(det1,det2,1); // test si le suivant de det1 à det2 est bien le nouveau détecteur (det3)
if traceliste then affichedebug('Le suivant aux '+intToSTR(det1)+' '+intToSTR(det2)+' est '+intToSTR(det_suiv),clWhite);
if (det_suiv=det3) then
begin
@@ -8486,7 +8531,7 @@ begin
pilote_train(det2,det3,adrtrainLoc,i); // pilote le train sur det3
// test si on peut réserver le canton suivant
det_suiv:=det_suiv_cont(det2,det3);
det_suiv:=det_suiv_cont(det2,det3,1);
if det_suiv<9990 then reserve_canton(det3,det_suiv,AdrTrainLoc);
// libère canton
libere_canton(det2,det3);
@@ -8679,6 +8724,7 @@ begin
end;
// affecte le détecteur "adresse" au train et met sa route à jour
procedure calcul_zones(adresse: integer;front : boolean);
begin
if debug=3 then formprinc.Caption:='Calcul_zones '+intToSTR(adresse);
@@ -8892,35 +8938,32 @@ begin
if (aO=adr) and (etat=0) then // actionneur d'ouverture
begin
Tablo_PN[i].voie[v].PresTrain:=false;
// vérifier les présences train sur les autres voies du PN
presTrain_PN:=false;
for va:=1 to Tablo_PN[i].nbvoies do
begin
presTrain_PN:=presTrain_PN or Tablo_PN[i].voie[va].PresTrain;
end;
if not(presTrain_PN) then
if tablo_pn[i].compteur=1 then // compteur du nombre de trains sur le PN
begin
Affiche('Ouverture PN'+intToSTR(i)+' par act '+intToSTr(adr)+' (train voie '+IntToSTR(v)+')',clOrange);
if Tablo_PN[i].pulse=1 then ts:=aigP else ts:=feu;
pilote_acc(Tablo_PN[i].AdresseOuvre,Tablo_PN[i].CommandeOuvre,ts);
end;
if tablo_pn[i].compteur>0 then dec(tablo_pn[i].compteur);
end;
if (aF=adr) and (etat=1) then // actionneur de fermeture
begin
Tablo_PN[i].voie[v].PresTrain:=true;
s:='Fermeture PN'+IntToSTR(i)+' par act '+intToSTr(adr)+' (train voie '+IntToSTR(v)+')';
Affiche(s,clOrange);
if Tablo_PN[i].pulse=1 then ts:=aigP else ts:=feu;
pilote_acc(Tablo_PN[i].AdresseFerme,Tablo_PN[i].CommandeFerme,ts);
inc(tablo_pn[i].compteur);
if tablo_pn[i].compteur=1 then
begin
s:='Fermeture PN'+IntToSTR(i)+' par act '+intToSTr(adr)+' (train voie '+IntToSTR(v)+')';
Affiche(s,clOrange);
if Tablo_PN[i].pulse=1 then ts:=aigP else ts:=feu;
pilote_acc(Tablo_PN[i].AdresseFerme,Tablo_PN[i].CommandeFerme,ts);
end;
end;
end
end
else
begin
// PN par zone de détection
//Affiche(intToSTR(adr)+'/'+intToSTR(adr2)+' '+intToSTR(etat),clyellow);
// Affiche(intToSTR(adr)+'/'+intToSTR(adr2)+' '+intToSTR(etat),clyellow);
if Tablo_PN[i].nbvoies>4 then Tablo_PN[i].nbvoies:=4;
for v:=1 to Tablo_PN[i].nbvoies do
begin
@@ -8930,31 +8973,28 @@ begin
dZ2O:=Tablo_PN[i].voie[v].detZ2O;
if (dZ1O=adr) and (dZ2O=adr2) and (etat=0) then // zone d'ouverture
begin
Tablo_PN[i].voie[v].PresTrain:=false;
// vérifier les présences train sur les autres voies du PN
presTrain_PN:=false;
for va:=1 to Tablo_PN[i].nbvoies do
begin
presTrain_PN:=presTrain_PN or Tablo_PN[i].voie[va].PresTrain;
end;
if not(presTrain_PN) then
if Tablo_PN[i].compteur=1 then
begin
s:='Ouverture PN'+intToSTR(i)+' par zone '+intToSTr(adr)+' '+intToSTR(adr2);
Affiche(s,clorange);
//if AffAigDet then AfficheDebug(s,clorange);
if Tablo_PN[i].pulse=1 then ts:=aigP else ts:=feu;
pilote_acc(Tablo_PN[i].AdresseOuvre,Tablo_PN[i].CommandeOuvre,ts);
if tablo_pn[i].compteur>0 then dec(tablo_pn[i].compteur);
end;
end;
if (dZ1F=adr) and (dZ2F=adr2) and (etat=1) then // zone de fermeture
begin
Tablo_PN[i].voie[v].PresTrain:=true;
s:='Fermeture PN'+IntToSTR(i)+' par zone '+intToSTr(adr)+' '+intToSTR(adr2)+' (train voie '+IntToSTR(v)+')';
affiche(s,clorange);
//if AffAigDet then AfficheDebug(s,clorange);
if Tablo_PN[i].pulse=1 then ts:=aigP else ts:=feu;
pilote_acc(Tablo_PN[i].AdresseFerme,Tablo_PN[i].CommandeFerme,ts);
inc(Tablo_PN[i].compteur);
if tablo_pn[i].compteur=1 then
begin
s:='Fermeture PN'+IntToSTR(i)+' par zone '+intToSTr(adr)+' '+intToSTR(adr2)+' (train voie '+IntToSTR(v)+')';
affiche(s,clorange);
//if AffAigDet then AfficheDebug(s,clorange);
if Tablo_PN[i].pulse=1 then ts:=aigP else ts:=feu;
pilote_acc(Tablo_PN[i].AdresseFerme,Tablo_PN[i].CommandeFerme,ts);
end;
end;
end;
end;
@@ -10453,7 +10493,7 @@ begin
Formprinc.caption:=af+' - '+lay;
// On a lancé CDM, déconnecter l'USB
deconnecte_USB;
Affiche('lance les fonctions automatiques de CDM',clyellow);
Affiche('Lance les fonctions automatiques de CDM',clyellow);
Sleep(3000);
ProcessRunning(s); // récupérer le handle de CDM
SetForegroundWindow(CDMhd);
@@ -10614,6 +10654,12 @@ begin
end;
roulage:=false;
// raz compteurs de trains des PN
for i:=1 to NbrePN do
begin
Tablo_Pn[i].compteur:=0;
end;
{ ralentit au démarrage
for i:=1 to NbreFeux do
begin
@@ -10686,26 +10732,29 @@ procedure TFormPrinc.FormCreate(Sender: TObject);
var i : integer;
s : string;
begin
AF:='Client TCP-IP CDM Rail ou USB - système XpressNet DCC++ Version '+Version+sousVersion;
Caption:=AF;
TraceSign:=True;
configPrete:=false; // form config prete
PremierFD:=false;
sauve_tco:=false;
// services commIP CDM par défaut
ntrains:=0;
ntrains_cdm:=0;
protocole:=1;
filtrageDet0:=3;
// services commIP CDM par défaut
Srvc_Aig:=true;
Srvc_Det:=true;
Srvc_Act:=true;
DebugAffiche:=false;
Srvc_PosTrain:=false;
Srvc_sig:=false;
DebugAffiche:=false;
formConfCellTCOAff:=false;
confasauver:=false;
config_modifie:=false;
AF:='Client TCP-IP CDM Rail ou USB - système XpressNet DCC++ Version '+Version+sousVersion;
chaine_recue:='';
Caption:=AF;
Application.onHint:=doHint;
// box2=CV
@@ -10737,35 +10786,111 @@ begin
debug:=0;
etape:=1;
affevt:=false;
avec_splitter:=false;
DebugAffiche:=false;
Algo_localisation:=1; // normal
AntiTimeoutEthLenz:=0;
Verif_AdrXpressNet:=1;
avecRoulage:=0;
AvecInit:=true; // &&&& avec initialisation des aiguillages ou pas
Option_demarrage:=false; // démarrage des trains après tempo, pas encore au point
Diffusion:=AvecInit; // mode diffusion publique
roulage1.visible:=false;
With ScrollBox1 do
begin
HorzScrollBar.Tracking:=true;
HorzScrollBar.Smooth:=false; // ne pas mettre true sinon figeage dans W11 si onclique sur la trackbar!!
VertScrollBar.Tracking:=true;
VertScrollBar.Smooth:=false;
end;
with panel2 do
begin
Panel2.Top:=32;
Panel2.Left:=8;
Width:=610;
Height:=520;
Anchors:=[akLeft,akTop,akRight,akBottom];
end;
if avec_splitter then
begin
with Fenrich do
begin
parent:=panel2;
Align:=alLeft;
left:=0;
top:=0;
width:=panel2.Width-20;
height:=520;
Anchors:=[akLeft,akTop,akRight,akBottom];
end;
with splitterV do
begin
Parent:=panel2;
Left:=FenRich.left+FenRich.Width+1;
//Align:=Fenrich.Align;
//MinSize:=200;
Visible:=true;
end;
with panel2 do
begin
//align:=alLeft;
//Left:=SplitterV.left+10;
end;
with ScrollBox1 do
begin
//Parent:=formprinc;
//align:=alclient;
Anchors:=[];
top:=200;
end;
splitterH.Visible:=false;
{ with splitterH do
begin
Parent:=formprinc;
//top:=FenRich.top+FenRich.height+1;
Width:=FenRich.width;
Align:=alBottom;
MinSize:=200;
Visible:=true;
end;
}
end
else
begin
splitterV.Visible:=false;
splitterH.Visible:=false;
with panel2 do
begin
Anchors:=[akLeft,akTop,akRight,akBottom];
end;
with Fenrich do
begin
parent:=panel2;
Align:=alLeft;
left:=0;
top:=0;
width:=panel2.Width;
height:=panel2.Height;
Anchors:=[akLeft,akTop,akRight,akBottom];
end;
end;
// pour Rad studio------------------------
FenRich.Height:=Height-150;
ScrollBox1.Height:=Height-280;
StaticText.AutoSize:=true;
StaticText.Top:=FenRich.Height+FenRich.Top+10;
StaticText.Top:=panel2.Height+Panel2.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;
@@ -10814,6 +10939,7 @@ begin
// Initialisation des images des signaux
procetape('Création des signaux');
NbreImagePLigne:=Formprinc.ScrollBox1.Width div (largImg+5);
if NbreImagePLigne=0 then NbreImagePLigne:=1;
// ajoute les images des feux dynamiquement
for i:=1 to NbreFeux do
@@ -10849,7 +10975,7 @@ begin
modeStkRetro:=false;
// lancer CDM rail et le connecte si on le demande à faire après la création des feux et du tco
// lancer CDM rail et le connecte si on le demande ; à faire après la création des feux et du tco
procetape('Test CDM et son lancement');
if LanceCDM then Lance_CDM;
procetape('Fin cdm');
@@ -10860,7 +10986,7 @@ begin
procetape('Test connexion CDM');
if not(CDM_connecte) then connecte_CDM;
// si CDM n'est pas connecté, on ouvre la liaison vers la centrale
// si CDM n'est pas connecté, on regarde si on ouvre la liaison vers la centrale
if not(CDM_connecte) then
begin
procetape('Ouvertures COM/USB');
@@ -10907,7 +11033,7 @@ begin
//Menu_interface(valide);
end;
DoubleBuffered:=true;
//DoubleBuffered:=true;
{
aiguillage[index_aig(1)].position:=const_droit;
aiguillage[index_aig(3)].position:=const_devie;
@@ -10985,7 +11111,6 @@ begin
end;
//if terminal then Affiche(chaine_recue,clLime);
chaine_recue:=interprete_reponse(chaine_recue);
//interprete_reponse(chaine_recue);
end;
end;
@@ -10998,7 +11123,6 @@ begin
portCommOuvert:=false;
MSCommUSBLenz.Portopen:=false;
end;
portCommOuvert:=false;
ClientSocketCDM.close;
ClientSocketInterface.close;
timer1.Enabled:=false;
@@ -11021,6 +11145,16 @@ var aspect,i,a,x,y,Bimage,adresse,TailleX,TailleY,orientation : integer;
s : string;
begin
inc(tick);
// envoi timeout
if parSocketLenz and (AntiTimeoutEthLenz=1) then
begin
dec(TpsTimeoutSL);
if TpsTimeoutSL<=0 then
begin
TpsTimeoutSL:=450; // envoyer caractère toutes les 45 secondes
ClientSocketInterface.Socket.SendText(' ');
end;
end;
if sourisclic then inc(Temposouris);
if Tdoubleclic>0 then dec(Tdoubleclic);
if Tempo_init>0 then dec(Tempo_init);
@@ -11046,9 +11180,8 @@ begin
adresse:=feux[i].adresse;
if TestBit(a,jaune_cli) or TestBit(a,ral_60) or
TestBit(a,rappel_60) or testBit(a,semaphore_cli) or
testBit(a,vert_cli) or testbit(a,blanc_cli) then
testBit(a,vert_cli) or testbit(a,blanc_cli) then
begin
//Affiche(IntToSTR(adresse),clOrange);
Dessine_feu_mx(Feux[i].Img.Canvas,0,0,1,1,adresse,1);
//Affiche('Clignote feu '+IntToSTR(adresse),clyellow);
end;
@@ -11123,7 +11256,7 @@ begin
// arret loco sur n secondes
// démarrage loco temporisé
for i:=1 to 20 do
for i:=1 to ntrains do
begin
a:=trains[i].TempoArret;
if a<>0 then
@@ -11193,7 +11326,7 @@ begin
end;
// temporisation détecteur à 0
for i:=1 to NbMemZone do
for i:=1 to NbMemZone do // i=index détecteur
begin
a:=detecteur[i].tempo0;
if a<>0 then
@@ -11308,7 +11441,7 @@ begin
ErrorCode:=0;
end;
// lecture depuis socket
// lecture depuis socket interface
procedure TFormPrinc.ClientSocketInterfaceRead(Sender: TObject;
Socket: TCustomWinSocket);
var s : string;
@@ -11456,11 +11589,17 @@ var j,adr,adrTrain : integer;
s : string;
begin
Affiche('Etat des détecteurs:',ClLime);
nbDet1:=0;
for j:=1 to NDetecteurs do
begin
adr:=Adresse_detecteur[j];
s:='Dét '+intToSTR(adr)+'=';
if Detecteur[adr].etat then s:=s+'1 ' else s:=s+'0 ';
if Detecteur[adr].etat then
begin
s:=s+'1 ';
inc(NbDet1);
end
else s:=s+'0 ';
s:=s+detecteur[adr].train;
AdrTrain:=detecteur[adr].AdrTrain;
@@ -11518,10 +11657,9 @@ begin
if aiguillage[index_aig(j)].position=1 then s:=s+' (dévié)' else s:=s+' (droit)';
end;
if (model=Crois) then s:='Croisement '+IntToSTR(aiguillage[i].Adresse);
r:=aiguillage[i].AdrTrain;
if (r<>0) and (model=Crois) then s:='Croisement '+IntToSTR(aiguillage[i].Adresse)+' : ';
if r<>0 then s:=s+' réservé par train @'+intToSTR(r);
if r<>0 then s:=s+': réservé par train @'+intToSTR(r);
if s<>'' then Affiche(s,clWhite);
end;
end;
@@ -12085,7 +12223,7 @@ begin
// évènement actionneur
// attention un actionneur qui repasse à 0 ne contient pas de nom de train
//S-E-03-0157-CMDACC-ST_AC|049|05|NAME=0;OBJ=7101;AD=815;TRAIN=CC406526;STATE=1;
// S-E-03-0157-CMDACC-ST_AC|049|05|NAME=0;OBJ=7101;AD=815;TRAIN=CC406526;STATE=1;
i:=pos('CMDACC-ST_AC',commandeCDM);
if i<>0 then
begin
@@ -12201,7 +12339,7 @@ begin
val(ss,y2,erreur);
s:=s+' Y2='+IntTostr(y2);
Delete(commandeCDM,i,l-i+1);
end;
end;
if afftiers then afficheDebug(s,clAqua);
end;
@@ -12719,6 +12857,8 @@ begin
s:=s+' Commande ouverture='+intToSTR(Tablo_PN[i].commandeOuvre);
s:=s+' Nbre de voies='+intToSTR(Tablo_PN[i].nbVoies);
Affiche(s,clyellow);
s:=' Compteur trains engagés sur PN='+intToSTR(tablo_PN[i].compteur);
Affiche(s,clyellow);
if tablo_PN[i].Voie[1].ActFerme<>0 then
// par actionneur
@@ -12736,7 +12876,7 @@ begin
begin
s:=' Voie '+IntToSTR(v)+': Zones de fermeture='+intToSTR(tablo_PN[i].Voie[v].detZ1F)+'-'+intToSTR(tablo_PN[i].Voie[v].detZ2F);
s:=s+' Zones d''ouverture='+intToSTR(tablo_PN[i].Voie[v].detZ1O)+'-'+intToSTR(tablo_PN[i].Voie[v].detZ2O);
Affiche(s,clyellow);
Affiche(s,clyellow);
end;
end;
end;
@@ -12933,7 +13073,7 @@ end;
procedure TFormPrinc.Apropos1Click(Sender: TObject);
begin
Affiche(' ',clyellow);
Affiche('Signaux complexes GL version '+version+sousVersion+' (C) 2022 F1IWQ Gily TDR',clWhite);
Affiche('Signaux complexes GL version '+version+sousVersion+' (C) 2022-23 F1IWQ Gily TDR',clWhite);
FenRich.SelStart:=length(FenRich.Text);
FenRich.SelAttributes.Style:=[fsUnderline];
@@ -12945,7 +13085,7 @@ begin
FenRich.lines.add('http://cdmrail.free.fr/ForumCDR/viewtopic.php?f=77&t=3906');
RE_ColorLine(FenRich,FenRich.lines.count-1,clAqua);
Affiche('Ce programme pilote des signaux complexes de façon autonome ou avec CDM rail ',ClYellow);
Affiche('Ce programme pilote des signaux complexes et les trains de façon autonome ou avec CDM rail ',ClYellow);
Affiche('En fonction des détecteurs mis à 1 ou 0 par des locomotives',ClYellow);
Affiche('en circulation sur le réseau',ClYellow);
Affiche('En vert : Trames envoyées à l''interface',ClWhite);
@@ -13001,8 +13141,8 @@ begin
// carré
if aspect=0 then
begin
Affiche('Le signal est au carré car ',clyellow);
if carre_signal(Adresse,trainreserve,reserveTrainTiers) then affiche('les aiguillages en aval du signal sont mal positionnées ou leur positions inconnues',clyellow) ;
Affiche('Le signal '+intToSTR(adresse)+' est au carré car ',clyellow);
if carre_signal(Adresse,trainreserve,reserveTrainTiers) then affiche('les aiguillages en aval du signal sont mal positionnés ou leur positions inconnues',clyellow) ;
if reserveTrainTiers then affiche('un aiguillage ou un croisement en aval du signal sont réservés par un autre train ',clyellow);
if Cond_Carre(Adresse) then affiche_suivi('les aiguillages déclarés dans la définition du signal sont mal positionnés',clyellow);
if feux[i].VerrouCarre and not(PresTrainPrec(Adresse,Nb_cantons_Sig,false,TrainReserve,voie)) then affiche('le signal est verrouillable au carré et aucun train n''est présent avant le signal',clyellow);
@@ -13011,37 +13151,37 @@ begin
end;
if aspect=1 then
begin
Affiche('Le signal est au sémaphore car ',clyellow);
if test_memoire_zones(Adresse) then affiche_suivi('Présence train dans canton après le signal',clyellow);
Affiche('Le signal '+intToSTR(adresse)+' est au sémaphore car ',clyellow);
if test_memoire_zones(Adresse) then affiche_suivi('présence train dans canton après le signal',clyellow);
end;
// avertissement
if aspect=8 then
begin
i:=etat_signal_suivant(Adresse,1,AdrSignalsuivant);
Affiche('Le signal est à l''avertissement car son signal suivant '+intToSTR(AdrSignalsuivant)+' est au '+chaine_signal(i),clyellow);
Affiche('Le signal '+intToSTR(adresse)+' est à l''avertissement car son signal suivant '+intToSTR(AdrSignalsuivant)+' est au '+chaine_signal(i),clyellow);
end;
// avertissement cli
if aspect=9 then
begin
i:=etat_signal_suivant(Adresse,1,AdrSignalsuivant);
Affiche('Le signal est au jaune cli car son signal suivant '+intToSTR(AdrSignalsuivant)+' est au '+chaine_signal(i),clyellow);
Affiche('Le signal '+intToSTR(adresse)+' est au jaune cli car son signal suivant '+intToSTR(AdrSignalsuivant)+' est au '+chaine_signal(i),clyellow);
end;
// ralen 30
if combine=10 then
begin
i:=etat_signal_suivant(Adresse,1,AdrSignalsuivant);
Affiche('Le signal est au ralentissement 30 car son signal suivant '+intToSTR(AdrSignalsuivant)+' est au '+chaine_signal(i),clyellow);
Affiche('Le signal '+intToSTR(adresse)+' est au ralentissement 30 car son signal suivant '+intToSTR(AdrSignalsuivant)+' est au '+chaine_signal(i),clyellow);
end;
if combine=11 then
begin
i:=etat_signal_suivant(Adresse,1,AdrSignalsuivant);
Affiche('Le signal est au ralentissement 60 car son signal suivant '+intToSTR(AdrSignalsuivant)+' est au '+chaine_signal(i),clyellow);
Affiche('Le signal '+intToSTR(adresse)+' est au ralentissement 60 car son signal suivant '+intToSTR(AdrSignalsuivant)+' est au '+chaine_signal(i),clyellow);
end;
if (combine=12) or (combine=13) then
begin
Aig:=Aiguille_deviee(Adresse);
// si aiguille locale déviée
if (aig<>0) then Affiche('Le signal est à rappel 30 car l''aiguillage suivant '+intToSTR(Aig)+' est dévié',clyellow);
if (aig<>0) then Affiche('Le signal '+intToSTR(adresse)+' est à rappel 30 car l''aiguillage suivant '+intToSTR(Aig)+' est dévié',clyellow);
end;
end;
@@ -13368,12 +13508,34 @@ procedure TFormPrinc.EditAdrTrainChange(Sender: TObject);
end;
procedure TFormPrinc.SplitterMoved(Sender: TObject);
procedure TFormPrinc.SplitterVMoved(Sender: TObject);
var pdroite : integer;
begin
ScrollBox1.left:=Splitter.Left+10;
ScrollBox1.width:=width-scrollBox1.left-20;
Affiche(intToSTR(splitterV.Left),clred);
exit;
//fenrich.width:=splitterV.left;
if not(avec_splitter) then exit;
//Affiche('splittermoved',clyellow);
pdroite:=SplitterV.Left+40;
panel2.Width:=pdroite;
end;
procedure TFormPrinc.PopupMenuFeuPopup(Sender: TObject);
var s : string;
P_image_pilote : Timage;
adressefeuclic: integer;
ob : TPopupMenu;
begin
// AdrPilote est récupéré de l'event OnMouseDown de l'image du signal qui se produit avant
ob:=Sender as Tpopupmenu;
s:=ob.Items[0].Caption;
ob.Items[0].Caption:='Propriétés du signal '+intToSTR(AdrPilote);
ob.Items[1].Caption:='Informations du signal '+intToSTR(AdrPilote);
end;
end.
BIN
View File
Binary file not shown.
+5 -5
View File
@@ -505,7 +505,7 @@ object FormSR: TFormSR
object LabelErreur: TLabel
Left = 224
Top = 528
Width = 3
Width = 89
Height = 13
Caption = ':'
end
@@ -669,13 +669,13 @@ object FormSR: TFormSR
TabOrder = 15
OnChange = ComboBoxAdr16Change
end
object ButtonOK: TButton
Left = 56
object BitBtnok: TBitBtn
Left = 16
Top = 520
Width = 75
Height = 25
Caption = 'OK'
TabOrder = 16
OnClick = ButtonOKClick
OnClick = BitBtnokClick
Kind = bkOK
end
end
+10 -7
View File
@@ -7,7 +7,8 @@ interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls , UnitPrinc, UnitConfig;
Dialogs, StdCtrls, ExtCtrls , UnitPrinc, UnitConfig,
Buttons;
type
TFormSR = class(TForm)
@@ -94,8 +95,8 @@ type
LabelCV32: TLabel;
ComboBoxAdr15: TComboBox;
ComboBoxAdr16: TComboBox;
ButtonOK: TButton;
LabelErreur: TLabel;
BitBtnok: TBitBtn;
procedure FormActivate(Sender: TObject);
procedure ComboBoxAdr1Change(Sender: TObject);
procedure ComboBoxAdr2Change(Sender: TObject);
@@ -113,8 +114,8 @@ type
procedure ComboBoxAdr14Change(Sender: TObject);
procedure ComboBoxAdr15Change(Sender: TObject);
procedure ComboBoxAdr16Change(Sender: TObject);
procedure ButtonOKClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BitBtnokClick(Sender: TObject);
private
{ Déclarations privées }
public
@@ -464,10 +465,7 @@ begin
maj_db;
end;
procedure TFormSR.ButtonOKClick(Sender: TObject);
begin
close;
end;
procedure TFormSR.FormCreate(Sender: TObject);
var i : integer;
@@ -493,5 +491,10 @@ begin
end;
end;
procedure TFormSR.BitBtnokClick(Sender: TObject);
begin
close;
end;
end.
BIN
View File
Binary file not shown.
+20 -8
View File
@@ -1,10 +1,12 @@
object FormSimulation: TFormSimulation
Left = 332
Top = 283
Width = 447
Height = 189
Caption = 'Simulation'
Color = clBtnFace
BorderIcons = [biSystemMenu, biMinimize]
BorderStyle = bsDialog
Caption = 'Ouvrir un fichier de simulation'
ClientHeight = 150
ClientWidth = 431
Color = clActiveBorder
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
@@ -16,7 +18,7 @@ object FormSimulation: TFormSimulation
TextHeight = 13
object Label1: TLabel
Left = 8
Top = 32
Top = 24
Width = 369
Height = 16
Caption = 'Intervalle de temps entre deux '#233'v'#232'nements d'#233'tecteurs (x100ms)'
@@ -29,7 +31,7 @@ object FormSimulation: TFormSimulation
end
object ButtonCharge: TButton
Left = 160
Top = 96
Top = 104
Width = 105
Height = 41
Caption = 'Charger un fichier de simulation'
@@ -39,7 +41,7 @@ object FormSimulation: TFormSimulation
end
object EditIntervalle: TEdit
Left = 384
Top = 32
Top = 24
Width = 41
Height = 21
TabOrder = 1
@@ -49,12 +51,22 @@ object FormSimulation: TFormSimulation
end
object CheckAffTick: TCheckBox
Left = 64
Top = 64
Top = 48
Width = 313
Height = 17
Caption = 'RAZ des trains et de leurs placements avant de d'#233'marrer'
TabOrder = 2
end
object CheckEvalroutes: TCheckBox
Left = 64
Top = 64
Width = 345
Height = 17
Caption =
'Affichage de l'#39#233'valuation des routes des trains dans la fen'#234'tre ' +
'debug'
TabOrder = 3
end
object OpenDialog: TOpenDialog
Left = 48
Top = 96
+2
View File
@@ -13,6 +13,7 @@ type
EditIntervalle: TEdit;
Label1: TLabel;
CheckAffTick: TCheckBox;
CheckEvalroutes: TCheckBox;
procedure ButtonChargeClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure EditIntervalleKeyPress(Sender: TObject; var Key: Char);
@@ -136,6 +137,7 @@ begin
if openDialog.Execute then
begin
if checkAffTick.Checked then raz_tout;
if checkEvalRoutes.Checked then TraceListe:=true;
s:=openDialog.FileName;
ouvre_simulation(s);
end;
BIN
View File
Binary file not shown.
+315 -293
View File
@@ -1,8 +1,8 @@
object FormTCO: TFormTCO
Left = 132
Top = 127
Width = 1132
Height = 728
Left = 217
Top = 60
Width = 1142
Height = 678
VertScrollBar.Visible = False
Caption = 'FormTCO'
Color = clBtnFace
@@ -17,12 +17,13 @@ object FormTCO: TFormTCO
Position = poScreenCenter
OnActivate = FormActivate
OnCreate = FormCreate
OnDockOver = FormDockOver
OnDragOver = FormDragOver
OnKeyDown = FormKeyDown
OnKeyPress = FormKeyPress
OnMouseWheel = FormMouseWheel
DesignSize = (
1124
697)
1126
639)
PixelsPerInch = 96
TextHeight = 13
object LabelCoord: TLabel
@@ -65,15 +66,9 @@ object FormTCO: TFormTCO
Height = 13
Caption = '0'
end
object ImageTemp: TImage
Left = 24
Top = 394
Width = 97
Height = 97
end
object Label19: TLabel
Left = 1068
Top = 441
Left = 1078
Top = 391
Width = 32
Height = 13
Anchors = [akRight, akBottom]
@@ -85,11 +80,23 @@ object FormTCO: TFormTCO
Font.Style = [fsBold]
ParentFont = False
end
object ImageTemp: TImage
Left = 976
Top = 96
Width = 97
Height = 97
end
object ImageTemp2: TImage
Left = 976
Top = 208
Width = 97
Height = 97
end
object ScrollBox: TScrollBox
Left = 8
Top = 18
Width = 1050
Height = 409
Width = 828
Height = 351
HorzScrollBar.Smooth = True
HorzScrollBar.Tracking = True
VertScrollBar.Smooth = True
@@ -100,14 +107,15 @@ object FormTCO: TFormTCO
ParentColor = False
TabOrder = 0
DesignSize = (
1046
405)
824
347)
object ImageTCO: TImage
Left = 0
Top = 0
Width = 1002
Height = 379
Width = 716
Height = 305
Anchors = [akLeft, akTop, akRight, akBottom]
AutoSize = True
ParentShowHint = False
PopupMenu = PopupMenu1
ShowHint = True
@@ -120,14 +128,16 @@ object FormTCO: TFormTCO
end
end
object TrackBarZoom: TTrackBar
Left = 1068
Left = 1078
Top = 18
Width = 41
Height = 400
Height = 350
Anchors = [akTop, akRight, akBottom]
Ctl3D = True
Max = 50
Min = 20
Orientation = trVertical
ParentCtl3D = False
Position = 20
TabOrder = 1
TickMarks = tmTopLeft
@@ -135,8 +145,8 @@ object FormTCO: TFormTCO
end
object Panel1: TPanel
Left = 0
Top = 522
Width = 1114
Top = 472
Width = 1124
Height = 165
Anchors = [akLeft, akRight, akBottom]
Color = clActiveBorder
@@ -149,18 +159,8 @@ object FormTCO: TFormTCO
TabOrder = 2
OnDragOver = Panel1DragOver
DesignSize = (
1114
1124
165)
object ImagePalette5: TImage
Left = 520
Top = 8
Width = 41
Height = 41
DragMode = dmAutomatic
OnDragOver = ImagePalette5DragOver
OnEndDrag = ImagePalette5EndDrag
OnMouseDown = ImagePalette5MouseDown
end
object Label6: TLabel
Left = 216
Top = 22
@@ -174,16 +174,6 @@ object FormTCO: TFormTCO
Font.Style = [fsBold]
ParentFont = False
end
object ImagePalette2: TImage
Left = 304
Top = 8
Width = 41
Height = 41
DragMode = dmAutomatic
OnDragOver = ImagePalette2DragOver
OnEndDrag = ImagePalette2EndDrag
OnMouseDown = ImagePalette2MouseDown
end
object Label7: TLabel
Left = 288
Top = 22
@@ -210,59 +200,6 @@ object FormTCO: TFormTCO
Font.Style = [fsBold]
ParentFont = False
end
object ImagePalette1: TImage
Left = 232
Top = 8
Width = 41
Height = 41
Hint = 'Voie pouvant porter un d'#233'tecteur'
DragMode = dmAutomatic
ParentShowHint = False
ShowHint = True
OnDragOver = ImagePalette1DragOver
OnEndDrag = ImagePalette1EndDrag
OnMouseDown = ImagePalette1MouseDown
end
object ImagePalette6: TImage
Left = 232
Top = 56
Width = 41
Height = 41
DragMode = dmAutomatic
OnDragOver = ImagePalette6DragOver
OnEndDrag = ImagePalette6EndDrag
OnMouseDown = ImagePalette6MouseDown
end
object ImagePalette7: TImage
Left = 304
Top = 56
Width = 41
Height = 41
DragMode = dmAutomatic
OnDragOver = ImagePalette7DragOver
OnEndDrag = ImagePalette7EndDrag
OnMouseDown = ImagePalette7MouseDown
end
object ImagePalette8: TImage
Left = 376
Top = 56
Width = 41
Height = 41
DragMode = dmAutomatic
OnDragOver = ImagePalette8DragOver
OnEndDrag = ImagePalette8EndDrag
OnMouseDown = ImagePalette8MouseDown
end
object ImagePalette9: TImage
Left = 448
Top = 56
Width = 41
Height = 41
DragMode = dmAutomatic
OnDragOver = ImagePalette9DragOver
OnEndDrag = ImagePalette9EndDrag
OnMouseDown = ImagePalette9MouseDown
end
object Label11: TLabel
Left = 216
Top = 70
@@ -315,25 +252,6 @@ object FormTCO: TFormTCO
Font.Style = [fsBold]
ParentFont = False
end
object ImagePalette3: TImage
Left = 376
Top = 8
Width = 41
Height = 41
DragMode = dmAutomatic
OnDragOver = ImagePalette3DragOver
OnEndDrag = ImagePalette3EndDrag
OnMouseDown = ImagePalette3MouseDown
end
object ImagePalette4: TImage
Left = 448
Top = 8
Width = 41
Height = 41
DragMode = dmAutomatic
OnEndDrag = ImagePalette4EndDrag
OnMouseDown = ImagePalette4MouseDown
end
object Label8: TLabel
Left = 360
Top = 22
@@ -360,16 +278,6 @@ object FormTCO: TFormTCO
Font.Style = [fsBold]
ParentFont = False
end
object ImagePalette10: TImage
Left = 232
Top = 104
Width = 41
Height = 41
DragMode = dmAutomatic
OnDragOver = ImagePalette10DragOver
OnEndDrag = ImageDiag10EndDrag
OnMouseDown = ImagePalette10MouseDown
end
object Label16: TLabel
Left = 208
Top = 118
@@ -383,16 +291,6 @@ object FormTCO: TFormTCO
Font.Style = [fsBold]
ParentFont = False
end
object ImagePalette11: TImage
Left = 304
Top = 104
Width = 41
Height = 41
DragMode = dmAutomatic
OnDragOver = ImagePalette11DragOver
OnEndDrag = ImageDiag11EndDrag
OnMouseDown = ImagePalette11MouseDown
end
object Label17: TLabel
Left = 280
Top = 118
@@ -406,22 +304,8 @@ object FormTCO: TFormTCO
Font.Style = [fsBold]
ParentFont = False
end
object ImagePalette30: TImage
Left = 456
Top = 104
Width = 25
Height = 41
Hint = 'Signal'
DragMode = dmAutomatic
ParentShowHint = False
ShowHint = True
Stretch = True
OnDragOver = ImagePalette30DragOver
OnEndDrag = ImagePalette30EndDrag
OnMouseDown = ImagePalette30MouseDown
end
object Label18: TLabel
Left = 424
Left = 352
Top = 118
Width = 18
Height = 19
@@ -433,16 +317,6 @@ object FormTCO: TFormTCO
Font.Style = [fsBold]
ParentFont = False
end
object ImagePalette12: TImage
Left = 592
Top = 8
Width = 41
Height = 41
DragMode = dmAutomatic
OnDragOver = ImagePalette12DragOver
OnEndDrag = ImagePalette12EndDrag
OnMouseDown = ImagePalette12MouseDown
end
object Label20: TLabel
Left = 568
Top = 22
@@ -469,16 +343,6 @@ object FormTCO: TFormTCO
Font.Style = [fsBold]
ParentFont = False
end
object ImagePalette13: TImage
Left = 664
Top = 8
Width = 41
Height = 41
DragMode = dmAutomatic
OnDragOver = ImagePalette13DragOver
OnEndDrag = ImagePalette13EndDrag
OnMouseDown = ImagePalette13MouseDown
end
object Label21: TLabel
Left = 712
Top = 22
@@ -492,16 +356,6 @@ object FormTCO: TFormTCO
Font.Style = [fsBold]
ParentFont = False
end
object ImagePalette14: TImage
Left = 736
Top = 8
Width = 41
Height = 41
DragMode = dmAutomatic
OnDragOver = ImagePalette14DragOver
OnEndDrag = ImagePalette14EndDrag
OnMouseDown = ImagePalette14MouseDown
end
object Label22: TLabel
Left = 784
Top = 22
@@ -515,26 +369,6 @@ object FormTCO: TFormTCO
Font.Style = [fsBold]
ParentFont = False
end
object ImagePalette15: TImage
Left = 808
Top = 8
Width = 41
Height = 41
DragMode = dmAutomatic
OnDragOver = ImagePalette15DragOver
OnEndDrag = ImagePalette15EndDrag
OnMouseDown = ImagePalette15MouseDown
end
object ImagePalette16: TImage
Left = 520
Top = 56
Width = 41
Height = 41
DragMode = dmAutomatic
OnDragOver = ImagePalette16DragOver
OnEndDrag = ImagePalette16EndDrag
OnMouseDown = ImagePalette16MouseDown
end
object Label24: TLabel
Left = 496
Top = 70
@@ -548,16 +382,6 @@ object FormTCO: TFormTCO
Font.Style = [fsBold]
ParentFont = False
end
object ImagePalette17: TImage
Left = 592
Top = 56
Width = 41
Height = 41
DragMode = dmAutomatic
OnDragOver = ImagePalette17DragOver
OnEndDrag = ImagePalette17EndDrag
OnMouseDown = ImagePalette17MouseDown
end
object Label25: TLabel
Left = 568
Top = 70
@@ -571,16 +395,6 @@ object FormTCO: TFormTCO
Font.Style = [fsBold]
ParentFont = False
end
object ImagePalette18: TImage
Left = 664
Top = 56
Width = 41
Height = 41
DragMode = dmAutomatic
OnDragOver = ImagePalette18DragOver
OnEndDrag = ImagePalette18EndDrag
OnMouseDown = ImagePalette18MouseDown
end
object Label26: TLabel
Left = 640
Top = 70
@@ -594,16 +408,6 @@ object FormTCO: TFormTCO
Font.Style = [fsBold]
ParentFont = False
end
object ImagePalette19: TImage
Left = 736
Top = 56
Width = 41
Height = 41
DragMode = dmAutomatic
OnDragOver = ImagePalette19DragOver
OnEndDrag = ImagePalette19EndDrag
OnMouseDown = ImagePalette19MouseDown
end
object Label27: TLabel
Left = 712
Top = 70
@@ -617,16 +421,6 @@ object FormTCO: TFormTCO
Font.Style = [fsBold]
ParentFont = False
end
object ImagePalette20: TImage
Left = 808
Top = 56
Width = 41
Height = 41
DragMode = dmAutomatic
OnDragOver = ImagePalette20DragOver
OnEndDrag = ImagePalette20EndDrag
OnMouseDown = ImagePalette20MouseDown
end
object Label28: TLabel
Left = 784
Top = 70
@@ -640,19 +434,6 @@ object FormTCO: TFormTCO
Font.Style = [fsBold]
ParentFont = False
end
object ImagePalette21: TImage
Left = 880
Top = 8
Width = 41
Height = 41
Hint = 'Croisement ou TJD ou TJS'
DragMode = dmAutomatic
ParentShowHint = False
ShowHint = True
OnDragOver = ImagePalette21DragOver
OnEndDrag = ImagePalette21EndDrag
OnMouseDown = ImagePalette21MouseDown
end
object Label29: TLabel
Left = 856
Top = 22
@@ -666,19 +447,6 @@ object FormTCO: TFormTCO
Font.Style = [fsBold]
ParentFont = False
end
object ImagePalette22: TImage
Left = 952
Top = 8
Width = 41
Height = 41
Hint = 'Croisement ou TJD ou TJS'
DragMode = dmAutomatic
ParentShowHint = False
ShowHint = True
OnDragOver = ImagePalette22DragOver
OnEndDrag = ImagePalette22EndDrag
OnMouseDown = ImagePalette22MouseDown
end
object Label30: TLabel
Left = 928
Top = 22
@@ -692,25 +460,12 @@ object FormTCO: TFormTCO
Font.Style = [fsBold]
ParentFont = False
end
object ImagePalette23: TImage
Left = 376
Top = 104
Width = 41
Height = 41
Hint = 'Quai'
DragMode = dmAutomatic
ParentShowHint = False
ShowHint = True
OnDragOver = ImagePalette23DragOver
OnEndDrag = ImagePalette23EndDrag
OnMouseDown = ImagePalette23MouseDown
end
object Label31: TLabel
Left = 352
Left = 424
Top = 118
Width = 18
Height = 19
Caption = '23'
Caption = '31'
Font.Charset = ANSI_CHARSET
Font.Color = clWindowText
Font.Height = -16
@@ -718,8 +473,275 @@ object FormTCO: TFormTCO
Font.Style = [fsBold]
ParentFont = False
end
object Label5: TLabel
Left = 856
Top = 70
Width = 18
Height = 19
Caption = '24'
Font.Charset = ANSI_CHARSET
Font.Color = clWindowText
Font.Height = -16
Font.Name = 'Arial'
Font.Style = [fsBold]
ParentFont = False
end
object Label32: TLabel
Left = 928
Top = 70
Width = 18
Height = 19
Caption = '25'
Font.Charset = ANSI_CHARSET
Font.Color = clWindowText
Font.Height = -16
Font.Name = 'Arial'
Font.Style = [fsBold]
ParentFont = False
end
object ImagePalette1: TImage
Left = 232
Top = 8
Width = 41
Height = 41
OnDragOver = ImagePalette1DragOver
OnEndDrag = ImagePalette1EndDrag
OnMouseDown = ImagePalette1MouseDown
end
object ImagePalette2: TImage
Left = 304
Top = 8
Width = 41
Height = 41
OnDragOver = ImagePalette2DragOver
OnEndDrag = ImagePalette2EndDrag
OnMouseDown = ImagePalette2MouseDown
end
object ImagePalette3: TImage
Left = 376
Top = 8
Width = 41
Height = 41
OnDragOver = ImagePalette3DragOver
OnEndDrag = ImagePalette3EndDrag
OnMouseDown = ImagePalette3MouseDown
end
object ImagePalette4: TImage
Left = 448
Top = 8
Width = 41
Height = 41
OnDragOver = ImagePalette4DragOver
OnEndDrag = ImagePalette4EndDrag
OnMouseDown = ImagePalette4MouseDown
end
object ImagePalette5: TImage
Left = 520
Top = 8
Width = 41
Height = 41
OnDragOver = ImagePalette5DragOver
OnEndDrag = ImagePalette5EndDrag
OnMouseDown = ImagePalette5MouseDown
end
object ImagePalette12: TImage
Left = 592
Top = 8
Width = 41
Height = 41
OnDragOver = ImagePalette12DragOver
OnEndDrag = ImagePalette12EndDrag
OnMouseDown = ImagePalette12MouseDown
end
object ImagePalette13: TImage
Left = 664
Top = 8
Width = 41
Height = 41
OnDragOver = ImagePalette13DragOver
OnEndDrag = ImagePalette13EndDrag
OnMouseDown = ImagePalette13MouseDown
end
object ImagePalette14: TImage
Left = 736
Top = 8
Width = 41
Height = 41
OnDragOver = ImagePalette14DragOver
OnEndDrag = ImagePalette14EndDrag
OnMouseDown = ImagePalette14MouseDown
end
object ImagePalette15: TImage
Left = 808
Top = 8
Width = 41
Height = 41
OnDragOver = ImagePalette15DragOver
OnEndDrag = ImagePalette15EndDrag
OnMouseDown = ImagePalette15MouseDown
end
object ImagePalette21: TImage
Left = 880
Top = 8
Width = 41
Height = 41
OnDragOver = ImagePalette21DragOver
OnEndDrag = ImagePalette21EndDrag
OnMouseDown = ImagePalette21MouseDown
end
object ImagePalette22: TImage
Left = 952
Top = 8
Width = 41
Height = 41
OnDragOver = ImagePalette22DragOver
OnEndDrag = ImagePalette22EndDrag
OnMouseDown = ImagePalette22MouseDown
end
object ImagePalette6: TImage
Left = 232
Top = 56
Width = 41
Height = 41
OnDragOver = ImagePalette6DragOver
OnEndDrag = ImagePalette6EndDrag
OnMouseDown = ImagePalette6MouseDown
end
object ImagePalette7: TImage
Left = 304
Top = 56
Width = 41
Height = 41
OnDragOver = ImagePalette7DragOver
OnEndDrag = ImagePalette7EndDrag
OnMouseDown = ImagePalette7MouseDown
end
object ImagePalette9: TImage
Left = 448
Top = 56
Width = 41
Height = 41
OnDragOver = ImagePalette9DragOver
OnEndDrag = ImagePalette9EndDrag
OnMouseDown = ImagePalette9MouseDown
end
object ImagePalette16: TImage
Left = 520
Top = 56
Width = 41
Height = 41
OnDragOver = ImagePalette16DragOver
OnEndDrag = ImagePalette16EndDrag
OnMouseDown = ImagePalette16MouseDown
end
object ImagePalette17: TImage
Left = 592
Top = 56
Width = 41
Height = 41
OnDragOver = ImagePalette17DragOver
OnEndDrag = ImagePalette17EndDrag
OnMouseDown = ImagePalette17MouseDown
end
object ImagePalette18: TImage
Left = 664
Top = 56
Width = 41
Height = 41
OnDragOver = ImagePalette18DragOver
OnEndDrag = ImagePalette18EndDrag
OnMouseDown = ImagePalette18MouseDown
end
object ImagePalette19: TImage
Left = 736
Top = 56
Width = 41
Height = 41
OnDragOver = ImagePalette19DragOver
OnEndDrag = ImagePalette19EndDrag
OnMouseDown = ImagePalette19MouseDown
end
object ImagePalette20: TImage
Left = 808
Top = 56
Width = 41
Height = 41
OnDragOver = ImagePalette20DragOver
OnEndDrag = ImagePalette20EndDrag
OnMouseDown = ImagePalette20MouseDown
end
object ImagePalette24: TImage
Left = 880
Top = 56
Width = 41
Height = 41
OnDragOver = ImagePalette24DragOver
OnEndDrag = ImagePalette24EndDrag
OnMouseDown = ImagePalette24MouseDown
end
object ImagePalette25: TImage
Left = 952
Top = 56
Width = 41
Height = 41
OnDragOver = ImagePalette25DragOver
OnEndDrag = ImagePalette25EndDrag
OnMouseDown = ImagePalette25MouseDown
end
object ImagePalette10: TImage
Left = 232
Top = 104
Width = 41
Height = 41
OnDragOver = ImagePalette10DragOver
OnEndDrag = ImagePalette10EndDrag
OnMouseDown = ImagePalette10MouseDown
end
object ImagePalette11: TImage
Left = 304
Top = 104
Width = 41
Height = 41
OnDragOver = ImagePalette11DragOver
OnEndDrag = ImagePalette11EndDrag
OnMouseDown = ImagePalette11MouseDown
end
object ImagePalette31: TImage
Left = 448
Top = 104
Width = 41
Height = 41
Hint = 'Quai'
ParentShowHint = False
ShowHint = True
OnDragOver = ImagePalette31DragOver
OnEndDrag = ImagePalette31EndDrag
OnMouseDown = ImagePalette31MouseDown
end
object ImagePalette30: TImage
Left = 384
Top = 104
Width = 25
Height = 41
Hint = 'Signal'
ParentShowHint = False
ShowHint = True
Stretch = True
OnDragOver = ImagePalette30DragOver
OnEndDrag = ImagePalette30EndDrag
OnMouseDown = ImagePalette30MouseDown
end
object ImagePalette8: TImage
Left = 376
Top = 56
Width = 41
Height = 41
OnDragOver = ImagePalette8DragOver
OnEndDrag = ImagePalette8EndDrag
OnMouseDown = ImagePalette8MouseDown
end
object ButtonSauveTCO: TButton
Left = 1006
Left = 1016
Top = 48
Width = 92
Height = 33
@@ -730,7 +752,7 @@ object FormTCO: TFormTCO
OnClick = ButtonSauveTCOClick
end
object ButtonRedessine: TButton
Left = 1006
Left = 1016
Top = 8
Width = 92
Height = 33
@@ -758,7 +780,7 @@ object FormTCO: TFormTCO
OnClick = Button2Click
end
object ButtonConfigTCO: TButton
Left = 1006
Left = 1016
Top = 88
Width = 92
Height = 33
@@ -768,8 +790,8 @@ object FormTCO: TFormTCO
OnClick = ButtonConfigTCOClick
end
object ButtonSimu: TButton
Left = 864
Top = 80
Left = 760
Top = 136
Width = 113
Height = 25
Caption = 'Simu canton occup'#233
@@ -777,7 +799,7 @@ object FormTCO: TFormTCO
OnClick = ButtonSimuClick
end
object ButtonMasquer: TButton
Left = 1006
Left = 1016
Top = 128
Width = 92
Height = 33
@@ -948,7 +970,7 @@ object FormTCO: TFormTCO
end
end
object buttonRaz: TButton
Left = 902
Left = 912
Top = 128
Width = 92
Height = 33
@@ -969,8 +991,8 @@ object FormTCO: TFormTCO
end
end
object ButtonAfficheBandeau: TButton
Left = 1060
Top = 465
Left = 1070
Top = 415
Width = 57
Height = 33
Anchors = [akRight, akBottom]
+1284 -496
View File
File diff suppressed because it is too large Load Diff
Binary file not shown.
BIN
View File
Binary file not shown.
+39 -34
View File
@@ -19,7 +19,7 @@ object FormPlace: TFormPlace
PixelsPerInch = 96
TextHeight = 13
object Label1: TLabel
Left = 32
Left = 40
Top = 8
Width = 229
Height = 20
@@ -123,22 +123,13 @@ object FormPlace: TFormPlace
Font.Style = [fsBold]
ParentFont = False
end
object Buttonferme: TButton
Left = 16
Top = 416
Width = 75
Height = 25
Caption = 'Fermer'
TabOrder = 0
OnClick = ButtonfermeClick
end
object ButtonInitAig: TButton
Left = 16
Top = 248
Width = 273
Height = 25
Caption = 'Positionner les aiguillages en position initiale'
TabOrder = 1
TabOrder = 0
OnClick = ButtonInitAigClick
end
object ButtonSauve: TButton
@@ -146,8 +137,13 @@ object FormPlace: TFormPlace
Top = 376
Width = 273
Height = 25
Hint =
'Enregistre la configuration de placement dans le fichier de conf' +
'iguration'
Caption = 'Enregistrer la configuration de placement'
TabOrder = 2
ParentShowHint = False
ShowHint = True
TabOrder = 1
OnClick = ButtonSauveClick
end
object Edit1: TEdit
@@ -158,7 +154,7 @@ object FormPlace: TFormPlace
Hint = 'D'#233'tecteur recevant le train 1'
ParentShowHint = False
ShowHint = True
TabOrder = 3
TabOrder = 2
OnChange = Edit1Change
end
object Edit2: TEdit
@@ -169,7 +165,7 @@ object FormPlace: TFormPlace
Hint = 'D'#233'tecteur recevant le train 2'
ParentShowHint = False
ShowHint = True
TabOrder = 4
TabOrder = 3
OnChange = Edit2Change
end
object Edit3: TEdit
@@ -180,7 +176,7 @@ object FormPlace: TFormPlace
Hint = 'D'#233'tecteur recevant le train 3'
ParentShowHint = False
ShowHint = True
TabOrder = 5
TabOrder = 4
OnChange = Edit3Change
end
object Edit4: TEdit
@@ -191,7 +187,7 @@ object FormPlace: TFormPlace
Hint = 'D'#233'tecteur recevant le train 4'
ParentShowHint = False
ShowHint = True
TabOrder = 6
TabOrder = 5
OnChange = Edit4Change
end
object Edit5: TEdit
@@ -202,7 +198,7 @@ object FormPlace: TFormPlace
Hint = 'D'#233'tecteur recevant le train 5'
ParentShowHint = False
ShowHint = True
TabOrder = 7
TabOrder = 6
OnChange = Edit5Change
end
object Edit6: TEdit
@@ -213,7 +209,7 @@ object FormPlace: TFormPlace
Hint = 'D'#233'tecteur recevant le train 6'
ParentShowHint = False
ShowHint = True
TabOrder = 8
TabOrder = 7
OnChange = Edit6Change
end
object ButtonPlace: TButton
@@ -222,7 +218,7 @@ object FormPlace: TFormPlace
Width = 273
Height = 25
Caption = 'Placer les trains sur les d'#233'tecteurs ci-dessus'
TabOrder = 9
TabOrder = 8
OnClick = ButtonPlaceClick
end
object ButtonLanceRoutage: TButton
@@ -237,7 +233,7 @@ object FormPlace: TFormPlace
Font.Name = 'MS Sans Serif'
Font.Style = [fsBold]
ParentFont = False
TabOrder = 10
TabOrder = 9
OnClick = ButtonLanceRoutageClick
end
object Button1: TButton
@@ -246,7 +242,7 @@ object FormPlace: TFormPlace
Width = 81
Height = 25
Caption = 'Config trains'
TabOrder = 11
TabOrder = 10
OnClick = Button1Click
end
object ButtonArretroutage: TButton
@@ -255,7 +251,7 @@ object FormPlace: TFormPlace
Width = 273
Height = 25
Caption = 'Arr'#234't du roulage'
TabOrder = 12
TabOrder = 11
OnClick = ButtonArretroutageClick
end
object CheckInverse1: TCheckBox
@@ -267,7 +263,7 @@ object FormPlace: TFormPlace
Caption = 'sens inverse'
ParentShowHint = False
ShowHint = True
TabOrder = 13
TabOrder = 12
OnClick = CheckInverse1Click
end
object CheckInverse2: TCheckBox
@@ -279,7 +275,7 @@ object FormPlace: TFormPlace
Caption = 'sens inverse'
ParentShowHint = False
ShowHint = True
TabOrder = 14
TabOrder = 13
OnClick = CheckInverse2Click
end
object CheckInverse3: TCheckBox
@@ -291,7 +287,7 @@ object FormPlace: TFormPlace
Caption = 'sens inverse'
ParentShowHint = False
ShowHint = True
TabOrder = 15
TabOrder = 14
OnClick = CheckInverse3Click
end
object CheckInverse4: TCheckBox
@@ -303,7 +299,7 @@ object FormPlace: TFormPlace
Caption = 'sens inverse'
ParentShowHint = False
ShowHint = True
TabOrder = 16
TabOrder = 15
OnClick = CheckInverse4Click
end
object CheckInverse5: TCheckBox
@@ -315,7 +311,7 @@ object FormPlace: TFormPlace
Caption = 'sens inverse'
ParentShowHint = False
ShowHint = True
TabOrder = 17
TabOrder = 16
OnClick = CheckInverse5Click
end
object CheckInverse6: TCheckBox
@@ -327,7 +323,7 @@ object FormPlace: TFormPlace
Caption = 'sens inverse'
ParentShowHint = False
ShowHint = True
TabOrder = 18
TabOrder = 17
OnClick = CheckInverse6Click
end
object EditDir1: TEdit
@@ -338,7 +334,7 @@ object FormPlace: TFormPlace
Hint = 'D'#233'tecteur suivant vers lequel doit se diriger le train 1'
ParentShowHint = False
ShowHint = True
TabOrder = 19
TabOrder = 18
OnChange = EditDir1Change
end
object EditDir2: TEdit
@@ -349,7 +345,7 @@ object FormPlace: TFormPlace
Hint = 'D'#233'tecteur suivant vers lequel doit se diriger le train 2'
ParentShowHint = False
ShowHint = True
TabOrder = 20
TabOrder = 19
OnChange = EditDir2Change
end
object EditDir3: TEdit
@@ -360,7 +356,7 @@ object FormPlace: TFormPlace
Hint = 'D'#233'tecteur suivant vers lequel doit se diriger le train 3'
ParentShowHint = False
ShowHint = True
TabOrder = 21
TabOrder = 20
OnChange = EditDir3Change
end
object EditDir4: TEdit
@@ -371,7 +367,7 @@ object FormPlace: TFormPlace
Hint = 'D'#233'tecteur suivant vers lequel doit se diriger le train 4'
ParentShowHint = False
ShowHint = True
TabOrder = 22
TabOrder = 21
OnChange = EditDir4Change
end
object EditDir5: TEdit
@@ -382,7 +378,7 @@ object FormPlace: TFormPlace
Hint = 'D'#233'tecteur suivant vers lequel doit se diriger le train 5'
ParentShowHint = False
ShowHint = True
TabOrder = 23
TabOrder = 22
OnChange = EditDir5Change
end
object EditDir6: TEdit
@@ -393,7 +389,16 @@ object FormPlace: TFormPlace
Hint = 'D'#233'tecteur suivant vers lequel doit se diriger le train 6'
ParentShowHint = False
ShowHint = True
TabOrder = 24
TabOrder = 23
OnChange = EditDir6Change
end
object BitBtn1: TBitBtn
Left = 16
Top = 416
Width = 73
Height = 25
TabOrder = 24
OnClick = BitBtn1Click
Kind = bkClose
end
end
+536 -520
View File
File diff suppressed because it is too large Load Diff
BIN
View File
Binary file not shown.
+2 -2
View File
@@ -23,8 +23,8 @@ var
Lance_verif : integer;
verifVersion,notificationVersion : boolean;
Const Version='5.6'; // sert à la comparaison de la version publiée
SousVersion=' '; // en cas d'absence de sous version mettre un espace
Const Version='5.7'; // sert à la comparaison de la version publiée
SousVersion=' '; // A B C ... en cas d'absence de sous version mettre un espace
implementation
+6
View File
@@ -150,5 +150,11 @@ version 5.51 : Renforcement de la v
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.
Correction d'un bug sur les trackbar du TCO sous Windows 10/11
version 5.7 : Glisser-déposer du TCO avec les icônes de placement.
Vérification des incompatibilités de placement des icônes du TCO.
Gestion des passages à niveau par comptage/décomptage des trains.