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