@@ -43,7 +43,8 @@ TBlkNavSettings = record
4343
4444 // stav bloku Nav
4545 TBlkNavStav = record
46- ZacatekVolba:TBlkNavVolba; // nazatek volby jidni cesty
46+ ZacatekVolba:TBlkNavVolba; // zacatek volby jidni cesty
47+ ZacatekAB:Boolean; // jestli je zacatek volby JC v rezimu AB
4748 Navest:Integer; // aktualni navest dle kodu SCom; pokud je vypla komunikace, -1
4849 cilova_navest:Integer; // navest, ktera ma byt nastavena
4950 navest_old:Integer; // behem staveni obsahuje byvalou navest
@@ -77,6 +78,7 @@ TBlkNav = class(TBlk)
7778 // defaultni stav
7879 _def_Nav_stav:TBlkNavStav = (
7980 ZacatekVolba : none;
81+ ZacatekAB : false;
8082 Navest : -1 ;
8183 ABJC : nil ;
8284 ZAM : false;
@@ -231,6 +233,7 @@ TBlkNav = class(TBlk)
231233 // stavove promenne
232234 property Navest:Integer read NavStav.Navest write mSetNavest;
233235 property ZacatekVolba:TBlkNavVolba read NavStav.ZacatekVolba write SetZacatekVolba;
236+ property ZacatekAB:Boolean read NavStav.ZacatekAB;
234237 property AB:boolean read GetAB write SetAB;
235238 property ABJC:TJC read NavStav.ABJC write SetABJC;
236239 property ZAM:boolean read NavStav.ZAM write SetZAM;
@@ -849,7 +852,7 @@ procedure TBlkNav.SetABJC(ab:TJC);
849852procedure TBlkNav.SetAB (ab:boolean);
850853begin
851854 if (ab) then
852- raise EInvalidOperation.Create(' You can only disable AB via SetAB !' );
855+ raise EInvalidOperation.Create(' You can only enable AB via SetABJC !' );
853856
854857 if (Self.AB and (not ab)) then
855858 Self.ABJC := nil ;
@@ -859,6 +862,8 @@ procedure TBlkNav.SetZacatekVolba(typ:TBlkNavVolba);
859862begin
860863 if (Self.NavStav.ZacatekVolba = typ) then Exit();
861864 Self.NavStav.ZacatekVolba := typ;
865+ if (typ = TBlkNavVolba.none) then
866+ Self.NavStav.ZacatekAB := false;
862867 Self.Change();
863868end ;
864869
@@ -911,6 +916,7 @@ procedure TBlkNav.MenuVCStartClick(SenderPnl:TIdContext; SenderOR:TObject);
911916 TOR(SenderOR).ClearVb(); // smazeme dosavadni seznam variantnich bodu
912917 end ;
913918 Self.ZacatekVolba := TBlkNavVolba.VC;
919+ Self.NavStav.ZacatekAB := false;
914920end ;
915921
916922procedure TBlkNav.MenuVCStopClick (SenderPnl:TIdContext; SenderOR:TObject);
@@ -928,6 +934,7 @@ procedure TBlkNav.MenuPCStartClick(SenderPnl:TIdContext; SenderOR:TObject);
928934 Blk := BLky.GeTBlkNavZacatekVolba((SenderOR as TOR).id);
929935 if (Blk <> nil ) then (Blk as TBlkNav).ZacatekVolba := TBlkNavVolba.none;
930936 Self.ZacatekVolba := TBlkNavVolba.PC;
937+ Self.NavStav.ZacatekAB := false;
931938end ;
932939
933940procedure TBlkNav.MenuPCStopClick (SenderPnl:TIdContext; SenderOR:TObject);
@@ -995,12 +1002,20 @@ procedure TBlkNav.MenuRCClick(SenderPnl:TIdContext; SenderOR:TObject);
9951002
9961003procedure TBlkNav.MenuABStartClick (SenderPnl:TIdContext; SenderOR:TObject);
9971004begin
998- Self.ABJC := Self.DNjc;
1005+ if (Self.DNjc <> nil ) then
1006+ Self.ABJC := Self.DNjc
1007+ else begin
1008+ Self.MenuVCStartClick(SenderPnl, SenderOR);
1009+ Self.NavStav.ZacatekAB := true;
1010+ end ;
9991011end ;
10001012
10011013procedure TBlkNav.MenuABStopClick (SenderPnl:TIdContext; SenderOR:TObject);
10021014begin
1003- Self.ABJC := nil ;
1015+ if (Self.ABJC <> nil ) then
1016+ Self.ABJC := nil
1017+ else
1018+ Self.MenuVCStopClick(SenderPnl, SenderOR);
10041019end ;
10051020
10061021procedure TBlkNav.MenuLockClick (SenderPnl:TIdContext; SenderOR:TObject);
@@ -1179,12 +1194,16 @@ function TBlkNav.ShowPanelMenu(SenderPnl:TIdContext; SenderOR:TObject; rights:TO
11791194 if (Self.NavSettings.zamknuto) then Exit();
11801195
11811196 if (((((Self.DNjc = nil ) or (Self.DNjc.RozpadRuseniBlok >= 1 )) and
1182- (JCDb.FindOnlyStaveniJC(Self.id) = -1 ) and (Self.Navest <> 8 ) and (not Self.AB))
1197+ (JCDb.FindOnlyStaveniJC(Self.id) = -1 ) and (Self.Navest <> _NAV_PRIVOL ) and (not Self.AB))
11831198 or ((SenderOR as TOR).stack.volba = VZ)) and
11841199 (not Self.autoblok)) then
11851200 begin
11861201 case (Self.NavStav.ZacatekVolba) of
1187- TBlkNavVolba.VC : Result := Result + ' VC<,' ;
1202+ TBlkNavVolba.VC :
1203+ if (Self.ZacatekAB) then
1204+ Result := Result + ' AB<,'
1205+ else
1206+ Result := Result + ' VC<,' ;
11881207 TBlkNavVolba.PC : Result := Result + ' PC<,' ;
11891208 TBlkNavVolba.NC : Result := Result + ' PN<,' ;
11901209 TBlkNavVolba.PP : Result := Result + ' PP<,' ;
@@ -1193,7 +1212,11 @@ function TBlkNav.ShowPanelMenu(SenderPnl:TIdContext; SenderOR:TObject; rights:TO
11931212 if (Self.NavRel.SymbolType = TBlkNavSymbol.hlavni) then
11941213 begin
11951214 if ((JCDb.IsAnyVCAvailable(Self)) or ((SenderOR as TOR).stack.volba = VZ)) then // i kdyz neni zadna VC, schvalne umoznime PN
1215+ begin
11961216 Result := Result + ' VC>,' ;
1217+ if (Self.DNjc = nil ) then
1218+ Result := Result + ' AB>,' ;
1219+ end ;
11971220 Result := Result + ' !PN>,' ;
11981221 end ;
11991222 if (JCDb.IsAnyPC(Self)) then
@@ -1207,20 +1230,20 @@ function TBlkNav.ShowPanelMenu(SenderPnl:TIdContext; SenderOR:TObject; rights:TO
12071230 Result := Result + ' -,' ;
12081231 end ;
12091232
1210- if ((Self.Navest > 0 ) and (not Self.autoblok)) then
1233+ if ((Self.Navest > _NAV_STUJ ) and (not Self.autoblok)) then
12111234 Result := Result + ' STUJ,' ;
12121235
1213- if (Self.Navest = 8 ) then
1236+ if (Self.Navest = _NAV_PRIVOL ) then
12141237 Result := Result + ' !PPN,' ;
12151238
12161239 if (Self.DNjc <> nil ) then
12171240 begin
12181241 // bud je cesta primo postavena, nebo je zrusena, ale podminky jsou vyhovujici pro DN
12191242 // plati jen pro postavenou JC
1220- if ((not Self.ZAM) and (Self.Navest = 0 ) and (Self.DNjc.CanDN())) then
1243+ if ((not Self.ZAM) and (Self.Navest = _NAV_STUJ ) and (Self.DNjc.CanDN())) then
12211244 Result := Result + ' DN,' ;
12221245
1223- if (((Self.Navest > 0 ) or (Self.DNjc.CanDN()) or (Self.DNjc.RozpadBlok < 1 ))
1246+ if (((Self.Navest > _NAV_STUJ ) or (Self.DNjc.CanDN()) or (Self.DNjc.RozpadBlok < 1 ))
12241247 and (not Self.RCinProgress())) then
12251248 begin
12261249 Result := Result + ' RC,' ;
@@ -1235,13 +1258,12 @@ function TBlkNav.ShowPanelMenu(SenderPnl:TIdContext; SenderOR:TObject; rights:TO
12351258 if (Self.AB) then
12361259 Result := Result + ' AB<,' ;
12371260
1238- // 7=ZAM
12391261 if (Self.NavStav.ZAM) then
12401262 Result := Result + ' ZAM<,'
1241- else
1263+ else
12421264 Result := Result + ' ZAM>,' ;
12431265
1244- if ((Self.Navest <> 8 ) and (Self.CanIDoRNZ)) then
1266+ if ((Self.Navest <> _NAV_PRIVOL ) and (Self.CanIDoRNZ)) then
12451267 Result := Result + ' !RNZ,' ;
12461268
12471269 // DEBUG: jednoduche nastaveni IR pri knihovne simulator
0 commit comments