Compare commits

...

3 Commits

Author SHA1 Message Date
Anatoly
d7204c6898 First_commit 2025-05-13 16:51:40 +03:00
ShevaIV
95ad6da250 fix gitignore 2025-05-13 16:40:33 +03:00
ShevaIV
a46a2fe9a1 Add 2025-05-13 16:21:40 +03:00
31 changed files with 3284 additions and 544 deletions

1
.gitignore vendored
View File

@ -1,6 +1,7 @@
# Delphi # Delphi
__history/ __history/
*.~* *.~*
*.ddp
*.scc *.scc
*.pdf *.pdf
*.dcu *.dcu

17
123.optset Normal file
View File

@ -0,0 +1,17 @@
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<DCC_CodePage>1251</DCC_CodePage>
<BRCC_IncludePath>C:\Projects\СКС\POWERCAD30\UNITS;$(BRCC_IncludePath)</BRCC_IncludePath>
<DCC_GenerateStackFrames>true</DCC_GenerateStackFrames>
<DCC_IntegerOverflowCheck>false</DCC_IntegerOverflowCheck>
<DCC_DebugInformation>true</DCC_DebugInformation>
</PropertyGroup>
<ProjectExtensions>
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
<Borland.ProjectType>OptionSet</Borland.ProjectType>
<BorlandProject>
<Delphi.Personality/>
</BorlandProject>
<ProjectFileVersion>12</ProjectFileVersion>
</ProjectExtensions>
</Project>

135
ExpertSCS.dof Normal file
View File

@ -0,0 +1,135 @@
[FileVersion]
Version=6.0
[Compiler]
A=8
B=0
C=1
D=1
E=0
F=0
G=1
H=1
I=0
J=1
K=0
L=1
M=0
N=1
O=0
P=1
Q=0
R=0
S=0
T=0
U=1
V=1
W=0
X=1
Y=1
Z=1
ShowHints=0
ShowWarnings=0
UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
[Linker]
MapFile=0
OutputObjs=0
ConsoleApp=1
DebugInfo=0
RemoteSymbols=0
MinStackSize=16384
MaxStackSize=1048576
ImageBase=4194304
ExeDescription=
[Directories]
OutputDir=D:\Program Files\Ýêñïåðò-ÑÊÑ 1.8.0
UnitOutputDir=DCU
PackageDLLOutputDir=
PackageDCPOutputDir=
SearchPath=$(DELPHI)\Lib\Debug
Packages=vcl;rtl;dbrtl;adortl;vcldb;vclx;bdertl;dsnap;tee;VclSmp;vclshlctrls;vclie;xmlrtl;inet;inetdbbde;inetdbxpress;ip4000clientvcl6;ip4000v6;db211d6r;FR6;cds;vcldbx;visualdbclx;dsnapcrba;dsnapcon;dbexpress;dss;webdsnap;bdecds;dbxcds;soaprtl;inetdb;websnap;ibxpress;indy;dclOffice2k;qrpt;nmfast;teeqr;ip4000word2000vcl6;elmlgnD6;elpackD6;elpkdbD6;elpproD6;elmltgD6;visualclx;Rz30Ctls60;Rz30DBCtls60;xmlide
Conditionals=3D
DebugSourceDirs=
UsePackages=0
[Parameters]
RunParams=
HostApplication=
Launcher=
UseLauncher=0
DebugCWD=
[Version Info]
IncludeVerInfo=0
AutoIncBuild=0
MajorVer=1
MinorVer=0
Release=0
Build=0
Debug=0
PreRelease=0
Special=0
Private=0
DLL=0
Locale=1049
CodePage=1251
[Version Info Keys]
CompanyName=ÝêñïåðòÑîôò
FileDescription=
FileVersion=1.7.1.1827
InternalName=
LegalCopyright=
LegalTrademarks=
OriginalFilename=
ProductName=Ýêñïåðò-ÑÊÑ
ProductVersion=2.3.0
Comments=
[Excluded Packages]
c:\program files\borland\delphi6\Bin\dclclxdb60.bpl=Borland CLX Database Components
C:\Program Files\Borland\Delphi6\Bin\dclclxstd60.bpl=Borland CLX Standard Components
c:\program files\borland\delphi6\Bin\dclite60.bpl=Borland Integrated Translation Environment
c:\program files\borland\delphi6\Bin\dclsoap60.bpl=Borland SOAP Components
D:\Program Files\CADE Control\Tutorial\Delphi\CADEPackage.bpl=CADE Control Component
C:\Program Files\Borland\Delphi6\Bin\dclaxserver60.bpl=Microsoft Office 97 Sample Automation Server Wrapper Components
D:\Program Files\KeverIT\EzPlanIT\Bpl\EzBasicDs_D6.bpl=EzPlan-IT's basic components
D:\Program Files\KeverIT\EzPlanIT\Bpl\EzBasic_D6.bpl=EzPlan-IT's basic components
D:\Program Files\KeverIT\EzPlanIT\Bpl\EZPlanitDs_D6.bpl=EzPlan-IT's main components
D:\Program Files\KeverIT\EzPlanIT\Bpl\EZPlanIT_D6.bpl=EzPlan-IT's main components
[HistoryLists\hlConditionals]
Count=30
Item0=3D
Item1=FINAL_SCS; SCS_PE; 3D
Item2=FINAL_SCS; SCS_PE; TRIAL_SCS; 3D
Item3=FINAL_SCS; TRIAL_SCS; 3D; PROCAT_SCS
Item4=FINAL_SCS; TELECOM; 3D
Item5=FINAL_SCS; TELECOM; FLASH_SCS; 3D
Item6=FINAL_SCS; TELECOM; TRIAL_SCS; 3D
Item7=FINAL_SCS; TELECOM; SCS_RF; 3D
Item8=FINAL_SCS; TELECOM; SCS_RF; FLASH_SCS; 3D
Item9=FINAL_SCS; TELECOM; TRIAL_SCS; SCS_RF; 3D
Item10=FINAL_SCS; TELECOM; TRIAL_SCS; SCS_RF; 3D; PROCAT_SCS
Item11=FINAL_SCS; TRIAL_SCS; SCS_RF; 3D; PROCAT_SCS
Item12=FINAL_SCS; SCS_RF; 3D
Item13=FINAL_SCS; SCS_RF; FLASH_SCS; 3D
Item14=FINAL_SCS; TRIAL_SCS; SCS_RF; 3D
Item15=FINAL_SCS; FLASH_SCS; 3D
Item16=FINAL_SCS;3D
Item17=FINAL_SCS; TRIAL_SCS; 3D
Item18=FINAL_SCS; SCS_PE; TRIAL_SCS; 3D; PROCAT_SCS; SCS_PANDUIT
Item19=3D; ES_GRAPH_SC
Item20=FINAL_SCS; 3D; ES_GRAPH_SC
Item21=FINAL_SCS; SCS_SPA; 3D
Item22=SCS_SPA; 3D
Item23=FINAL_SCS; 3D
Item24=FINAL_SCS;
Item25=FINAL_SCS; 3D; MSWindows
Item26=FINAL_SCS
Item27=FINAL_SCS; SCS_RF; FLASH_SCS
Item28=FINAL_SCS; SCS_RF
Item29=FINAL_SCS; FLASH_SCS
[HistoryLists\hlUnitAliases]
Count=1
Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE;
[HistoryLists\hlSearchPath]
Count=1
Item0=$(DELPHI)\Lib\Debug
[HistoryLists\hlOutputDirectorry]
Count=1
Item0=..\

View File

@ -1746,6 +1746,7 @@ begin
ConvertCoord(pp2.x,pp2.y,pp2.z); ConvertCoord(pp2.x,pp2.y,pp2.z);
rgn1 := CreateEllipticRgn(Round(pp1.x), Round(pp1.y), Round(pp2.x), Round(pp2.y)); rgn1 := CreateEllipticRgn(Round(pp1.x), Round(pp1.y), Round(pp2.x), Round(pp2.y));
CombineRgn(Rgn, Rgn, Rgn1, RGN_XOR); CombineRgn(Rgn, Rgn, Rgn1, RGN_XOR);
DeleteObject(Rgn1); // Tolik 14/01/2025 --
end; end;
end end
else else

View File

@ -294,10 +294,6 @@ object frm3D: Tfrm3D
FixedDimension = 19 FixedDimension = 19
object TabSheet1: TRzTabSheet object TabSheet1: TRzTabSheet
Caption = #1052#1086#1076#1077#1083#1100 Caption = #1052#1086#1076#1077#1083#1100
ExplicitLeft = 0
ExplicitTop = 0
ExplicitWidth = 0
ExplicitHeight = 0
object panObjects: TPanel object panObjects: TPanel
Left = 0 Left = 0
Top = 0 Top = 0
@ -335,12 +331,11 @@ object frm3D: Tfrm3D
TabOrder = 0 TabOrder = 0
TabStyle = tsRoundCorners TabStyle = tsRoundCorners
OnTabClick = pcTreeTabClick OnTabClick = pcTreeTabClick
ExplicitHeight = 21
FixedDimension = 19 FixedDimension = 19
object TabArchModel: TRzTabSheet object TabArchModel: TRzTabSheet
Caption = #1040#1088#1093'. '#1084#1086#1076#1077#1083#1100 Caption = #1040#1088#1093'. '#1084#1086#1076#1077#1083#1100
ExplicitLeft = 0 ExplicitLeft = 0
ExplicitTop = 1 ExplicitTop = 0
ExplicitWidth = 0 ExplicitWidth = 0
ExplicitHeight = 0 ExplicitHeight = 0
object cxGroupBox1: TcxGroupBox object cxGroupBox1: TcxGroupBox
@ -424,16 +419,10 @@ object frm3D: Tfrm3D
000000000000000000000001067200650072006500720065002C000000000000 000000000000000000000001067200650072006500720065002C000000000000
0000000000FFFFFFFFFFFFFFFF00000000000000000000000001077200650072 0000000000FFFFFFFFFFFFFFFF00000000000000000000000001077200650072
007200650072006500} 007200650072006500}
ExplicitWidth = 0
ExplicitHeight = 64
end end
end end
object TabScsModel: TRzTabSheet object TabScsModel: TRzTabSheet
Caption = #1057#1050#1057' '#1084#1086#1076#1077#1083#1100 Caption = #1057#1050#1057' '#1084#1086#1076#1077#1083#1100
ExplicitLeft = 0
ExplicitTop = 1
ExplicitWidth = 0
ExplicitHeight = 0
object cxGroupBox2: TcxGroupBox object cxGroupBox2: TcxGroupBox
Left = 0 Left = 0
Top = 0 Top = 0
@ -515,8 +504,14 @@ object frm3D: Tfrm3D
000000000000000000000001067200650072006500720065002C000000000000 000000000000000000000001067200650072006500720065002C000000000000
0000000000FFFFFFFFFFFFFFFF00000000000000000000000001077200650072 0000000000FFFFFFFFFFFFFFFF00000000000000000000000001077200650072
007200650072006500} 007200650072006500}
ExplicitWidth = 0 end
ExplicitHeight = 64 object DuplicateNodeTree: TTreeView
Left = 160
Top = 80
Width = 121
Height = 97
Indent = 19
TabOrder = 2
end end
end end
end end
@ -536,7 +531,7 @@ object frm3D: Tfrm3D
ExplicitLeft = 0 ExplicitLeft = 0
ExplicitTop = 0 ExplicitTop = 0
ExplicitWidth = 0 ExplicitWidth = 0
ExplicitHeight = 574 ExplicitHeight = 0
object Panel1: TPanel object Panel1: TPanel
Left = 0 Left = 0
Top = 0 Top = 0
@ -3410,7 +3405,7 @@ object frm3D: Tfrm3D
Left = 100 Left = 100
Top = 57 Top = 57
Bitmap = { Bitmap = {
494C01013A00B000140210001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 494C01013A00B0006C0210001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
000000000000360000002800000040000000F0000000010020000000000000F0 000000000000360000002800000040000000F0000000010020000000000000F0
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000

File diff suppressed because it is too large Load Diff

BIN
REPORTS/RCablePaths.frf Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

22
SCS_RF.optset Normal file
View File

@ -0,0 +1,22 @@
 <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<DCC_ExeOutput>C:\Program Files\Эксперт-СКС 1.8.0\</DCC_ExeOutput>
<DCC_DebugDCUs>false</DCC_DebugDCUs>
<DCC_LocalDebugSymbols>false</DCC_LocalDebugSymbols>
<DCC_Define>SCS_RF;PROCAT_SCS;FINAL_SCS;$(DCC_Define)</DCC_Define>
<DCC_CodePage>1251</DCC_CodePage>
<DCC_IntegerOverflowCheck>false</DCC_IntegerOverflowCheck>
<DCC_AssertionsAtRuntime>false</DCC_AssertionsAtRuntime>
<DCC_ImportedDataReferences>false</DCC_ImportedDataReferences>
<DCC_DebugInfoInExe>false</DCC_DebugInfoInExe>
<DCC_SymbolReferenceInfo>0</DCC_SymbolReferenceInfo>
</PropertyGroup>
<ProjectExtensions>
<Borland.Personality>Delphi.Personality.12</Borland.Personality>
<Borland.ProjectType>OptionSet</Borland.ProjectType>
<BorlandProject>
<Delphi.Personality/>
</BorlandProject>
<ProjectFileVersion>12</ProjectFileVersion>
</ProjectExtensions>
</Project>

View File

@ -356,6 +356,8 @@ type
F3D_Length: Double; F3D_Length: Double;
FUse3DSize: Boolean; FUse3DSize: Boolean;
HasPipeElements: Boolean; // äëÿ ïóñòîãî êîííåêòîðà, åñëè íà íåì áóäóò ðèñîâàòüñÿ ïîâîðîòû òðóá, ãîôðû è ò.ï HasPipeElements: Boolean; // äëÿ ïóñòîãî êîííåêòîðà, åñëè íà íåì áóäóò ðèñîâàòüñÿ ïîâîðîòû òðóá, ãîôðû è ò.ï
FRelatedLines: TList; // Tolik 03/04/2025 -- òðàññû, ïî êîòîðûì ðèñóåòñÿ ÷àñòü òðóáíîãî ñîåäèíåíèÿ
FLength: Double; // Tolik 03/04/2025 äëèíà ñîåäèíåíèÿ
// //
//Tolik -- 24//09/2018 -- //Tolik -- 24//09/2018 --
//constructor Create(aFaces: TList; aSCSObject: TConnectorObject; aParent: T3DModel); //constructor Create(aFaces: TList; aSCSObject: TConnectorObject; aParent: T3DModel);
@ -535,6 +537,7 @@ type
function ConverResultToUom(aResult: Double; aIzm: String): Double; // Tolik 18/10/2018 -- function ConverResultToUom(aResult: Double; aIzm: String): Double; // Tolik 18/10/2018 --
Function GetPoint(aLine: TOrthoLine; PointNum: Integer; dist: Double): PDoublePoint; // Tolik 18/10/2018 -- Function GetPoint(aLine: TOrthoLine; PointNum: Integer; dist: Double): PDoublePoint; // Tolik 18/10/2018 --
Function GetPointA(apoint1, aPoint2: TDoublePoint; dist: Double): PDoublePoint; // Tolik 12/10/2025 --
const const
{TODO} {TODO}
FDeltaZ: Double = 0.030; FDeltaZ: Double = 0.030;
@ -708,8 +711,8 @@ function ConverResultToUom(aResult: Double; aIzm: String): Double;
umFoot : CadUomIzm := 0.3; umFoot : CadUomIzm := 0.3;
end; end;
//Result := aResult * (CadUomIzm/UomIzm); Result := aResult * (CadUomIzm/UomIzm);
Result := aResult * (UomIzm/CadUomIzm); //Result := aResult * (UomIzm/CadUomIzm);
end; end;
end; end;
@ -724,7 +727,6 @@ function ConverResultToUom(aResult: Double; aIzm: String): Double;
PointsAngle: Double; PointsAngle: Double;
Conn1,Conn2: TConnectorObject; Conn1,Conn2: TConnectorObject;
MaxX, MaxY, MinX, MinY, DistToPoint: Double; MaxX, MaxY, MinX, MinY, DistToPoint: Double;
begin begin
Result := Nil; Result := Nil;
New(Result); New(Result);
@ -796,6 +798,37 @@ function ConverResultToUom(aResult: Double; aIzm: String): Double;
//Result.z := MetreToUom((p1.z + ((Dist) * (UOMToMetre(1000 / GCadForm.PCad.MapScale)) * koefz))/(UOMToMetre(1000 / GCadForm.PCad.MapScale))); //Result.z := MetreToUom((p1.z + ((Dist) * (UOMToMetre(1000 / GCadForm.PCad.MapScale)) * koefz))/(UOMToMetre(1000 / GCadForm.PCad.MapScale)));
end; end;
// Äëÿ ðàñ÷åòà òî÷åê ïîïåðå÷íîé îòðèñîâêè ñåòêè (åñëè ýòî, íàïðèìåð, ïðîâîëî÷íûé ëîòîê)
Function GetPointA(aPoint1, aPoint2: TDoublePoint; dist: Double): PDoublePoint; // Tolik 12/10/2025 --
var
p1, p2: TDoublePoint;
distx, disty, distz, koefx, koefy, koefz, LineLen: Double;
DistToPoint: Double;
begin
Result := Nil;
New(Result);
DistToPoint := Dist;
p1.x := aPoint1.x;
p1.y := aPoint1.y;
p1.z := UomToMetre(aPoint1.z) * (UOMToMetre(1000 / GCadForm.PCad.MapScale));
//p1.z := TConnectorObject(aLine.JoinConnector1).ActualZOrder[1];
p2.x := aPoint2.x;
p2.y := aPoint2.y;
p2.z := UomToMetre(aPoint2.z) * (UOMToMetre(1000 / GCadForm.PCad.MapScale));
LineLen := SQRT(SQR(P1.x - P2.x) + SQR(P1.y - P2.y) + SQR(P1.z - P2.z));
koefx := (P2.x - P1.x)/LineLen;
koefy := (P2.y - P1.y)/LineLen;
koefz := (P2.z - P1.z)/LineLen;
Result.x := P1.x + (DistTopoint * (UOMToMetre(1000 / GCadForm.PCad.MapScale)) * koefx);
Result.y := P1.y + (DistTopoint * (UOMToMetre(1000 / GCadForm.PCad.MapScale)) * koefy);
Result.z := MetreToUom(P1.z + DistTopoint * (UOMToMetre(1000 / GCadForm.PCad.MapScale)) * koefz)/(UOMToMetre(1000 / GCadForm.PCad.MapScale));
//Result.x := p1.x + ((Dist) * (UOMToMetre(1000 / GCadForm.PCad.MapScale)) * koefx);
end;
function GetTubeRadius(aSCSCompon: TSCSComponent): Double; function GetTubeRadius(aSCSCompon: TSCSComponent): Double;
var i : Integer; var i : Integer;
NBProp: TNBProperty; NBProp: TNBProperty;
@ -4426,7 +4459,7 @@ var
if Result.IndexOf(LineCatalog.ComponentReferences[i]) = -1 then if Result.IndexOf(LineCatalog.ComponentReferences[i]) = -1 then
begin begin
Result.Add(LineCatalog.ComponentReferences[i]); Result.Add(LineCatalog.ComponentReferences[i]);
break; //break;
end; end;
end; end;
end; end;
@ -4462,17 +4495,19 @@ var
Procedure CreatePipeElement(aConn: TConnectorObject); // Cable Procedure CreatePipeElement(aConn: TConnectorObject); // Cable
var i, j, k : Integer; var i, j, k : Integer;
PrevPipeRadius, PipeRadius: Double; MaxPipeRadius, PrevPipeRadius, PipeRadius: Double;
LineCatalog: TSCSCatalog; LineCatalog: TSCSCatalog;
LineComponent: TSCSComponent; LineComponent, LineComponent1: TSCSComponent;
LineList, TubeList: TList; LineList, TubeList: TList;
PipePoint, PrevPipePoint, addPoint: PDoublePoint; PipePoint, PrevPipePoint, addPoint: PDoublePoint;
apArray: T3DPointArray; apArray: T3DPointArray;
TubeLine: TOrthoLine; TubeLine, TubeLine1: TOrthoLine;
JoinedConn: TConnectorObject; JoinedConn: TConnectorObject;
CableList: TList; CableList: TList;
CableOffset: Double; CableOffset: Double;
ConnSide: integer;
exVals: Boolean;
//Tolik 12/11/2021 -- ïðîâåðêà íà íàëè÷èå â òî÷å÷íîì îáúåêòå ýëåìåíòà òðóáíîãî ñîåäèíåíèÿ //Tolik 12/11/2021 -- ïðîâåðêà íà íàëè÷èå â òî÷å÷íîì îáúåêòå ýëåìåíòà òðóáíîãî ñîåäèíåíèÿ
function CheckisPipeElement(aConnector: TConnectorObject): Boolean; function CheckisPipeElement(aConnector: TConnectorObject): Boolean;
@ -4508,6 +4543,8 @@ var
TubeList := TList.Create; TubeList := TList.Create;
PipeList := TList.Create; PipeList := TList.Create;
CableList:= TList.Create; CableList:= TList.Create;
PipePoint := nil;
PrevPipePoint := nil;
//Collect Lines //Collect Lines
//Tolik 12/11/2021 -- //Tolik 12/11/2021 --
//if aConn.ConnectorType = ct_Clear then //if aConn.ConnectorType = ct_Clear then
@ -4556,29 +4593,37 @@ var
for k := 0 to LineCatalog.ComponentReferences.Count - 1 do for k := 0 to LineCatalog.ComponentReferences.Count - 1 do
begin begin
LineComponent := LineCatalog.ComponentReferences[k]; LineComponent := LineCatalog.ComponentReferences[k];
{
if LineComponent.ComponentType.SysName = ctsnTube then if LineComponent.ComponentType.SysName = ctsnTube then
begin begin
LineList.Add(TOrthoLine(JoinedConn.JoinedOrthoLineslist[i])); LineList.Add(TOrthoLine(JoinedConn.JoinedOrthoLineslist[i]));
TubeList.Add(LineComponent); TubeList.Add(LineComponent);
break; break;
end; end
} else
begin
if isCableComponent(LineComponent) then if isCableComponent(LineComponent) then
if CableList.IndexOf(LineComponent) = - 1 then if CableList.IndexOf(LineComponent) = - 1 then
CableList.Add(LineComponent); CableList.Add(LineComponent);
end;
end; end;
end; end;
end; end;
end; end;
end; end;
(*
for i := 0 to CableList.Count - 1 do for i := 0 to CableList.Count - 1 do
begin begin
SetLength(apArray, 3); SetLength(apArray, 3);
TubeLine := TOrthoLine(LineList[0]); TubeLine := TOrthoLine(LineList[0]);
LineComponent := TSCSComponent(TubeList[0]); LineComponent := TSCSComponent(TubeList[0]);
PipeRadius := GetTubeRadius(LineComponent); PipeRadius := GetTubeRadius(LineComponent);
if PipeRadius = -1 then //Tolik 28/03/2025 -- åñëè íà çàäàí ðàäèóñ òðóáû - âûõîäèì
Exit;
PipeRadius := PipeRadius + PipeRadius /10;
PipePoint := nil; PipePoint := nil;
if aConn.ConnectorType = ct_Clear then if aConn.ConnectorType = ct_Clear then
begin begin
@ -4614,6 +4659,7 @@ var
TubeLine := TOrthoLine(LineList[0]); TubeLine := TOrthoLine(LineList[0]);
LineComponent := TSCSComponent(TubeList[0]); LineComponent := TSCSComponent(TubeList[0]);
PrevPipeRadius := GetTubeRadius(LineComponent); PrevPipeRadius := GetTubeRadius(LineComponent);
PrevPipeRadius := PrevPipeRadius + PrevPipeRadius /10;
if aConn.ConnectorType = ct_Clear then if aConn.ConnectorType = ct_Clear then
begin begin
if TConnectorObject(TubeLine.JoinConnector1).Id = aConn.ID then if TConnectorObject(TubeLine.JoinConnector1).Id = aConn.ID then
@ -4632,6 +4678,7 @@ var
TubeLine := TOrthoLine(LineList[i]); TubeLine := TOrthoLine(LineList[i]);
LineComponent := TSCSComponent(TubeList[j]); LineComponent := TSCSComponent(TubeList[j]);
PipeRadius := GetTubeRadius(LineComponent); PipeRadius := GetTubeRadius(LineComponent);
PipeRadius := PipeRadius + PipeRadius /10;
if PipeRadius <> -1 then // !!!! if PipeRadius <> -1 then // !!!!
begin begin
SetLength(apArray, 2); SetLength(apArray, 2);
@ -4803,9 +4850,438 @@ var
SetLength(apArray, 0); SetLength(apArray, 0);
end; end;
end; end;
*)
//Ñáðîñèòü òðàññû ñ òðóáàìè, ãäå íå óêàçàí äèàìåòð ñàìîé òðóáû
for i := LineList.Count - 1 downto 0 do
begin
LineComponent := TSCSComponent(TubeList[i]);
PipeRadius := GetTubeRadius(LineComponent);
if PipeRadius = -1 then
begin
LineList.Delete(i);
TubeList.Delete(i);
CableList.Delete(i);
end;
end;
if LineList.Count > 0 then
begin
if LineList.Count = 1 then //çàãëóøêà
begin
SetLength(apArray, 2);
TubeLine := TOrthoLine(LineList[0]);
LineComponent := TSCSComponent(TubeList[0]);
PipeRadius := GetTubeRadius(LineComponent);
PipeRadius := PipeRadius + PipeRadius /10;
PipePoint := nil;
if aConn.ConnectorType = ct_Clear then
begin
if TConnectorObject(TubeLine.JoinConnector1).Id = aConn.ID then
PipePoint := GetPoint(TubeLine, 1, PipeRadius)
else
PipePoint := GetPoint(TubeLine, 2, PipeRadius);
end
else
begin
if aConn.JoinedConnectorsList.IndexOf(TConnectorObject(TubeLine.JoinConnector1)) <> -1 then
PipePoint := GetPoint(TubeLine, 1, PipeRadius)
else
PipePoint := GetPoint(TubeLine, 2, PipeRadius)
end;
apArray[1].x := PipePoint.x;
apArray[1].y := PipePoint.y;
apArray[1].z := PipePoint.z;
DisPose(PipePoint); // 21/12/2019 -- Tolik
PipePoint := nil;
apArray[0].x := aConn.ap1.x;
apArray[0].y := aConn.ap1.y;
apArray[0].z := aConn.ActualZOrder[1];
x3DConnector := T3DConnector.Create(aFaces, xConn, Self, True);
x3DConnector.CollectConnector(aFaces, apArray);
x3DConnector.FPipeRadius := PipeRadius;
FScsObjects.Add(x3DConnector);
x3DConnector.FSCSObject.F3DObject := x3DConnector;
x3DConnector.FColor := ConvertWinColor(clGreen);
x3DConnector.FRelatedLines.Add(TubeLine);
x3DConnector.FLength := PipeRadius;
end
else // ñòûê äâóõ òðóá èëè êîëåíî
if LineList.Count = 2 then
begin
PipeRadius := GetTubeRadius(TSCSComponent(TubeList[0]));
PipeRadius := PipeRadius + PipeRadius /10;
PipePoint := nil;
PrevPipeRadius := GetTubeRadius(TSCSComponent(TubeList[1]));
PrevPipeRadius := PrevPipeRadius + PrevPipeRadius /10;
if CompareValue(PipeRadius, PrevPipeRadius) = 0 then // äâå òðàññû, òðóáà îäèíàêîâîãî äèàìåòðà
begin
SetLength(apArray, 3 );
if aConn.ConnectorType = ct_Clear then
begin
if TConnectorObject(TOrthoLine(LineList[0]).JoinConnector1).Id = aConn.ID then
PipePoint := GetPoint(TOrthoLine(LineList[0]), 1, PipeRadius)
else
PipePoint := GetPoint(TOrthoLine(LineList[0]), 2, PipeRadius);
if TConnectorObject(TOrthoLine(LineList[1]).JoinConnector1).Id = aConn.ID then
PrevPipePoint := GetPoint(TOrthoLine(LineList[1]), 1, PipeRadius)
else
PrevPipePoint := GetPoint(TOrthoLine(LineList[1]), 2, PipeRadius);
end
else
begin
if aConn.JoinedConnectorsList.IndexOf(TConnectorObject(TOrthoLine(LineList[0]).JoinConnector1)) <> -1 then
PipePoint := GetPoint(TOrthoLine(LineList[0]), 1, PipeRadius)
else
PipePoint := GetPoint(TOrthoLine(LineList[0]), 2, PipeRadius);
if aConn.JoinedConnectorsList.IndexOf(TConnectorObject(TOrthoLine(LineList[1]).JoinConnector1)) <> -1 then
PrevPipePoint := GetPoint(TOrthoLine(LineList[1]), 1, PipeRadius)
else
PrevPipePoint := GetPoint(TOrthoLine(LineList[1]), 2, PipeRadius);
end;
SetLength(apArray, 3);
apArray[0].x := PipePoint.x;
apArray[0].y := PipePoint.y;
apArray[0].z := PipePoint.z;
DisPose(PipePoint);
PipePoint := nil;
apArray[1].x := aConn.ap1.x;
apArray[1].y := aConn.ap1.y;
apArray[1].z := aConn.ActualZOrder[1];
apArray[2].x := PrevPipePoint.x;
apArray[2].y := PrevPipePoint.y;
apArray[2].z := PrevPipePoint.z;
Dispose(PrevPipePoint);
PrevPipePoint := nil;
x3DConnector := T3DConnector.Create(aFaces, xConn, Self, True);
x3DConnector.CollectConnector(aFaces, apArray);
x3DConnector.FPipeRadius := PipeRadius;
FScsObjects.Add(x3DConnector);
x3DConnector.FSCSObject.F3DObject := x3DConnector;
x3DConnector.FColor := ConvertWinColor(clGreen);
x3DConnector.FRelatedLines.Add(TOrthoLine(LineList[0]));
x3DConnector.FRelatedLines.Add(TOrthoLine(LineList[1]));
x3DConnector.FLength := PipeRadius;
end
else
begin
exVals := False;
if CompareValue(PipeRadius, PrevPiperadius) = -1 then
begin
ExchangeDouble(PipeRadius, PrevPipeRadius); // âûáðàòü áîëüøèé ðàäèóñ êàê îñíîâó
exVals := True;
end;
SetLength(apArray, 3);
if aConn.ConnectorType = ct_Clear then
begin
if TConnectorObject(TOrthoLine(LineList[0]).JoinConnector1).Id = aConn.ID then
PipePoint := GetPoint(TOrthoLine(LineList[0]), 1, PipeRadius)
else
PipePoint := GetPoint(TOrthoLine(LineList[0]), 2, PipeRadius);
if TConnectorObject(TOrthoLine(LineList[1]).JoinConnector1).Id = aConn.ID then
PrevPipePoint := GetPoint(TOrthoLine(LineList[1]), 1, PipeRadius)
else
PrevPipePoint := GetPoint(TOrthoLine(LineList[1]), 2, PipeRadius);
end
else
begin
if aConn.JoinedConnectorsList.IndexOf(TConnectorObject(TOrthoLine(LineList[0]).JoinConnector1)) <> -1 then
PipePoint := GetPoint(TOrthoLine(LineList[0]), 1, PipeRadius)
else
PipePoint := GetPoint(TOrthoLine(LineList[0]), 2, PipeRadius);
if aConn.JoinedConnectorsList.IndexOf(TConnectorObject(TOrthoLine(LineList[1]).JoinConnector1)) <> -1 then
PrevPipePoint := GetPoint(TOrthoLine(LineList[1]), 1, PipeRadius)
else
PrevPipePoint := GetPoint(TOrthoLine(LineList[1]), 2, PipeRadius);
end;
SetLength(apArray, 3);
apArray[0].x := PipePoint.x;
apArray[0].y := PipePoint.y;
apArray[0].z := PipePoint.z;
DisPose(PipePoint);
PipePoint := nil;
apArray[1].x := aConn.ap1.x;
apArray[1].y := aConn.ap1.y;
apArray[1].z := aConn.ActualZOrder[1];
apArray[2].x := PrevPipePoint.x;
apArray[2].y := PrevPipePoint.y;
apArray[2].z := PrevPipePoint.z;
Dispose(PrevPipePoint);
PrevPipePoint := nil;
x3DConnector := T3DConnector.Create(aFaces, xConn, Self, True);
x3DConnector.CollectConnector(aFaces, apArray);
x3DConnector.FPipeRadius := PipeRadius;
FScsObjects.Add(x3DConnector);
x3DConnector.FSCSObject.F3DObject := x3DConnector;
x3DConnector.FColor := ConvertWinColor(clGreen);
x3DConnector.FRelatedLines.Add(TOrthoLine(LineList[0]));
x3DConnector.FRelatedLines.Add(TOrthoLine(LineList[1]));
x3DConnector.FLength := PipeRadius;
if exVals then
TubeLine := LineList[0]
else
TubeLine := LineList[1];
if aConn.ConnectorType = ct_Clear then
begin
if TConnectorObject(TubeLine.JoinConnector1).Id = aConn.ID then
PipePoint := GetPoint(TubeLine, 1, PipeRadius + PrevPipeRadius)
else
PipePoint := GetPoint(TubeLine, 2, PipeRadius + PrevPipeRadius);
end
else
begin
if aConn.JoinedConnectorsList.IndexOf(TubeLine.JoinConnector1) <> -1 then
PipePoint := GetPoint(TubeLine, 1, PipeRadius + PrevPipeRadius)
else
PipePoint := GetPoint(TubeLine, 2, PipeRadius + PrevPipeRadius);
end;
SetLength(apArray, 2);
apArray[0].x := aConn.ap1.x;
apArray[0].y := aConn.ap1.y;
apArray[0].z := aConn.ActualZOrder[1];
apArray[1].x := PipePoint.x;
apArray[1].y := PipePoint.y;
apArray[1].z := PipePoint.z;
x3DConnector := T3DConnector.Create(aFaces, xConn, Self, True);
x3DConnector.CollectConnector(aFaces, apArray);
x3DConnector.FPipeRadius := PrevPipeRadius;
FScsObjects.Add(x3DConnector);
x3DConnector.FSCSObject.F3DObject := x3DConnector;
x3DConnector.FColor := ConvertWinColor(clGreen);
x3DConnector.FRelatedLines.Add(TubeLine);
x3DConnector.FLength := PipeRadius + PrevPipeRadius;
end;
end
else
if LineList.Count > 2 then
begin
MaxPipeRadius := -1;
TubeLine1 := nil;
TubeLine := nil;
for i := 0 to TubeList.Count - 1 do //get Max tube Radius
begin
PipeRadius := GetTubeRadius(TSCSComponent(TubeList[i]));
if CompareValue(MaxPipeRadius, PipeRadius) = -1 then
begin
MaxPipeRadius := PipeRadius;
TubeLine := TOrthoLine(LineList[i]);
LineComponent := TSCSComponent(TubeList[i]);
j := i;
end;
end;
Tubelist.Delete(j); // óäàëÿåì âûáðàííóþ òðàññó è òðóáó èç ñïèñêà
LineList.Delete(j);
CableList.Delete(j);
for i := 0 to TubeList.Count - 1 do //get next tube with Max Radius
begin
PipeRadius := GetTubeRadius(TSCSComponent(TubeList[i]));
if CompareValue(MaxPipeRadius, PipeRadius) = 0 then
begin
TubeLine1 := TOrthoLine(LineList[i]);
LineComponent1 := TSCSComponent(Tubelist[i]);
j := i;
break;
end;
end;
MaxPipeRadius := MaxPipeRadius + MaxPipeRadius/10;
if TubeLine1 = nil then //åñëè íåò òðóá áîëüøå ñ ìàêñ ðàäèóñîì, áåðåì òðóáó ñ ìàêñ ðàäèóñîì èç òåõ, ÷òî îñòàëèñü
begin
PipeRadius := -1;
for i := 0 to LineList.Count - 1 do
begin
PrevPipeRadius := GetTubeRadius(TSCSComponent(TubeList[i]));
if CompareValue(PipeRadius, PrevPipeRadius) = -1 then
begin
PipeRadius := PrevPipeRadius;
TubeLine1 := TOrthoLine(LineList[i]);
LineComponent1 := TSCSComponent(TubeList[i]);
j := i;
end;
end;
end;
PipeRadius := PipeRadius + PipeRadius/10;
Tubelist.Delete(j); // óäàëÿåì âòîðóþ âûáðàííóþ òðàññó è òðóáó èç ñïèñêà
LineList.Delete(j);
CableList.Delete(j);
//ïåðâîå êîëåíî ìàêñ ðàäèóñîì
if aConn.ConnectorType = ct_Clear then
begin
if TConnectorObject(TOrthoLine(TubeLine).JoinConnector1).Id = aConn.ID then
PipePoint := GetPoint(TOrthoLine(TubeLine), 1, MaxPipeRadius)
else
PipePoint := GetPoint(TOrthoLine(TubeLine), 2, MaxPipeRadius);
if TConnectorObject(TOrthoLine(TubeLine1).JoinConnector1).Id = aConn.ID then
PrevPipePoint := GetPoint(TOrthoLine(TubeLine1), 1, MaxPipeRadius)
else
PrevPipePoint := GetPoint(TOrthoLine(TubeLine1), 2, MaxPipeRadius);
end
else
begin
if aConn.JoinedConnectorsList.IndexOf(TConnectorObject(TOrthoLine(TubeLine).JoinConnector1)) <> -1 then
PipePoint := GetPoint(TOrthoLine(TubeLine), 1, MaxPipeRadius)
else
PipePoint := GetPoint(TOrthoLine(TubeLine), 2, MaxPipeRadius);
if aConn.JoinedConnectorsList.IndexOf(TConnectorObject(TOrthoLine(TubeLine1).JoinConnector1)) <> -1 then
PrevPipePoint := GetPoint(TOrthoLine(TubeLine1), 1, MaxPipeRadius)
else
PrevPipePoint := GetPoint(TOrthoLine(TubeLine1), 2, MaxPipeRadius);
end;
SetLength(apArray, 3);
apArray[0].x := PipePoint.x;
apArray[0].y := PipePoint.y;
apArray[0].z := PipePoint.z;
DisPose(PipePoint);
PipePoint := nil;
apArray[1].x := aConn.ap1.x;
apArray[1].y := aConn.ap1.y;
apArray[1].z := aConn.ActualZOrder[1];
apArray[2].x := PrevPipePoint.x;
apArray[2].y := PrevPipePoint.y;
apArray[2].z := PrevPipePoint.z;
Dispose(PrevPipePoint);
PrevPipePoint := nil;
x3DConnector := T3DConnector.Create(aFaces, xConn, Self, True);
x3DConnector.CollectConnector(aFaces, apArray);
x3DConnector.FPipeRadius := MaxPipeRadius;
FScsObjects.Add(x3DConnector);
x3DConnector.FSCSObject.F3DObject := x3DConnector;
x3DConnector.FColor := ConvertWinColor(clGreen);
x3DConnector.FRelatedLines.Add(TubeLine);
x3DConnector.FRelatedLines.Add(TubeLine1);
x3DConnector.FLength := MaxPipeRadius;
//åñëè ïåðâûå äâå òðóáû ðàçíîãî ðàäèóñà - äîêèíóòü õâîñòîâèê ñîåäèíåíèÿ äëÿ òîíüøåé òðóáû
if CompareValue(MaxPipeRadius, PipeRadius) <> 0 then
begin
if aConn.ConnectorType = ct_Clear then
begin
if TConnectorObject(TOrthoLine(TubeLine1).JoinConnector1).Id = aConn.ID then
PipePoint := GetPoint(TOrthoLine(TubeLine1), 1, PipeRadius + MaxPipeRadius)
else
PipePoint := GetPoint(TOrthoLine(TubeLine1), 2, PipeRadius + MaxPipeRadius);
end
else
begin
if aConn.JoinedConnectorsList.IndexOf(TConnectorObject(TOrthoLine(TubeLine1).JoinConnector1)) <> -1 then
PipePoint := GetPoint(TOrthoLine(TubeLine1), 1, PipeRadius + MaxPipeRadius)
else
PipePoint := GetPoint(TOrthoLine(TubeLine1), 2, PipeRadius + MaxPipeRadius);
end;
SetLength(apArray, 2);
apArray[0].x := aConn.ap1.x;
apArray[0].y := aConn.ap1.y;
apArray[0].z := aConn.ActualZOrder[1];
apArray[1].x := PipePoint.x;
apArray[1].y := PipePoint.y;
apArray[1].z := PipePoint.z;
Dispose(PipePoint);
PipePoint := nil;
x3DConnector := T3DConnector.Create(aFaces, xConn, Self, True);
x3DConnector.CollectConnector(aFaces, apArray);
x3DConnector.FPipeRadius := PipeRadius;
FScsObjects.Add(x3DConnector);
x3DConnector.FSCSObject.F3DObject := x3DConnector;
x3DConnector.FColor := ConvertWinColor(clGreen);
x3DConnector.FRelatedLines.Add(TubeLine1);
x3DConnector.FLength := PipeRadius + MaxPipeRadius;
end;
//äîðèñîâàòü îñòàëüíûå
for i := 0 to TubeList.Count - 1 do
begin
PipeRadius := GetTubeRadius(TSCSComponent(TubeList[i]));
PipeRadius := PipeRadius + PipeRadius/10;
if aConn.ConnectorType = ct_Clear then
begin
if TConnectorObject(TOrthoLine(LineList[i]).JoinConnector1).Id = aConn.ID then
PipePoint := GetPoint(TOrthoLine(LineList[i]), 1, PipeRadius + MaxPipeRadius)
else
PipePoint := GetPoint(TOrthoLine(LineList[i]), 2, PipeRadius + MaxPipeRadius);
end
else
begin
if aConn.JoinedConnectorsList.IndexOf(TConnectorObject(TOrthoLine(LineList[i]).JoinConnector1)) <> -1 then
PipePoint := GetPoint(TOrthoLine(LineList[i]), 1, PipeRadius + MaxPipeRadius)
else
PipePoint := GetPoint(TOrthoLine(LineList[i]), 2, PipeRadius + MaxPipeRadius);
end;
SetLength(apArray, 2);
apArray[0].x := aConn.ap1.x;
apArray[0].y := aConn.ap1.y;
apArray[0].z := aConn.ActualZOrder[1];
apArray[1].x := PipePoint.x;
apArray[1].y := PipePoint.y;
apArray[1].z := PipePoint.z;
Dispose(PipePoint);
PipePoint := nil;
x3DConnector := T3DConnector.Create(aFaces, xConn, Self, True);
x3DConnector.CollectConnector(aFaces, apArray);
x3DConnector.FPipeRadius := PipeRadius;
FScsObjects.Add(x3DConnector);
x3DConnector.FSCSObject.F3DObject := x3DConnector;
x3DConnector.FColor := ConvertWinColor(clGreen);
x3DConnector.FRelatedLines.Add(LineList[i]);
x3DConnector.FLength := PipeRadius + MaxPipeRadius;
end;
end;
LineList.Free; LineList.Free;
TubeList.Free; TubeList.Free;
PipeList.Free; PipeList.Free;
CableList.Free;
end;
end; end;
// //
Function Get3dModelFileName(aConn: TConnectorObject): String; Function Get3dModelFileName(aConn: TConnectorObject): String;
@ -4981,7 +5457,11 @@ begin
CheckAddZones(xConn); CheckAddZones(xConn);
// //
end end
else if xConn.JoinedConnectorsList.Count >= 0 then //Tolik 08/04/2025 --
//else if xConn.JoinedConnectorsList.Count >= 0 then
else
if ((xConn.JoinedConnectorsList.Count >= 0) and (not CheckisPipeElement(xConn))) then
//
begin begin
x3DConnector := T3DConnector.Create(aFaces, xConn, Self); x3DConnector := T3DConnector.Create(aFaces, xConn, Self);
x3DConnector.CollectConnector(aFaces, a3DPointArr); x3DConnector.CollectConnector(aFaces, a3DPointArr);
@ -5003,7 +5483,7 @@ begin
CreatePipeElement(TConnectorObject(xConn.JoinedConnectorsList[0])) CreatePipeElement(TConnectorObject(xConn.JoinedConnectorsList[0]))
else else
CreatePipeElement(xConn); CreatePipeElement(xConn);
end; end;
// Tolik 20/09/2018 -- // Tolik 20/09/2018 --
{ {
@ -5046,8 +5526,8 @@ begin
FScsObjects.Add(x3DLine); FScsObjects.Add(x3DLine);
x3DLine.FSCSObject.F3DObject := x3DLine; x3DLine.FSCSObject.F3DObject := x3DLine;
// Tolik 17/09/2018 -- òðóáû íà òðàññå // Tolik 17/09/2018 -- òðóáû íà òðàññå
//TubeList := GetTubeList(xLine); //15/09/2021 -- TubeList := GetTubeList(xLine); //15/09/2021 --
TubeList := nil; //TubeList := nil;
ComponOffset := 0; ComponOffset := 0;
if TubeList <> nil then if TubeList <> nil then
@ -5056,7 +5536,7 @@ begin
for j := 0 to TubeList.Count - 1 do for j := 0 to TubeList.Count - 1 do
begin begin
TubeRadius := GetTubeRadius(TSCSComponent(TubeList[j])); TubeRadius := GetTubeRadius(TSCSComponent(TubeList[j]));
(*
if TubeRadius <> -1 then if TubeRadius <> -1 then
begin begin
x3DTube := T3DTube.create(aFaces, xLine, Self, TSCSComponent(TubeList[j]), TubeRadius*2, TailTubeList); x3DTube := T3DTube.create(aFaces, xLine, Self, TSCSComponent(TubeList[j]), TubeRadius*2, TailTubeList);
@ -5083,7 +5563,7 @@ begin
x3DTube.FSCSObject.F3DObject := x3DTube; x3DTube.FSCSObject.F3DObject := x3DTube;
end; end;
ComponOffset := ComponOffset + TubeRadius * 2; ComponOffset := ComponOffset + TubeRadius * 2;
*)
{ {
if TailTubeList <> nil then // ýòî, òèïà, åñëè áóäóò òîðöû, îòðèñîâàííûå öèëèíäðàìè, â çàâèñèìîñòè îò ñâîéñòâ êîìïîíåíòà "òðóáà" if TailTubeList <> nil then // ýòî, òèïà, åñëè áóäóò òîðöû, îòðèñîâàííûå öèëèíäðàìè, â çàâèñèìîñòè îò ñâîéñòâ êîìïîíåíòà "òðóáà"
begin begin
@ -13729,7 +14209,18 @@ var
i: Integer; i: Integer;
begin begin
try try
FPoint := ap[0]; //Tolik 08/04/2025
//FPoint := ap[0];
if Self.FisPipeElement then
begin
if Length(ap) = 3 then
FPoint := ap[1]
else
FPoint := ap[0];
end
else
FPoint := ap[0];
//
{TODO ZCoord} {TODO ZCoord}
//ap[0].z := ap[0].z * FScaleDelta; //ap[0].z := ap[0].z * FScaleDelta;
for i := 0 to (Length(ap) - 1) do for i := 0 to (Length(ap) - 1) do
@ -13792,7 +14283,10 @@ begin
else else
begin begin
FSCSCompon := nil; FSCSCompon := nil;
FSCSComponID := -1; //Tolik 18/4/2025 --
//FSCSComponID := -1;
FSCSComponID := aSCSObject.ID;
//
end; end;
FName := FSCSObject.Name; FName := FSCSObject.Name;
FIndex := FSCSObject.FIndex; FIndex := FSCSObject.FIndex;
@ -13832,6 +14326,8 @@ begin
FColor := clrBlack; FColor := clrBlack;
FJoinedConnectorsList := TList.Create; FJoinedConnectorsList := TList.Create;
FJoinedLinesList := TList.Create; FJoinedLinesList := TList.Create;
FRelatedLines := TList.Create; // -- Tolik 03/4/2025 ñïèñîê òðàññ, ïî êîòîðûì ïðîõîèò ñîåäèíåíèå
FLength := 0; // Tolik 03/04/05 -- äëèíà ñîåäèíåíèÿ
except except
on E: Exception do AddExceptionToLogEx('T3DConnector.Create', E.Message); on E: Exception do AddExceptionToLogEx('T3DConnector.Create', E.Message);
end; end;
@ -14206,7 +14702,9 @@ var
for i := 0 to SCSCatalog.ComponentReferences.Count - 1 do for i := 0 to SCSCatalog.ComponentReferences.Count - 1 do
begin begin
SCSCompon := SCSCatalog.ComponentReferences[i]; SCSCompon := SCSCatalog.ComponentReferences[i];
if SCSCompon.ComponentType.SysName <> ctsnCableChannelAccessory then //Tolik 10/04/2025 --
//if SCSCompon.ComponentType.SysName <> ctsnCableChannelAccessory then
if ((SCSCompon.ComponentType.SysName <> ctsnCableChannelAccessory) and (SCSCompon.ComponentType.SysName <> ctsnWireTray)) then
begin begin
ComponDiam := getLineComponOutRadius(SCSCompon); ComponDiam := getLineComponOutRadius(SCSCompon);
if isCableComponent(SCSCompon) then //êàáåëü if isCableComponent(SCSCompon) then //êàáåëü
@ -15257,6 +15755,7 @@ begin
FNotes.Free; FNotes.Free;
FJoinedConnectorsList.Free; FJoinedConnectorsList.Free;
FJoinedLinesList.Free; FJoinedLinesList.Free;
FRelatedLines.Free;
inherited; inherited;
end; end;
//*************** -\ROOF- ************************** //*************** -\ROOF- **************************

View File

@ -637,7 +637,6 @@ var
Req: string; Req: string;
TimeStr: string; TimeStr: string;
begin begin
Randomize;
Randomize; Randomize;
TimeStr := DateTimeToStr(Now); TimeStr := DateTimeToStr(Now);
while Pos(':', TimeStr) > 0 do while Pos(':', TimeStr) > 0 do

View File

@ -6900,14 +6900,14 @@ var
if ResultList.Count > 0 then if ResultList.Count > 0 then
begin begin
ATraveledIndex := ATraveledIndex; ATraveledIndex := ATraveledIndex;
showmessage('CurrTick > 0.00009 and ResultList.Count = '+ inttostr(ResultList.Count)); //showmessage('CurrTick > 0.00009 and ResultList.Count = '+ inttostr(ResultList.Count));
exit; exit;
end; end;
end; end;
if CurrTick > 0.00013 then if CurrTick > 0.00013 then
begin begin
ATraveledIndex := ATraveledIndex; ATraveledIndex := ATraveledIndex;
showmessage('CurrTick > 0.00013 '); //showmessage('CurrTick > 0.00013 ');
exit; exit;
end; end;
@ -6915,7 +6915,7 @@ var
if ResultList.Count > 2 then if ResultList.Count > 2 then
begin begin
ATraveledIndex := ATraveledIndex; ATraveledIndex := ATraveledIndex;
showmessage('ATraveledIndex > 60 and ResultList.Count > 2'); //showmessage('ATraveledIndex > 60 and ResultList.Count > 2');
exit; exit;
end end
else else
@ -6924,7 +6924,7 @@ var
if CurrTick > 0.00006 then if CurrTick > 0.00006 then
begin begin
ATraveledIndex := ATraveledIndex; ATraveledIndex := ATraveledIndex;
showmessage('ATraveledIndex > 60 ResultList.Count > 100'); //showmessage('ATraveledIndex > 60 ResultList.Count > 100');
exit; exit;
end; end;
end; end;

View File

@ -1,6 +1,9 @@
//Tolik 23/01/2025 -- ïåðåñìîòðåòü ïåðåíîñû äëòííûõ íàèìåíîâàíèé
{$A+,B-,C+,D+,E-,F-,G+,H+,I-,J-,K-,L+,M-,N+,O-,P+,Q-,R-,S-,T-,U+,V+,W-,X+,Y+,Z1} {$A+,B-,C+,D+,E-,F-,G+,H+,I-,J-,K-,L+,M-,N+,O-,P+,Q-,R-,S-,T-,U+,V+,W-,X+,Y+,Z1}
//{$MINSTACKSIZE $00004000} //{$MINSTACKSIZE $00004000}
//{$MAXSTACKSIZE $00100000} //{$MAXSTACKSIZE $00100000} //
//{$IMAGEBASE $00400000} //{$IMAGEBASE $00400000}
//{$APPTYPE GUI} //{$APPTYPE GUI}
//{$J+} //{$J+}
@ -38,7 +41,7 @@ var i, j, k, l, m: integer;
Line_Count: Integer; Line_Count: Integer;
Switches, Connections, UzoList: TSCSComponents; Switches, Connections, UzoList: TSCSComponents;
ConnectedCompon: TSCSComponent; ConnectedCompon: TSCSComponent;
CurrText: TRichText; CurrText, elText: TRichText;
TextList: TStringList; TextList: TStringList;
IconFigList: TList; IconFigList: TList;
ParentCatalog: TSCSCatalog; ParentCatalog: TSCSCatalog;
@ -809,6 +812,10 @@ var i, j, k, l, m: integer;
//SLine := TLine.create(GCadForm.PCad.WorkWidth/10 - 20, by - 8, GCadForm.PCad.WorkWidth/10 - 10, by - 8, 2, ord(psSolid), clBlack, 0, GCadForm.PCad.GetLayerHandle(0), mydsNormal, GCadForm.PCad); //SLine := TLine.create(GCadForm.PCad.WorkWidth/10 - 20, by - 8, GCadForm.PCad.WorkWidth/10 - 10, by - 8, 2, ord(psSolid), clBlack, 0, GCadForm.PCad.GetLayerHandle(0), mydsNormal, GCadForm.PCad);
SLine := TLine.create(GCadForm.PCad.WorkWidth/10 - 20, by - 5, GCadForm.PCad.WorkWidth/10 - 10, by - 5, 2, ord(psSolid), clBlack, 0, GCadForm.PCad.GetLayerHandle(0), mydsNormal, GCadForm.PCad); SLine := TLine.create(GCadForm.PCad.WorkWidth/10 - 20, by - 5, GCadForm.PCad.WorkWidth/10 - 10, by - 5, 2, ord(psSolid), clBlack, 0, GCadForm.PCad.GetLayerHandle(0), mydsNormal, GCadForm.PCad);
GCadForm.PCad.AddCustomFigure(1, TFigure(SLine), false); GCadForm.PCad.AddCustomFigure(1, TFigure(SLine), false);
// Tolik 22/01/2025
elText.Move((((GCadForm.PCad.WorkWidth/10 - 20) + (GCadForm.PCad.WorkWidth/10 - 10))/2) - elText.CenterPoint.x,
(((190 - 3 - MaxTableHeightArray[0]) + (by - 5))/2) - elText.CenterPoint.y);
//
end; end;
end; end;
//bx := bx + 10; //bx := bx + 10;
@ -1202,7 +1209,7 @@ Begin
CurrText := CreateTextObject(Line_x1 - 80, Line_y1 + 80, TextList); CurrText := CreateTextObject(Line_x1 - 80, Line_y1 + 80, TextList);
CurrText.Rotate(((-90)/180) * PI, CurrText.CenterPoint); CurrText.Rotate(((-90)/180) * PI, CurrText.CenterPoint);
//TextFigList.Add(CurrText); //TextFigList.Add(CurrText);
elText := CurrText; // Tolik 22/01/2025 --
ColObjList := TList.Create; ColObjList := TList.Create;
TextList.Clear; TextList.Clear;

View File

@ -521,10 +521,6 @@ object F_MasterNewList: TF_MasterNewList
end end
object tsProjOptionsObjectProps: TRzTabSheet object tsProjOptionsObjectProps: TRzTabSheet
Caption = #1055#1072#1088#1072#1084#1077#1090#1088#1099' '#1086#1073#1098#1077#1082#1090#1086#1074 Caption = #1055#1072#1088#1072#1084#1077#1090#1088#1099' '#1086#1073#1098#1077#1082#1090#1086#1074
ExplicitLeft = 0
ExplicitTop = 0
ExplicitWidth = 0
ExplicitHeight = 0
object RzGroupBox18: TRzGroupBox object RzGroupBox18: TRzGroupBox
Left = 4 Left = 4
Top = 6 Top = 6
@ -1051,7 +1047,7 @@ object F_MasterNewList: TF_MasterNewList
Width = 626 Width = 626
Height = 481 Height = 481
HelpContext = 33002 HelpContext = 33002
ActivePage = TabPageParams ActivePage = TabAll
Align = alTop Align = alTop
Font.Charset = DEFAULT_CHARSET Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText Font.Color = clWindowText
@ -1062,7 +1058,7 @@ object F_MasterNewList: TF_MasterNewList
HotTrackStyle = htsText HotTrackStyle = htsText
ParentFont = False ParentFont = False
ShowShadow = False ShowShadow = False
TabIndex = 1 TabIndex = 0
TabOrder = 0 TabOrder = 0
TabStyle = tsSquareCorners TabStyle = tsSquareCorners
OnChange = ListPageControlChange OnChange = ListPageControlChange
@ -3606,10 +3602,6 @@ object F_MasterNewList: TF_MasterNewList
end end
object TabSheet5: TRzTabSheet object TabSheet5: TRzTabSheet
Caption = #1050#1072#1073#1080#1085#1077#1090#1099 Caption = #1050#1072#1073#1080#1085#1077#1090#1099
ExplicitLeft = 0
ExplicitTop = 0
ExplicitWidth = 0
ExplicitHeight = 0
object cbShowCabinetsBounds: TRzCheckBox object cbShowCabinetsBounds: TRzCheckBox
Left = 4 Left = 4
Top = 32 Top = 32
@ -3635,10 +3627,6 @@ object F_MasterNewList: TF_MasterNewList
end end
object TabSheet4: TRzTabSheet object TabSheet4: TRzTabSheet
Caption = #1055#1077#1095#1072#1090#1100 Caption = #1055#1077#1095#1072#1090#1100
ExplicitLeft = 0
ExplicitTop = 0
ExplicitWidth = 0
ExplicitHeight = 0
object cbBlackPrint: TcxRadioButton object cbBlackPrint: TcxRadioButton
Left = 5 Left = 5
Top = 8 Top = 8
@ -4137,10 +4125,6 @@ object F_MasterNewList: TF_MasterNewList
object tsListSpravochniki: TRzTabSheet object tsListSpravochniki: TRzTabSheet
HelpContext = 33006 HelpContext = 33006
Caption = #1058#1080#1087#1099' '#1082#1086#1084#1087#1086#1085#1077#1085#1090 Caption = #1058#1080#1087#1099' '#1082#1086#1084#1087#1086#1085#1077#1085#1090
ExplicitLeft = 0
ExplicitTop = 0
ExplicitWidth = 0
ExplicitHeight = 0
object pnComponentType: TRzPanel object pnComponentType: TRzPanel
Left = 0 Left = 0
Top = 434 Top = 434
@ -12667,8 +12651,6 @@ object F_MasterNewList: TF_MasterNewList
object tsProjectSpravochniki: TRzTabSheet object tsProjectSpravochniki: TRzTabSheet
TabVisible = False TabVisible = False
Caption = #1057#1087#1088#1072#1074#1086#1095#1085#1080#1082#1080 Caption = #1057#1087#1088#1072#1074#1086#1095#1085#1080#1082#1080
ExplicitWidth = 0
ExplicitHeight = 0
end end
end end
object RzGroupBox20: TRzGroupBox object RzGroupBox20: TRzGroupBox

View File

@ -1,10 +1,11 @@
object F_Reserv: TF_Reserv object F_Reserv: TF_Reserv
Left = 380 Left = 414
Top = 178 Top = 175
BorderIcons = [biSystemMenu] BorderIcons = []
BorderStyle = bsSingle
Caption = #1059#1087#1088#1072#1074#1083#1077#1085#1080#1077' '#1088#1077#1079#1077#1088#1074#1085#1099#1084#1080' '#1082#1086#1087#1080#1103#1084#1080' '#1085#1072' '#1091#1076#1072#1083#1077#1085#1085#1086#1084' '#1089#1077#1088#1074#1077#1088#1077 Caption = #1059#1087#1088#1072#1074#1083#1077#1085#1080#1077' '#1088#1077#1079#1077#1088#1074#1085#1099#1084#1080' '#1082#1086#1087#1080#1103#1084#1080' '#1085#1072' '#1091#1076#1072#1083#1077#1085#1085#1086#1084' '#1089#1077#1088#1074#1077#1088#1077
ClientHeight = 311 ClientHeight = 344
ClientWidth = 532 ClientWidth = 556
Color = clBtnFace Color = clBtnFace
Font.Charset = DEFAULT_CHARSET Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText Font.Color = clWindowText
@ -17,8 +18,8 @@ object F_Reserv: TF_Reserv
PixelsPerInch = 96 PixelsPerInch = 96
TextHeight = 13 TextHeight = 13
object Label1: TLabel object Label1: TLabel
Left = 32 Left = 8
Top = 4 Top = 43
Width = 180 Width = 180
Height = 16 Height = 16
Caption = #1057#1087#1080#1089#1086#1082' '#1092#1072#1081#1083#1086#1074' '#1085#1072' '#1089#1077#1088#1074#1077#1088#1077 Caption = #1057#1087#1080#1089#1086#1082' '#1092#1072#1081#1083#1086#1074' '#1085#1072' '#1089#1077#1088#1074#1077#1088#1077
@ -30,8 +31,8 @@ object F_Reserv: TF_Reserv
ParentFont = False ParentFont = False
end end
object Label2: TLabel object Label2: TLabel
Left = 32 Left = 8
Top = 256 Top = 301
Width = 286 Width = 286
Height = 13 Height = 13
Caption = #1047#1072#1085#1103#1090#1086' '#1076#1080#1089#1082#1086#1074#1086#1075#1086' '#1087#1088#1086#1089#1090#1088#1072#1085#1089#1090#1074#1072' '#1085#1072' '#1089#1077#1088#1074#1077#1088#1077', '#1052#1073' ' Caption = #1047#1072#1085#1103#1090#1086' '#1076#1080#1089#1082#1086#1074#1086#1075#1086' '#1087#1088#1086#1089#1090#1088#1072#1085#1089#1090#1074#1072' '#1085#1072' '#1089#1077#1088#1074#1077#1088#1077', '#1052#1073' '
@ -43,8 +44,8 @@ object F_Reserv: TF_Reserv
ParentFont = False ParentFont = False
end end
object Label3: TLabel object Label3: TLabel
Left = 32 Left = 8
Top = 280 Top = 325
Width = 279 Width = 279
Height = 13 Height = 13
Caption = #1051#1080#1084#1080#1090' '#1076#1080#1089#1082#1086#1074#1086#1075#1086' '#1087#1088#1086#1089#1090#1088#1072#1085#1089#1090#1074#1072' '#1085#1072' '#1089#1077#1088#1074#1077#1088#1077', '#1052#1073' ' Caption = #1051#1080#1084#1080#1090' '#1076#1080#1089#1082#1086#1074#1086#1075#1086' '#1087#1088#1086#1089#1090#1088#1072#1085#1089#1090#1074#1072' '#1085#1072' '#1089#1077#1088#1074#1077#1088#1077', '#1052#1073' '
@ -56,8 +57,8 @@ object F_Reserv: TF_Reserv
ParentFont = False ParentFont = False
end end
object lbAllowedSpace: TLabel object lbAllowedSpace: TLabel
Left = 320 Left = 296
Top = 280 Top = 325
Width = 3 Width = 3
Height = 13 Height = 13
Caption = ' ' Caption = ' '
@ -69,8 +70,8 @@ object F_Reserv: TF_Reserv
ParentFont = False ParentFont = False
end end
object lbUsedSpace: TLabel object lbUsedSpace: TLabel
Left = 320 Left = 296
Top = 256 Top = 301
Width = 3 Width = 3
Height = 13 Height = 13
Caption = ' ' Caption = ' '
@ -81,201 +82,112 @@ object F_Reserv: TF_Reserv
Font.Style = [fsBold] Font.Style = [fsBold]
ParentFont = False ParentFont = False
end end
object Button1: TButton object ToolBar1: TToolBar
Left = 437 AlignWithMargins = True
Top = 278 Left = 3
Width = 75 Top = 3
Height = 25 Width = 550
Caption = #1047#1072#1082#1088#1099#1090#1100 Height = 34
Font.Charset = DEFAULT_CHARSET ButtonHeight = 30
Font.Color = clWindowText ButtonWidth = 31
Font.Height = -11 Caption = 'ToolBar1'
Font.Name = 'Tahoma' DisabledImages = FSCS_Main.imagePanel
Font.Style = [fsBold] DoubleBuffered = True
ParentFont = False Images = FSCS_Main.imagePanel
ParentDoubleBuffered = False
ParentShowHint = False
ShowHint = True
TabOrder = 0 TabOrder = 0
OnClick = Button1Click object ToolButton1: TToolButton
Left = 0
Top = 0
Action = aRefresh
end
object ToolButton2: TToolButton
Left = 31
Top = 0
Action = aUpload
end
object ToolButton3: TToolButton
Left = 62
Top = 0
Hint = #1047#1072#1075#1088#1091#1079#1080#1090#1100' '#1092#1072#1081#1083' '#1089' '#1089#1077#1088#1074#1077#1088#1072
Action = aLoad
end
object ToolButton4: TToolButton
Left = 93
Top = 0
Action = aDelFileFrom
end
object ToolButton6: TToolButton
Left = 124
Top = 0
Hint = #1054#1090#1082#1088#1099#1090#1100' '#1092#1072#1081#1083' '#1074' '#1087#1088#1080#1083#1086#1078#1077#1085#1080#1080
Action = aToPM
ImageIndex = 7
end
object ToolButton7: TToolButton
Left = 155
Top = 0
Hint = #1057#1086#1093#1088#1072#1085#1080#1090#1100' '#1090#1077#1082#1091#1097#1080#1081' '#1087#1088#1086#1077#1082#1090' '#1085#1072' '#1089#1077#1088#1074#1077#1088
Action = aFromPM
ImageIndex = 6
end
object ToolButton5: TToolButton
Left = 186
Top = 0
Action = aExit
end
end end
object ListBox1: TListBox object cxGrid1: TcxGrid
Left = 32 Left = 8
Top = 24 Top = 62
Width = 345 Width = 537
Height = 226 Height = 233
ItemHeight = 13 PopupMenu = PopupMenu1
TabOrder = 1 TabOrder = 1
end LookAndFeel.NativeStyle = True
object btnSave: TBitBtn object cxGrid1DBTableView1: TcxGridDBTableView
Left = 389 Navigator.Buttons.CustomButtons = <>
Top = 24 DataController.DataSource = DataSource1
Width = 135 DataController.Summary.DefaultGroupSummaryItems = <>
Height = 41 DataController.Summary.FooterSummaryItems = <>
Caption = 'btnSave' DataController.Summary.SummaryGroups = <>
DoubleBuffered = True OptionsBehavior.CopyRecordsToClipboard = False
Font.Charset = DEFAULT_CHARSET OptionsBehavior.ImmediateEditor = False
Font.Color = clWindowText OptionsBehavior.ColumnHeaderHints = False
Font.Height = -11 OptionsData.Deleting = False
Font.Name = 'Tahoma' OptionsData.Editing = False
Font.Style = [fsBold] OptionsData.Inserting = False
Glyph.Data = { OptionsSelection.CellSelect = False
36040000424D3604000000000000360000002800000010000000100000000100 OptionsView.FocusRect = False
2000000000000004000000000000000000000000000000000000FF00FF00FF00 OptionsView.GroupByBox = False
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00 object cxGrid1DBTableView1FileName: TcxGridDBColumn
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF000808 Caption = #1060#1072#1081#1083
0800A59CA500A59CA500A59CA500A59CA500A59CA500A59CA500181818000808 DataBinding.FieldName = 'FileName'
080000000000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00181818000808 Options.Editing = False
0800C6C6C60029292900424242009C9C9C00C6C6C600CECECE00181818000808 Options.Filtering = False
080008080800FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00101010000808 Options.Moving = False
0800C6C6C60018181800292929009C9C9C00BDBDBD00C6C6C600181818000808 Width = 280
0800080808000808080000000000FF00FF00FF00FF00FF00FF00101010000808 end
0800CECECE00C6C6C600C6C6C600C6C6C600BDBDBD00BDBDBD00181818000808 object cxGrid1DBTableView1FileSize: TcxGridDBColumn
0800101010000808080008080800FF00FF00FF00FF00FF00FF00101010000808 Caption = #1056#1072#1079#1084#1077#1088', '#1052#1073
0800080808000808080008080800080808000808080008080800080808000808 DataBinding.FieldName = 'FileSize'
08001010100008080800080808000808080000000000FF00FF00212121000808 Options.Editing = False
0800FFF7F700FFF7F700FFF7F700FFF7F700FFF7F700FFF7F700FFF7F7000808 Options.Filtering = False
08001818180008080800101010000808080008080800FF00FF00212121000808 Options.Moving = False
0800FFF7F700C6C6C6009C9C9C009C9C9C009C9C9C00E7E7E700FFF7F7000808 end
08002929290008080800101010000808080008080800FF00FF00292929000808 object cxGrid1DBTableView1FileDate: TcxGridDBColumn
0800FFF7F700FFF7F700FFF7F700FFF7F700FFF7F700FFF7F700FFF7F7000808 Caption = #1044#1072#1090#1072
08002929290008080800181818000808080010101000FF00FF00292929000808 DataBinding.FieldName = 'FileDate'
0800FFF7F700C6C6C6009C9C9C009C9C9C009C9C9C00E7E7E700FFF7F7000808 Options.Editing = False
08002929290008080800292929000808080010101000FF00FF00292929000808 Options.Filtering = False
0800FFF7F700FFF7F700FFF7F700FFF7F700FFF7F700FFF7F700FFF7F7000808 Options.Moving = False
08002929290008080800292929000808080018181800FF00FF00292929000808 end
0800DE842100DE7B2100D67B1800D6731800CE731800CE6B1000CE6B10000808 end
08002929290008080800292929000808080029292900FF00FF00FF00FF00FF00 object cxGrid1Level1: TcxGridLevel
FF002929290008080800FFF7F700FFF7F700FFF7F700FFF7F700FFF7F700FFF7 GridView = cxGrid1DBTableView1
F700FFF7F70008080800292929000808080029292900FF00FF00FF00FF00FF00 end
FF002929290008080800DE842100DE7B2100D67B1800D6731800CE731800CE6B
1000CE6B100008080800292929000808080029292900FF00FF00FF00FF00FF00
FF00FF00FF00FF00FF002929290008080800FFF7F700FFF7F700FFF7F700FFF7
F700FFF7F700FFF7F700FFF7F7000808080029292900FF00FF00FF00FF00FF00
FF00FF00FF00FF00FF002929290008080800DE842100DE7B2100D67B1800D673
1800CE731800CE6B1000CE6B10000808080029292900FF00FF00}
ParentDoubleBuffered = False
ParentFont = False
TabOrder = 2
OnClick = btnSaveClick
end
object btnLoad: TBitBtn
Left = 389
Top = 96
Width = 135
Height = 41
Caption = 'btnLoad'
DoubleBuffered = True
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = [fsBold]
Glyph.Data = {
36040000424D3604000000000000360000002800000010000000100000000100
2000000000000004000000000000000000000000000000000000FF00FF00FF00
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00
FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00944A
0000E7DEB500E7DEB500E7DEB500E7DEB500E7DEB500E7DEB500AD5A0800944A
000084420000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00A55A0800944A
0000DEDED600C66B1000DE8C3100EFDEB500DEDED600E7E7DE00AD5A0800944A
00008C420000FF00FF00FF00FF00FF00FF00FF00FF00FF00FF00A5520800944A
0000DEDED600AD5A0800C66B1000EFDEB500DEDECE00DEDED600AD5A0800944A
0000944A0000944A000084420000FF00FF00FF00FF00FF00FF00A5520800944A
0000E7E7D600DEDED600DEDED600DEDECE00DEDECE00DEDECE00AD5A0800944A
00009C520000944A00008C420000FF00FF00FF00FF00FF00FF00A5520800944A
0000944A0000944A0000944A0000944A0000944A0000944A0000944A0000944A
0000A5520800944A0000944A0000944A000084420000FF00FF00B5630800944A
0000FFF7F700FFF7F700FFF7F700FFF7F700FFF7F700FFF7F700FFF7F700944A
0000AD5A0800944A00009C520000944A00008C420000FF00FF00BD631000944A
0000FFF7F700E7E7D600EFDEB500EFDEB500EFDEB500EFEFEF00FFF7F700944A
0000C66B1800944A0000A5520800944A0000944A0000FF00FF00BD6B1000944A
0000FFF7F700FFF7F700FFF7F700FFF7F700FFF7F700FFF7F700FFF7F700944A
0000C6731800944A0000AD5A0800944A00009C520000FF00FF00BD6B1000944A
0000FFF7F700E7E7D600EFDEB500EFDEB500EFDEB500EFEFEF00FFF7F700944A
0000C6731800944A0000C66B1800944A0000A5520800FF00FF00C66B1000944A
0000FFF7F700FFF7F700FFF7F700FFF7F700FFF7F700FFF7F700FFF7F700944A
0000C6731800944A0000C6731800944A0000AD5A0800FF00FF00C66B1000944A
0000E79C2900E7942900E7942100DE8C2100DE8C2100DE8C1800DE841800944A
0000C6731800944A0000C6731800944A0000C66B1800FF00FF00FF00FF00FF00
FF00C66B1800944A0000FFF7F700FFF7F700FFF7F700FFF7F700FFF7F700FFF7
F700FFF7F700944A0000C6731800944A0000C6731800FF00FF00FF00FF00FF00
FF00C66B1000944A0000E79C2900E7942900E7942100DE8C2100DE8C2100DE8C
1800DE841800944A0000C6731800944A0000C6731800FF00FF00FF00FF00FF00
FF00FF00FF00FF00FF00C66B1800944A0000FFF7F700FFF7F700FFF7F700FFF7
F700FFF7F700FFF7F700FFF7F700944A0000C6731800FF00FF00FF00FF00FF00
FF00FF00FF00FF00FF00C66B1000944A0000E79C2900E7942900E7942100DE8C
2100DE8C2100DE8C1800DE841800944A0000C66B1000FF00FF00}
ParentDoubleBuffered = False
ParentFont = False
TabOrder = 3
OnClick = btnLoadClick
end
object btnDelete: TBitBtn
Left = 389
Top = 168
Width = 135
Height = 41
Caption = 'btnDelete'
DoubleBuffered = True
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = [fsBold]
Glyph.Data = {
36060000424D3606000000000000360400002800000020000000100000000100
08000000000000020000630E0000630E00000001000000000000000000003300
00006600000099000000CC000000FF0000000033000033330000663300009933
0000CC330000FF33000000660000336600006666000099660000CC660000FF66
000000990000339900006699000099990000CC990000FF99000000CC000033CC
000066CC000099CC0000CCCC0000FFCC000000FF000033FF000066FF000099FF
0000CCFF0000FFFF000000003300330033006600330099003300CC003300FF00
330000333300333333006633330099333300CC333300FF333300006633003366
33006666330099663300CC663300FF6633000099330033993300669933009999
3300CC993300FF99330000CC330033CC330066CC330099CC3300CCCC3300FFCC
330000FF330033FF330066FF330099FF3300CCFF3300FFFF3300000066003300
66006600660099006600CC006600FF0066000033660033336600663366009933
6600CC336600FF33660000666600336666006666660099666600CC666600FF66
660000996600339966006699660099996600CC996600FF99660000CC660033CC
660066CC660099CC6600CCCC6600FFCC660000FF660033FF660066FF660099FF
6600CCFF6600FFFF660000009900330099006600990099009900CC009900FF00
990000339900333399006633990099339900CC339900FF339900006699003366
99006666990099669900CC669900FF6699000099990033999900669999009999
9900CC999900FF99990000CC990033CC990066CC990099CC9900CCCC9900FFCC
990000FF990033FF990066FF990099FF9900CCFF9900FFFF99000000CC003300
CC006600CC009900CC00CC00CC00FF00CC000033CC003333CC006633CC009933
CC00CC33CC00FF33CC000066CC003366CC006666CC009966CC00CC66CC00FF66
CC000099CC003399CC006699CC009999CC00CC99CC00FF99CC0000CCCC0033CC
CC0066CCCC0099CCCC00CCCCCC00FFCCCC0000FFCC0033FFCC0066FFCC0099FF
CC00CCFFCC00FFFFCC000000FF003300FF006600FF009900FF00CC00FF00FF00
FF000033FF003333FF006633FF009933FF00CC33FF00FF33FF000066FF003366
FF006666FF009966FF00CC66FF00FF66FF000099FF003399FF006699FF009999
FF00CC99FF00FF99FF0000CCFF0033CCFF0066CCFF0099CCFF00CCCCFF00FFCC
FF0000FFFF0033FFFF0066FFFF0099FFFF00CCFFFF00FFFFFF00000080000080
000000808000800000008000800080800000C0C0C00080808000191919004C4C
4C00B2B2B200E5E5E500C8AC2800E0CC6600F2EABF00B59B2400D8E9EC009933
6600D075A300ECC6D900646F710099A8AC00E2EFF10000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000E8E8E8E8E8E8
E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E86CE8E8
E8E8E8E8E8E8E8E8B4E8E8E8E881E8E8E8E8E8E8E8E8E8E8ACE8E8E897B46CE8
E8E8E8E8E8E8E8E8E8E8E8E881AC81E8E8E8E8E8E8E8E8E8E8E8E8E897C7B46C
E8E8E8E8E8E8E8B4E8E8E8E881E3AC81E8E8E8E8E8E8E8ACE8E8E8E8E897C090
E8E8E8E8E8E8B4E8E8E8E8E8E881E381E8E8E8E8E8E8ACE8E8E8E8E8E8E890B4
6CE8E8E8E8B46CE8E8E8E8E8E8E881AC81E8E8E8E8AC81E8E8E8E8E8E8E8E890
B46CE8E8B46CE8E8E8E8E8E8E8E8E881AC81E8E8AC81E8E8E8E8E8E8E8E8E8E8
90B46CB46CE8E8E8E8E8E8E8E8E8E8E881AC81AC81E8E8E8E8E8E8E8E8E8E8E8
E890B46CE8E8E8E8E8E8E8E8E8E8E8E8E881AC81E8E8E8E8E8E8E8E8E8E8E8E8
90B46C906CE8E8E8E8E8E8E8E8E8E8E881AC818181E8E8E8E8E8E8E8E8E8E890
B46CE8E8906CE8E8E8E8E8E8E8E8E881AC81E8E88181E8E8E8E8E8E8E890B4B4
6CE8E8E8E8906CE8E8E8E8E8E881ACAC81E8E8E8E88181E8E8E8E8E890C7B46C
E8E8E8E8E8E8906CE8E8E8E881E3AC81E8E8E8E8E8E88181E8E8E8E87A907AE8
E8E8E8E8E8E8E8E890E8E8E8AC81ACE8E8E8E8E8E8E8E8E881E8E8E8E8E8E8E8
E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8
E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8E8}
NumGlyphs = 2
ParentDoubleBuffered = False
ParentFont = False
TabOrder = 4
OnClick = btnDeleteClick
end end
object siLangLinked1: TsiLangLinked object siLangLinked1: TsiLangLinked
Version = '6.5.2' Version = '6.5.2'
@ -365,59 +277,284 @@ object F_Reserv: TF_Reserv
01000D000A006C00620041006C006C006F007700650064005300700061006300 01000D000A006C00620041006C006C006F007700650064005300700061006300
65000100200001000100010001000100010001000D000A006C00620055007300 65000100200001000100010001000100010001000D000A006C00620055007300
6500640053007000610063006500010020000100010001000100010001000100 6500640053007000610063006500010020000100010001000100010001000100
0D000A0042007500740074006F006E0031000100170430043A0440044B044204 0D000A0054006F006F006C004200610072003100010054006F006F006C004200
4C040100170430043A044004380442043804010043006C006F00730065000100 61007200310001000100010001000100010001000D000A006100520065006600
01000100010001000D000A00620074006E005300610076006500010062007400 7200650073006800010052006500660072006500730068000100010001000100
6E00530061007600650001000100010001000100010001000D000A0062007400 0100010001000D000A006100550070006C006F00610064000100170430043304
6E004C006F00610064000100620074006E004C006F0061006400010001000100 400443043704380442044C0420004404300439043B0420003D04300420004104
01000100010001000D000A00620074006E00440065006C006500740065000100 35044004320435044004010017043004320430043D0442043004360438044204
620074006E00440065006C006500740065000100010001000100010001000100 380420004404300439043B0420003D0430042000410435044004320435044004
0D000A0073007400480069006E00740073005F0055006E00690063006F006400 0100550070006C006F00610064002000660069006C006500200074006F002000
65000D000A007300740044006900730070006C00610079004C00610062006500 730065007200760065007200010001000100010001000D000A0061004C006F00
6C0073005F0055006E00690063006F00640065000D000A007300740046006F00 610064000100170430043304400443043704380442044C042000440430043904
6E00740073005F0055006E00690063006F00640065000D000A00540046005F00 3B04200041042000410435044004320435044004300401001704300432043004
52006500730065007200760001005400610068006F006D006100010001000100 3D0442043004360438044204380420004404300439043B042000370420004104
01000100010001000D000A004C006100620065006C0031000100540061006800 35044004320435044004300401004C006F00610064002000660069006C006500
6F006D00610001000100010001000100010001000D000A004C00610062006500 2000660072006F006D0020007300650072007600650072000100010001000100
6C00320001005400610068006F006D0061000100010001000100010001000100 01000D000A006100440065006C00460069006C006500460072006F006D000100
0D000A004C006100620065006C00330001005400610068006F006D0061000100 2304340430043B04380442044C0420004404300439043B040100120438043404
0100010001000100010001000D000A006C00620041006C006C006F0077006500 30043B0438044204380420004404300439043B040100440065006C0065007400
64005300700061006300650001005400610068006F006D006100010001000100 65002000660069006C006500010001000100010001000D000A00610054006F00
01000100010001000D000A006C00620055007300650064005300700061006300 50004D000100610054006F0050004D0001000100010001000100010001000D00
650001005400610068006F006D00610001000100010001000100010001000D00 0A006100460072006F006D0050004D0001006100460072006F006D0050004D00
0A0042007500740074006F006E00310001005400610068006F006D0061000100 01000100010001000100010001000D000A006100450078006900740001006100
0100010001000100010001000D000A00620074006E0053006100760065000100 450078006900740001000100010001000100010001000D000A00630078004700
5400610068006F006D00610001000100010001000100010001000D000A006200 7200690064003100440042005400610062006C00650056006900650077003100
74006E004C006F006100640001005400610068006F006D006100010001000100 460069006C0065004E0061006D0065000100460069006C0065004E0061006D00
01000100010001000D000A00620074006E00440065006C006500740065000100 650001000100010001000100010001000D000A00630078004700720069006400
5400610068006F006D00610001000100010001000100010001000D000A007300 3100440042005400610062006C00650056006900650077003100460069006C00
74004D0075006C00740069004C0069006E00650073005F0055006E0069006300 6500530069007A0065000100460069006C006500530069007A00650001000100
6F00640065000D000A007300740053007400720069006E00670073005F005500 010001000100010001000D000A00630078004700720069006400310044004200
6E00690063006F00640065000D000A00730074004F0074006800650072005300 5400610062006C00650056006900650077003100460069006C00650044006100
7400720069006E00670073005F0055006E00690063006F00640065000D000A00 740065000100460069006C006500440061007400650001000100010001000100
7300740043006F006C006C0065006300740069006F006E0073005F0055006E00 010001000D000A0073007400480069006E00740073005F0055006E0069006300
690063006F00640065000D000A00730074004300680061007200530065007400 6F00640065000D000A0054006F006F006C0042007500740074006F006E003300
73005F0055006E00690063006F00640065000D000A00540046005F0052006500 0100170430043304400443043704380442044C0420004404300439043B042000
73006500720076000100440045004600410055004C0054005F00430048004100 410420004104350440043204350440043004010017043004320430043D044204
520053004500540001000100010001000100010001000D000A004C0061006200 3004360438044204380420004404300439043B04200037042000410435044004
65006C0031000100440045004600410055004C0054005F004300480041005200 320435044004300401004C006F00610064002000660069006C00650020006600
53004500540001000100010001000100010001000D000A004C00610062006500 72006F006D002000730065007200760065007200010001000100010001000D00
6C0032000100440045004600410055004C0054005F0043004800410052005300 0A0054006F006F006C0042007500740074006F006E00360001001E0442043A04
4500540001000100010001000100010001000D000A004C006100620065006C00 40044B0442044C0420004404300439043B042000320420003F04400438043B04
33000100440045004600410055004C0054005F00430048004100520053004500 3E04360435043D043804380401001204560434043A0440043804420438042000
540001000100010001000100010001000D000A006C00620041006C006C006F00 4404300439043B042000320420003F0440043E043304400430043C0456042000
770065006400530070006100630065000100440045004600410055004C005400 01004F00700065006E002000660069006C006500200069006E00200061007000
70006C00690063006100740069006F006E00010001000100010001000D000A00
54006F006F006C0042007500740074006F006E003700010021043E0445044004
30043D04380442044C042000420435043A04430449043804390420003F044004
3E0435043A04420420003D043004200041043504400432043504400401001704
310435044004350433044204380420003F043E0442043E0447043D0438043904
20003F0440043E0435043A04420420003D043004200041043504400432043504
40040100550070006C006F00610064002000630075007200720065006E007400
2000700072006F006A00650063007400200074006F0020007300650072007600
65007200010001000100010001000D000A006100520065006600720065007300
680001001E0431043D043E043204380442044C04200041043F04380441043E04
3A0420004404300439043B043E04320401001F043E043D043E04320438044204
3804200041043F04380441043E043A0420004404300439043B04560432040100
52006500660072006500730068002000660069006C006500730020006C006900
73007400010001000100010001000D000A006100550070006C006F0061006400
0100170430043304400443043704380442044C0420004404300439043B042000
3D0430042000410435044004320435044004010017043004320430043D044204
3004360438044204380420004404300439043B0420003D043004200041043504
40043204350440040100550070006C006F00610064002000660069006C006500
200074006F002000730065007200760065007200010001000100010001000D00
0A006100440065006C00460069006C006500460072006F006D00010023043404
30043B04380442044C0420004404300439043B04010012043804340430043B04
38044204380420004404300439043B040100440065006C006500740065002000
660069006C006500010001000100010001000D000A0061004500780069007400
010012044B0445043E0434040100120438044504560434040100450078006900
7400010001000100010001000D000A007300740044006900730070006C006100
79004C006100620065006C0073005F0055006E00690063006F00640065000D00
0A00460069006C0065005400610062006C006500460069006C00650053006900
7A0065000100460069006C006500530069007A00650001000100010001000100
010001000D000A00460069006C0065005400610062006C006500460069006C00
650044006100740065000100460069006C006500440061007400650001000100
010001000100010001000D000A00460069006C0065005400610062006C006500
3100460069006C006500530069007A0065000100460069006C00650053006900
7A00650001000100010001000100010001000D000A00460069006C0065005400
610062006C0065003100460069006C0065004400610074006100010046006900
6C006500440061007400610001000100010001000100010001000D000A007300
740046006F006E00740073005F0055006E00690063006F00640065000D000A00
540046005F0052006500730065007200760001005400610068006F006D006100
01000100010001000100010001000D000A004C006100620065006C0031000100
5400610068006F006D00610001000100010001000100010001000D000A004C00
6100620065006C00320001005400610068006F006D0061000100010001000100
0100010001000D000A004C006100620065006C00330001005400610068006F00
6D00610001000100010001000100010001000D000A006C00620041006C006C00
6F007700650064005300700061006300650001005400610068006F006D006100
01000100010001000100010001000D000A006C00620055007300650064005300
700061006300650001005400610068006F006D00610001000100010001000100
010001000D000A00730074004D0075006C00740069004C0069006E0065007300
5F0055006E00690063006F00640065000D000A00730074005300740072006900
6E00670073005F0055006E00690063006F00640065000D000A00730074004F00
740068006500720053007400720069006E00670073005F0055006E0069006300
6F00640065000D000A00460069006C0065005400610062006C0065002E004300
75007200720065006E007400560065007200730069006F006E00010039002E00
30003000200001000100010001000100010001000D000A00460069006C006500
5400610062006C00650031002E00560065007200730069006F006E0001003700
2E00370034002E00300030002000500072006F00660065007300730069006F00
6E0061006C002000450064006900740069006F006E0001000100010001000100
010001000D000A007300740043006F006C006C0065006300740069006F006E00
73005F0055006E00690063006F00640065000D000A00460069006C0065005400
610062006C0065002E0049006E0064006500780044006500660073005B003000
5D002E0044006500730063004600690065006C00640073000100460069006C00
65004E0061006D00650001000100010001000100010001000D000A0046006900
6C0065005400610062006C0065002E0049006E00640065007800440065006600
73005B0030005D002E004600690065006C00640073000100460069006C006500
4E0061006D00650001000100010001000100010001000D000A00730074004300
68006100720053006500740073005F0055006E00690063006F00640065000D00
0A00540046005F00520065007300650072007600010044004500460041005500
4C0054005F004300480041005200530045005400010001000100010001000100
01000D000A004C006100620065006C0031000100440045004600410055004C00
54005F0043004800410052005300450054000100010001000100010001000100
0D000A004C006100620065006C0032000100440045004600410055004C005400
5F00430048004100520053004500540001000100010001000100010001000D00 5F00430048004100520053004500540001000100010001000100010001000D00
0A006C0062005500730065006400530070006100630065000100440045004600 0A004C006100620065006C0033000100440045004600410055004C0054005F00
410055004C0054005F0043004800410052005300450054000100010001000100 430048004100520053004500540001000100010001000100010001000D000A00
0100010001000D000A0042007500740074006F006E0031000100440045004600 6C00620041006C006C006F007700650064005300700061006300650001004400
410055004C0054005F0043004800410052005300450054000100010001000100
0100010001000D000A00620074006E0053006100760065000100440045004600
410055004C0054005F0043004800410052005300450054000100010001000100
0100010001000D000A00620074006E004C006F00610064000100440045004600
410055004C0054005F0043004800410052005300450054000100010001000100
0100010001000D000A00620074006E00440065006C0065007400650001004400
45004600410055004C0054005F00430048004100520053004500540001000100 45004600410055004C0054005F00430048004100520053004500540001000100
010001000100010001000D000A00} 010001000100010001000D000A006C0062005500730065006400530070006100
630065000100440045004600410055004C0054005F0043004800410052005300
4500540001000100010001000100010001000D000A00}
end
object DataSource1: TDataSource
DataSet = FileTable
Left = 136
Top = 56
end
object FileTable: TSQLMemTable
CurrentVersion = '9.00 '
StoreDefs = True
DatabaseName = 'MEMORY'
ReadOnly = False
CaseInsensitive = False
IndexDefs = <
item
Name = 'FileTableIndex1'
DescFields = 'FileName'
Fields = 'FileName'
Options = [ixDescending]
end>
FieldDefs = <
item
Name = 'FileName'
DataType = ftString
Size = 255
end
item
Name = 'FileSize'
DataType = ftString
Size = 20
end
item
Name = 'FileDate'
DataType = ftString
Size = 20
end>
TableName = 'Table1997262626_14648'
Exclusive = False
MemoryTableAllocBy = 1000
Left = 256
Top = 64
object FileTableFileName: TStringField
FieldName = 'FileName'
Size = 255
end
object FileTableFileSize: TStringField
FieldName = 'FileSize'
end
object FileTableFileDate: TStringField
FieldName = 'FileDate'
end
end
object ActionList1: TActionList
Images = FSCS_Main.imagePanel
Left = 464
Top = 120
object aRefresh: TAction
Caption = 'Refresh'
Hint = #1054#1073#1085#1086#1074#1080#1090#1100' '#1089#1087#1080#1089#1086#1082' '#1092#1072#1081#1083#1086#1074
ImageIndex = 96
OnExecute = aRefreshExecute
end
object aUpload: TAction
Caption = #1047#1072#1075#1088#1091#1079#1080#1090#1100' '#1092#1072#1081#1083' '#1085#1072' '#1089#1077#1088#1074#1077#1088
Hint = #1047#1072#1075#1088#1091#1079#1080#1090#1100' '#1092#1072#1081#1083' '#1085#1072' '#1089#1077#1088#1074#1077#1088
ImageIndex = 1
OnExecute = aUploadExecute
end
object aLoad: TAction
Caption = #1047#1072#1075#1088#1091#1079#1080#1090#1100' '#1092#1072#1081#1083' '#1089' '#1089#1077#1088#1074#1077#1088#1072
ImageIndex = 2
OnExecute = aLoadExecute
end
object aDelFileFrom: TAction
Caption = #1059#1076#1072#1083#1080#1090#1100' '#1092#1072#1081#1083
Hint = #1059#1076#1072#1083#1080#1090#1100' '#1092#1072#1081#1083
ImageIndex = 50
OnExecute = aDelFileFromExecute
end
object aToPM: TAction
Caption = 'aToPM'
OnExecute = aToPMExecute
end
object aFromPM: TAction
Caption = 'aFromPM'
OnExecute = aFromPMExecute
end
object aExit: TAction
Caption = 'aExit'
Hint = #1042#1099#1093#1086#1076
ImageIndex = 9
ShortCut = 27
OnExecute = aExitExecute
end
end
object PopupMenu1: TPopupMenu
Left = 256
Top = 176
object N1: TMenuItem
Action = aLoad
end
object N2: TMenuItem
Action = aUpload
end
object aDelete1: TMenuItem
Action = aDelFileFrom
end
end
object FileTable1: TkbmMemTable
Active = True
DesignActivation = True
AttachedAutoRefresh = True
AttachMaxCount = 1
FieldDefs = <
item
Name = 'FileName'
DataType = ftString
Size = 256
end
item
Name = 'FileSize'
DataType = ftString
Size = 20
end
item
Name = 'FileData'
DataType = ftString
Size = 20
end>
IndexDefs = <>
SortOptions = []
PersistentBackup = False
ProgressFlags = [mtpcLoad, mtpcSave, mtpcCopy]
LoadedCompletely = False
SavedCompletely = False
FilterOptions = []
Version = '7.74.00 Professional Edition'
LanguageID = 0
SortID = 0
SubLanguageID = 1
LocaleID = 1024
Left = 368
Top = 56
object FileTable1FileName: TStringField
FieldName = 'FileName'
Size = 256
end
object FileTable1FileSize: TStringField
FieldName = 'FileSize'
end
object FileTable1FileData: TStringField
FieldName = 'FileData'
end
end
object Query1: TQuery
Left = 352
Top = 216
end
object MemSQL1: TkbmMemSQL
Left = 400
Top = 192
end end
end end

View File

@ -8,28 +8,74 @@ uses
IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient,
IdExplicitTLSClientServerBase, IdFTP, idUri, idFTPCommon,idFTPLIST, IdAllFTPListParsers, IdExplicitTLSClientServerBase, IdFTP, idUri, idFTPCommon,idFTPLIST, IdAllFTPListParsers,
IdFTPListParseBase,IdFTPListParseAS400, IdFTPListParsePcTcp, IdFTPListTypes, IdFTPListParseBase,IdFTPListParseAS400, IdFTPListParsePcTcp, IdFTPListTypes,
Wininet, siComp, siLngLnk; Wininet, siComp, siLngLnk, Grids, DBGrids, RzDBGrid, DB, SQLMemMain,
cxGraphics, cxControls, cxLookAndFeels, cxLookAndFeelPainters, cxStyles,
cxCustomData, cxFilter, cxData, cxDataStorage, cxEdit, cxNavigator, cxDBData,
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxGridLevel,
cxClasses, cxGridCustomView, cxGrid, ExtCtrls, RzPanel, ActnList,
PlatformDefaultStyleActnCtrls, ActnMan, ToolWin, ActnCtrls, ComCtrls, acDBGrid,
Menus, kbmMemTable, kbmMemSQL, DBTables;
type type
TF_Reserv = class(TForm) TF_Reserv = class(TForm)
Button1: TButton;
ListBox1: TListBox;
btnSave: TBitBtn;
btnLoad: TBitBtn;
btnDelete: TBitBtn;
Label1: TLabel; Label1: TLabel;
Label2: TLabel; Label2: TLabel;
Label3: TLabel; Label3: TLabel;
lbAllowedSpace: TLabel; lbAllowedSpace: TLabel;
lbUsedSpace: TLabel; lbUsedSpace: TLabel;
siLangLinked1: TsiLangLinked; siLangLinked1: TsiLangLinked;
procedure Button1Click(Sender: TObject); DataSource1: TDataSource;
FileTable: TSQLMemTable;
FileTableFileSize: TStringField;
FileTableFileDate: TStringField;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ActionList1: TActionList;
aRefresh: TAction;
aUpload: TAction;
aLoad: TAction;
aDelFileFrom: TAction;
aExit: TAction;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
aDelete1: TMenuItem;
FileTable1: TkbmMemTable;
aToPM: TAction;
aFromPM: TAction;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
FileTableFileName: TStringField;
Query1: TQuery;
FileTable1FileName: TStringField;
FileTable1FileSize: TStringField;
FileTable1FileData: TStringField;
MemSQL1: TkbmMemSQL;
cxGrid1DBTableView1: TcxGridDBTableView;
cxGrid1Level1: TcxGridLevel;
cxGrid1: TcxGrid;
cxGrid1DBTableView1FileName: TcxGridDBColumn;
cxGrid1DBTableView1FileSize: TcxGridDBColumn;
cxGrid1DBTableView1FileDate: TcxGridDBColumn;
//procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject); procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject); procedure FormShow(Sender: TObject);
procedure btnSaveClick(Sender: TObject); //procedure btnSaveClick(Sender: TObject);
procedure btnLoadClick(Sender: TObject); //procedure btnLoadClick(Sender: TObject);
procedure btnDeleteClick(Sender: TObject); //procedure btnDeleteClick(Sender: TObject);
procedure aRefreshExecute(Sender: TObject);
procedure aUploadExecute(Sender: TObject);
procedure aExitExecute(Sender: TObject);
procedure aLoadExecute(Sender: TObject);
procedure aDelFileFromExecute(Sender: TObject);
procedure aToPMExecute(Sender: TObject);
procedure aFromPMExecute(Sender: TObject);
//procedure RzDBGrid1TitleClick(Column: TColumn);
private private
{ Private declarations } { Private declarations }
public public
@ -39,9 +85,11 @@ type
function GetFileListFromFtp(aFtpStr: string): TStringList; function GetFileListFromFtp(aFtpStr: string): TStringList;
function DeleteFileFromFtp(aFtpStr, aFileName: string): boolean; function DeleteFileFromFtp(aFtpStr, aFileName: string): boolean;
Procedure RefreshFileList; Procedure RefreshFileList;
Procedure SetButtons(aSave, aLoad, aDelete: Boolean); //Procedure SetButtons(aSave, aLoad, aDelete: Boolean);
Procedure SelectItem; Procedure SelectItem;
Function HexToStr(const HexStr: string): string; Function HexToStr(const HexStr: string): string;
function SaveCurrProjToTemFile: boolean;
//function GetTempDir: string;
end; end;
var var
@ -49,13 +97,88 @@ var
Selected_Item: integer; Selected_Item: integer;
FClientLimit: integer; // Ëèìèò êëèåíòà íà äèñêîâîå ïðîñòðàíñòâî íà ñåðâàêå, ÌÁ FClientLimit: integer; // Ëèìèò êëèåíòà íà äèñêîâîå ïðîñòðàíñòâî íà ñåðâàêå, ÌÁ
FFact: Integer; // Çàíÿòî êëèåíòîì íà ñåðâåðå, ÌÁ FFact: Integer; // Çàíÿòî êëèåíòîì íà ñåðâåðå, ÌÁ
FileDateList: TStringList;
FileSizeList: TStringList;
MyHeaderStyle: TcxStyle;
//FConnStr: string; //FConnStr: string;
implementation implementation
uses USCS_Main, U_Common, U_BaseCommon, U_BaseConstants; uses USCS_Main, U_Common, U_BaseCommon, U_BaseConstants, U_ProtectionCommon, U_Main, U_SCSComponent;
{$R *.dfm} {$R *.dfm}
(*
function GetTempDir: string;
var
buff: pchar;
s: string;
begin
if length(TempDir) > 0 then
begin
if DirectoryExists(TempDir) then
Result := TempDir
else
begin
TempDir := '';
Result := GetTempDir;
end;
end
else
begin
// Tolik 24/06/* 2019 --
s := GetEnvironmentVariable('tmp');
if ((s = '') or (not DirectoryExists(s))) then
s := GetEnvironmentVariable('temp');
if ((s = '') or (not DirectoryExists(s))) then
s := exedir;
(*
// Tolik 21/06/2019 --
getmem(buff, 256*2);
//
s := '';
if (GetEnvironmentVariable('tmp',buff, 254) >0)
and (DirectoryExists(buff)) then
begin
s := buff;
end
else
if (GetEnvironmentVariable('temp',buff, 254) >0)
and (DirectoryExists(buff)) then
begin
s := buff;
end
else
s := exedir;
freemem(buff);
*)
(* try
if not DirectoryExists(s + OurTempDir) then
MkDir(s + OurTempDir);
TempDir := s + OurTempDir;
result := TempDir;
except
ShowMessage(cTmpDirErr);
{$if Defined(ES_GRAPH_SC)}
Application.Terminate;
{$else}
ExitProcess(1);
{$ifend}
end;
end;
end;
*)
function TF_Reserv.SaveCurrProjToTemFile: boolean;
var TempProj: TSCSProject;
CurrProjNode: TTreeNode;
begin
CurrProjNode := F_ProjMan.GSCSBase.CurrProject.TreeViewNode;
Result := false;
end;
function TF_Reserv.HexToStr(const HexStr: string): string; function TF_Reserv.HexToStr(const HexStr: string): string;
var var
i: Integer; i: Integer;
@ -72,7 +195,7 @@ end;
Procedure TF_Reserv.SelectItem; Procedure TF_Reserv.SelectItem;
var i: integer; var i: integer;
begin begin
if F_Reserv.ListBox1.Count > 0 then {if F_Reserv.ListBox1.Count > 0 then
begin begin
for i := 0 to F_Reserv.ListBox1.Count - 1 do for i := 0 to F_Reserv.ListBox1.Count - 1 do
begin begin
@ -87,13 +210,141 @@ begin
end end
else else
Selected_Item := 0; Selected_Item := 0;
}
end; end;
(*
Procedure TF_Reserv.SetButtons(aSave, aLoad, aDelete: Boolean); Procedure TF_Reserv.SetButtons(aSave, aLoad, aDelete: Boolean);
begin begin
{
F_Reserv.btnSave.Enabled := aSave; F_Reserv.btnSave.Enabled := aSave;
F_Reserv.btnLoad.Enabled := aLoad; F_Reserv.btnLoad.Enabled := aLoad;
F_Reserv.btnDelete.Enabled := aDelete; F_Reserv.btnDelete.Enabled := aDelete;
}
end;
*)
procedure TF_Reserv.aUploadExecute(Sender: TObject);
var OpenDlg: TOpenDialog;
FileNameShort, Filename: string;
i: integer;
begin
OpenDlg := TOpenDialog.Create(nil);
OpenDlg.Filter := ' (*.scs)|*.SCS';
if OpenDlg.Execute then
begin
FileName := OpenDlg.FileName;
if SendFileToFtp(HexToStr(GFtpConnectStr), FileName) then
RefreshFileList;
end;
OpenDlg.Free;
end;
procedure TF_Reserv.aDelFileFromExecute(Sender: TObject);
begin
if DeleteFileFromFtp(HexToStr(GFtpConnectStr), f_Reserv.filetable.fieldvalues['filename']) then
begin
RefreshFileList;
end;
end;
procedure TF_Reserv.aExitExecute(Sender: TObject);
begin
F_Reserv.Close;
end;
procedure TF_Reserv.aFromPMExecute(Sender: TObject);
var tdir: string;
canProceed, formHide: Boolean;
fName: String;
begin
if CheckIsOpenProject(false) then
begin
tdir := '';
tdir := GetTempDir;
if tdir <> '' then
begin
FName := tdir + '\'+ F_ProjMan.GSCSBase.CurrProject.Name + '.scs';
if FileExists(FName) then
DeleteFile(FName);
if F_ProjMan.GSCSBase.CurrProject.SaveToStreamOrFile(nil, FName) then
begin
if SendFileToFtp(HexToStr(GFtpConnectStr), FName) then
RefreshFileList;
end;
if FileExists(FName) then
DeleteFile(FName);
end;
end
else
ShowMessage('');
end;
procedure TF_Reserv.aLoadExecute(Sender: TObject);
var SaveDlg: TSaveDialog;
FileName: string;
i: integer;
begin
FileName := '';
FileName := FileTable.fieldvalues['FileName'];
if fileName <> '' then
begin
SaveDlg := TSaveDialog.Create(nil);
SaveDlg.Filter := ' (*.scs)|*.SCS';
SaveDlg.FileName := fileName;
if SaveDlg.Execute then
begin
FileName := SaveDlg.FileName;
GetFileFromFtp(HexToStr(GFtpConnectStr), extractfilename(FileName), SaveDlg.FileName);
end;
SaveDlg.Free;
end;
end;
procedure TF_Reserv.aRefreshExecute(Sender: TObject);
begin
RefreshFileList;
end;
procedure TF_Reserv.aToPMExecute(Sender: TObject);
var tdir: string;
canProceed, formHide: Boolean;
begin
tdir := '';
tdir := GetTempDir;
if tdir <> '' then
begin
CanProceed := False;
formHide := False;
if CheckIsOpenProject(false) then
begin
if MessageBox(F_Reserv.Handle, PChar(cFtpmes7), PChar(cWarningSlowCap), MB_YESNO) = IDYes then
begin
F_Reserv.Hide;
formHide := True;
CanProceed := CloseCurrProject(true) <> IDCancel;
end;
end
else
CanProceed := True;
if CanProceed then
begin
GetFileFromFtp(HexToStr(GFtpConnectStr), FileTable.FieldValues['FileName'], tdir + '\'+ FileTable.FieldValues['FileName']);
if FileExists(tdir + '\'+ FileTable.FieldValues['FileName']) then
begin
F_ProjMan.LoadProjectFromFile(tdir + '\'+ FileTable.FieldValues['FileName']);
DeleteFile(tdir + '\'+ FileTable.FieldValues['FileName']);
F_Reserv.Close;
end;
end
else
begin
if formHide then
F_Reserv.ShowModal;
end;
end;
end; end;
Procedure TF_Reserv.RefreshFileList; Procedure TF_Reserv.RefreshFileList;
@ -108,7 +359,10 @@ begin
vLoad := False; vLoad := False;
vDelete := False; vDelete := False;
//FConnStr := HexToStr(GFtpConnectStr); //FConnStr := HexToStr(GFtpConnectStr);
F_Reserv.ListBox1.Clear; //F_Reserv.ListBox1.Clear;
f_Reserv.FileTable.Close;
f_Reserv.FileTable.Open;
tmppath := GetDefaultTempPath;//+'\' + 'USER.CFG'; tmppath := GetDefaultTempPath;//+'\' + 'USER.CFG';
{ FileList := F_Reserv.GetFileListFromFtp(GFtpConnectStr); { FileList := F_Reserv.GetFileListFromFtp(GFtpConnectStr);
if FileList <> nil then if FileList <> nil then
@ -142,39 +396,100 @@ begin
CloseFile(f); CloseFile(f);
UserLimit := strtoint(s); UserLimit := strtoint(s);
lballowedspace.Caption := s; lballowedspace.Caption := s;
vSave := true; //vSave := true;
vLoad := true; //vLoad := true;
vDelete := true; //vDelete := true;
//// ////
FileList := F_Reserv.GetFileListFromFtp(HexToStr(GFtpConnectStr)); FileList := F_Reserv.GetFileListFromFtp(HexToStr(GFtpConnectStr));
if FileList <> nil then if FileList <> nil then
begin begin
F_Reserv.ListBox1.Clear; //FileTable.ReadOnly := False;
// F_Reserv.FileTable.EmptyTable;
While F_Reserv.FileTable.RecordCount > 0 do
begin
F_Reserv.FileTable.Delete;
end;
//F_Reserv.ListBox1.Clear;
for i := 0 to fileList.Count - 1 do // Client Config for i := 0 to fileList.Count - 1 do // Client Config
begin begin
F_Reserv.ListBox1.AddItem(filelist[i], nil); //F_Reserv.ListBox1.AddItem(filelist[i], nil);
F_Reserv.FileTable.Append;
F_Reserv.FileTable.FieldByName('FileName').AsString := FileList[i];
F_Reserv.FileTable.FieldByName('FileDate').AsString := FileDateList[i];
F_Reserv.FileTable.FieldByName('FileSize').AsString := FileSizeList[i];
end; end;
if F_Reserv.ListBox1.Items.Count = 0 then //FileTable.ReadOnly := True;
//if F_Reserv.ListBox1.Items.Count = 0 then
F_Reserv.aDelFileFrom.Enabled := True;
F_Reserv.aLoad.Enabled := True;
F_Reserv.aToPM.Enabled := True;
if F_Reserv.FileTable.RecordCount = 0 then
begin begin
vDelete := False; F_Reserv.aDelFileFrom.Enabled := False;
vLoad := False; F_Reserv.aLoad.Enabled := False;
F_Reserv.aToPM.Enabled := False;
end
else
begin
F_Reserv.FileTable.First;
F_Reserv.cxGrid1DBTableView1.Controller.FocusedRowIndex := 0;
end; end;
SelectItem; //F_Reserv.FileTable.First;
//SelectItem;
fileList.Free; fileList.Free;
if UserLimit >= strtoint(lbUsedSpace.Caption) then if UserLimit <= strtoint(lbUsedSpace.Caption) then
vSave := True begin
F_Reserv.aUpload.Enabled := False;
F_Reserv.aFromPM.Enabled := False;
end
else else
vSave := False; begin
F_Reserv.aUpload.Enabled := True;
//F_Reserv.aFromPM.Enabled := True;
if CheckIsOpenProject(false) then
F_Reserv.aFromPM.Enabled := True
else
F_Reserv.aFromPM.Enabled := False;
end;
end
else
begin
F_Reserv.aDelFileFrom.Enabled := False;
F_Reserv.aLoad.Enabled := False;
F_Reserv.aToPM.Enabled := False;
F_Reserv.aUpload.Enabled := False;
F_Reserv.aFromPM.Enabled := False;
Showmessage('cFtpmes12');
end; end;
end
else
begin
F_Reserv.aDelFileFrom.Enabled := False;
F_Reserv.aLoad.Enabled := False;
F_Reserv.aToPM.Enabled := False;
F_Reserv.aUpload.Enabled := False;
F_Reserv.aFromPM.Enabled := False;
Showmessage('cFtpmes12');
end; end;
SetButtons(vSave, vLoad, vDelete); //SetButtons(vSave, vLoad, vDelete);
end; end;
{
function TF_Reserv.SendFileToFtp(aFtpStr, aFileName: string): boolean; procedure TF_Reserv.RzDBGrid1TitleClick(Column: TColumn);
var NameShort: String; var FldName: string;
begin
FldName := Column.FieldName;
FileTable.IndexName := 'Filename';
end;
}
function TF_Reserv.SendFileToFtp(aFtpStr, aFileName: string): boolean;
var NameShort, NewName: String;
Ftp_serv: TIdFtp; Ftp_serv: TIdFtp;
Uri: TIdURI; Uri: TIdURI;
bm: TBookmark;
FileNameExists: Boolean;
i: integer;
begin begin
Result := False; Result := False;
if FileExists(aFileName) then if FileExists(aFileName) then
@ -187,7 +502,7 @@ end;
ftp_serv.Password := uri.password; ftp_serv.Password := uri.password;
ftp_serv.Port := 21; ftp_serv.Port := 21;
ftp_serv.Passive := true; ftp_serv.Passive := true;
ftp_serv.TransferType := ftBinary;
try try
ftp_serv.Connect; ftp_serv.Connect;
except except
@ -204,6 +519,59 @@ end;
if ftp_serv.Connected then if ftp_serv.Connected then
begin begin
NameShort := ExtractFileName(aFileName); NameShort := ExtractFileName(aFileName);
if F_Reserv.FileTable.RecordCount > 0 then //ïðîâåðêà íà íàëè÷èå ôàéëà íà ñåðâåðå
begin
FileNameExists := false;
bm := F_Reserv.FileTable.Bookmark;
F_Reserv.FileTable.DisableControls;
F_Reserv.FileTable.First;
while not F_Reserv.FileTable.Eof do
begin
if NameShort = F_Reserv.FileTable.FieldValues['FileName'] then
begin
FileNameExists := true;
break;
end;
F_Reserv.FileTable.Next;
end;
F_Reserv.FileTable.Bookmark := bm;
F_Reserv.FileTable.EnableControls;
end;
if FileNameExists then // åñëè òàêîå èìÿ íà ñåðâàêå åñòü - çàïðîñèòü ó ïîëüçîâàòåëÿ äåéñòâèå
begin // èëè ïåðåçàïèñàòü èëè çàïèñàòü ñ äðóãèì èìåíåì
if MessageBox(F_Reserv.Handle, PChar(cFtpmes8), PChar(cWarningSlowCap), MB_YESNO) <> IDYes then
begin
NameShort := Trim(InputBox(cFtpmes9, cFtpmes10, ''));
if length(NameShort) > 0 then
begin
NewName := '';
for i := 1 to Length(NameShort) do
begin
if NameShort[i] = '.' then
break
else
NewName := NewName + NameShort[i];
end;
if NewName <> '' then
NameShort := NewName + '.scs'
else
begin
ShowMessage(cFtpmes11);
ftp_serv.Disconnect;
ftp_serv.Free;
URi.Free;
exit;
end;
end;
end
else
DeleteFileFromFtp(aFtpStr, aFileName); //åñëè ïåðåçàïèñàòü, òî óäàëèòü êîïèþ
end;
try try
ftp_serv.Put(aFileName, NameShort); ftp_serv.Put(aFileName, NameShort);
Result := True; Result := True;
@ -237,6 +605,7 @@ end;
ftp_serv.Password := uri.password; ftp_serv.Password := uri.password;
ftp_serv.Port := 21; ftp_serv.Port := 21;
ftp_serv.Passive := true; ftp_serv.Passive := true;
ftp_serv.TransferType := ftBinary;
try try
ftp_serv.Connect; ftp_serv.Connect;
@ -294,7 +663,7 @@ end;
var var
Ftp_serv: TIdFtp; Ftp_serv: TIdFtp;
Uri: TIdURI; Uri: TIdURI;
Size: Double; Size, FileSize: Double;
i, rsize: integer; i, rsize: integer;
begin begin
Result := TstringList.Create; Result := TstringList.Create;
@ -331,7 +700,10 @@ end;
Size := 0; Size := 0;
for i := 0 to ftp_serv.DirectoryListing.Count - 1 do for i := 0 to ftp_serv.DirectoryListing.Count - 1 do
begin begin
Size := Size + ftp_serv.Size(ftp_serv.DirectoryListing[i].FileName); FileSize := ftp_serv.Size(ftp_serv.DirectoryListing[i].FileName);
Size := Size + FileSize;
FileDateList.Add(DateTostr(ftp_serv.FileDate(ftp_serv.DirectoryListing[i].FileName)));
FileSizeList.Add(FloatToStr(RoundX(FileSize/1048576, 3)));
end; end;
rsize := round(size/1048576); rsize := round(size/1048576);
lbUsedSpace.Caption := inttostr(rsize); lbUsedSpace.Caption := inttostr(rsize);
@ -402,10 +774,13 @@ end;
URi.Free; URi.Free;
end; end;
(*
procedure TF_Reserv.btnDeleteClick(Sender: TObject); procedure TF_Reserv.btnDeleteClick(Sender: TObject);
var i: integer; var i: integer;
begin begin
i := f_Reserv.RzDBGrid1.SelectedIndex;
i := 0;
{
if ListBox1.Count > 0 then if ListBox1.Count > 0 then
begin begin
for i := 0 to ListBox1.Count - 1 do for i := 0 to ListBox1.Count - 1 do
@ -421,14 +796,17 @@ begin
end; end;
end; end;
end; end;
}
end; end;
*)
(*
procedure TF_Reserv.btnLoadClick(Sender: TObject); procedure TF_Reserv.btnLoadClick(Sender: TObject);
var SaveDlg: TSaveDialog; var SaveDlg: TSaveDialog;
FileName: string; FileName: string;
i: integer; i: integer;
begin begin
FileName := ''; FileName := '';
{
for i := 0 to ListBox1.Count - 1 do for i := 0 to ListBox1.Count - 1 do
begin begin
if ListBox1.Selected[i] = true then if ListBox1.Selected[i] = true then
@ -437,6 +815,7 @@ begin
break; break;
end; end;
end; end;
}
if fileName <> '' then if fileName <> '' then
begin begin
SaveDlg := TSaveDialog.Create(nil); SaveDlg := TSaveDialog.Create(nil);
@ -450,13 +829,15 @@ begin
SaveDlg.Free; SaveDlg.Free;
end; end;
end; end;
*)
(*
procedure TF_Reserv.btnSaveClick(Sender: TObject); procedure TF_Reserv.btnSaveClick(Sender: TObject);
var OpenDlg: TOpenDialog; var OpenDlg: TOpenDialog;
FileNameShort, Filename: string; FileNameShort, Filename: string;
i: integer; i: integer;
begin begin
{
for i := 0 to ListBox1.Count - 1 do for i := 0 to ListBox1.Count - 1 do
begin begin
if ListBox1.Selected[i] = true then if ListBox1.Selected[i] = true then
@ -465,6 +846,7 @@ begin
break; break;
end; end;
end; end;
}
OpenDlg := TOpenDialog.Create(nil); OpenDlg := TOpenDialog.Create(nil);
OpenDlg.Filter := ' (*.scs)|*.SCS'; OpenDlg.Filter := ' (*.scs)|*.SCS';
if OpenDlg.Execute then if OpenDlg.Execute then
@ -476,37 +858,42 @@ begin
end; end;
OpenDlg.Free; OpenDlg.Free;
end; end;
*)
procedure TF_Reserv.Button1Click(Sender: TObject); {procedure TF_Reserv.Button1Click(Sender: TObject);
begin begin
F_Reserv.Close; F_Reserv.Close;
end; end;
}
procedure TF_Reserv.FormCreate(Sender: TObject); procedure TF_Reserv.FormCreate(Sender: TObject);
begin begin
FileDateList := TStringList.Create;
FileSizeList := TStringList.Create;
{ {
btnSave.Caption := 'Çàãðóçèòü ôàéë' + #13#10 + ' íà ñåðâåð'; btnSave.Caption := 'Çàãðóçèòü ôàéë' + #13#10 + ' íà ñåðâåð';
btnLoad.Caption := 'Çàãðóçèòü ôàéë' + #13#10 + ' ñ ñåðâåðà'; btnLoad.Caption := 'Çàãðóçèòü ôàéë' + #13#10 + ' ñ ñåðâåðà';
btnDelete.Caption := 'Óäàëèòü ôàéë' + #13#10 + ' íà ñåðâåðå'; btnDelete.Caption := 'Óäàëèòü ôàéë' + #13#10 + ' íà ñåðâåðå';
} }
btnSave.Caption := cFtpbtnSaveCaption; {btnSave.Caption := cFtpbtnSaveCaption;
btnLoad.Caption := cFtpbtnLoadCaption; btnLoad.Caption := cFtpbtnLoadCaption;
btnDelete.Caption := cFtpbtnDeleteCaption; btnDelete.Caption := cFtpbtnDeleteCaption;}
Selected_Item := 0; Selected_Item := 0;
FClientLimit := 0; FClientLimit := 0;
FFact := 0; FFact := 0;
lballowedspace.Font.Color := clBlue; lballowedspace.Font.Color := clBlue;
lbUsedSpace.Font.Color := clBlue; lbUsedSpace.Font.Color := clBlue;
MyHeaderStyle := TcxStyle.Create(nil);
MyHeaderStyle.Font.Style := [fsBold];
cxGrid1DBTableView1.Styles.Header := MyHeaderStyle;
end; end;
procedure TF_Reserv.FormShow(Sender: TObject); procedure TF_Reserv.FormShow(Sender: TObject);
var FileList: TStringList; var FileList: TStringList;
i: integer; i: integer;
begin begin
FileDateList.Clear;
FileSizeList.Clear;
RefreshFileList; RefreshFileList;
//SelectItem; //SelectItem;
end; end;
end. end.

View File

@ -3,7 +3,7 @@ interface
uses uses
Windows, Forms, Graphics, Registry, Classes, SysUtils, Messages,{ bz2,} Dialogs, Windows, Forms, Graphics, Registry, Classes, SysUtils, Messages,{ bz2,} Dialogs,
ComCtrls, ShlObj, ShellAPI, Controls, IcsPlus, Printers, ComCtrls, ShlObj, ShellAPI, Controls, IcsPlus, Printers,
AbBzip2, AbZBrows, AbUnZper, AbArcTyp, AbMeter, AbBrowse, AbBase; AbBzip2, AbZBrows, AbUnZper, AbArcTyp, AbMeter, AbBrowse, AbBase, U_BaseConstants;
type type
// Ïåðèîä ëèöåíçèè // Ïåðèîä ëèöåíçèè
TPeriod = (pWeek, pMonth, pQuarter); TPeriod = (pWeek, pMonth, pQuarter);
@ -732,7 +732,10 @@ begin
TempDir := s + OurTempDir; TempDir := s + OurTempDir;
result := TempDir; result := TempDir;
except except
ShowMessage('Îøèáêà âðåìåííîé äèðåêòîðèè!'); //Tolik 31/01/2025 --
//ShowMessage('Îøèáêà âðåìåííîé äèðåêòîðèè!');
ShowMessage(cTmpDirErr);
//
{$if Defined(ES_GRAPH_SC)} {$if Defined(ES_GRAPH_SC)}
Application.Terminate; Application.Terminate;
{$else} {$else}

View File

@ -2478,8 +2478,6 @@ object F_AddComponent: TF_AddComponent
object tsApplyInPM: TRzTabSheet object tsApplyInPM: TRzTabSheet
TabVisible = False TabVisible = False
Caption = 'tsApplyInPM' Caption = 'tsApplyInPM'
ExplicitWidth = 0
ExplicitHeight = 0
object GroupBox_ApplyForAllComponents: TRzGroupBox object GroupBox_ApplyForAllComponents: TRzGroupBox
Left = 0 Left = 0
Top = 0 Top = 0

View File

@ -488,6 +488,8 @@ const //*** Component Types
ctsnUZO = 'UZO_EL'; // Óñòðîéñòâî çàùèòíîãî îòêëþ÷åíèÿ ctsnUZO = 'UZO_EL'; // Óñòðîéñòâî çàùèòíîãî îòêëþ÷åíèÿ
ctsnElCounter = 'EL_COUNTER'; // Ñ÷åò÷èê ýëåêòðè÷åñêèé ctsnElCounter = 'EL_COUNTER'; // Ñ÷åò÷èê ýëåêòðè÷åñêèé
ctsnSwitchInput = 'EL_INPUTSHITCH'; // ââîäíîé àâòîìàò ctsnSwitchInput = 'EL_INPUTSHITCH'; // ââîäíîé àâòîìàò
ctsnWireTray = 'WIRETRAY'; // Tolik 10/04/2025 -- Лоток проволочный
// //
//*** ReportTypes //*** ReportTypes

View File

@ -1764,6 +1764,7 @@ const
cMakeEditComponentType_Msg7 = 'Описание'; cMakeEditComponentType_Msg7 = 'Описание';
cMakeEditComponentType_Msg8 = 'Перед тем как задать шаблон, необходимо определить системное имя.'; cMakeEditComponentType_Msg8 = 'Перед тем как задать шаблон, необходимо определить системное имя.';
cMakeEditComponentType_Msg9 = 'Высота размещения компонентов'; cMakeEditComponentType_Msg9 = 'Высота размещения компонентов';
cMakeEditComponentType_Msg10 = 'Лоток проволочный';
//------------------------------ //------------------------------
cMakeEditCrossConnection_Msg1_1 = 'По кабелям'; cMakeEditCrossConnection_Msg1_1 = 'По кабелям';
@ -3235,6 +3236,16 @@ const
cFtpmes4 = 'Не удалось удалить файл на сервере!'; cFtpmes4 = 'Не удалось удалить файл на сервере!';
cFtpmes5 = 'Не удалось получить список файлов с сервера!'; cFtpmes5 = 'Не удалось получить список файлов с сервера!';
cFtpmes6 = 'Не удалось определить лимит пользователя!'; cFtpmes6 = 'Не удалось определить лимит пользователя!';
cFtpmes7 = 'Закрыть текущий проект?';
cFtpmes8 = 'Файл с таким именем уже существует ' + #13#10 + 'на сервере. Перезаписать?';
cFtpmes9 = 'Резервное копирование';
cFtpmes10 = 'Введите новое имя файла:';
cFtpmes11 = 'Указано неверное имя файла!';
cFtpmes12 = 'Не удалось определить настройки пользователя!' + #13#10 +'Попробуйте обновить список файлов или обратитесь' + #13#10 +
'в службу технической поддержки.';
cTmpDirErr = 'Ошибка определения временной директории!'; //Tolik 31/01/2025 --
{$IFEND} {$IFEND}

View File

@ -3267,3 +3267,12 @@
cFtpmes4 = 'Failed to delete file on the server!'; cFtpmes4 = 'Failed to delete file on the server!';
cFtpmes5 = 'Failed to get list of files from the server!'; cFtpmes5 = 'Failed to get list of files from the server!';
cFtpmes6 = 'Unable to determine user limit!'; cFtpmes6 = 'Unable to determine user limit!';
cFtpmes7 = 'Do You want to close current project?';
cFtpmes8 = 'A file with this name already exists ' + #13#10 + ' on the server. Overwrite?';
cFtpmes9 = 'Backup';
cFtpmes10 = 'Enter new file name:';
cFtpmes11 = 'There is wrong file name!';
cFtpmes12 = 'Failed to get user settings!' + #13#10 +'Try to refresh files list or contact' + #13#10 +
'the technical support service.';
cTmpDirErr = 'Error defining temporary directory!'; //Tolik 31/01/2025 --

View File

@ -3223,3 +3223,12 @@
cFtpmes4 = 'Не вдалося видалити файл на сервері!'; cFtpmes4 = 'Не вдалося видалити файл на сервері!';
cFtpmes5 = 'Не вдалося отримати список файлів з сервера!'; cFtpmes5 = 'Не вдалося отримати список файлів з сервера!';
cFtpmes6 = 'Не вдалося визначити ліміт користувача!'; cFtpmes6 = 'Не вдалося визначити ліміт користувача!';
cFtpmes7 = 'Закрити поточний проект?';
cFtpmes8 = 'Файл з таким іменем вже існує ' + #13#10 + 'на сервері. Перезаписати?';
cFtpmes9 = 'Резервне копіювання';
cFtpmes10 = 'Введіть нове ім' + ''''+ 'я файла:';
cFtpmes11 = 'Вказано невірне ім' + ''''+ 'я файла!';
cFtpmes12 = 'Не вдалося визначити нагодження користувача!' + #13#10 +'Спробуйте поновити список файлів або зверніться' + #13#10 +
'в службу технічної підтримки.';
cTmpDirErr = 'Помилка визначення тимчасової папки!'; // Tolik 31/01/2025 --

View File

@ -52,7 +52,6 @@ object F_MAIN: TF_MAIN
ParentFont = False ParentFont = False
TabOrder = 0 TabOrder = 0
Visible = False Visible = False
ExplicitTop = 650
object Label_Kolvo: TLabel object Label_Kolvo: TLabel
Left = 16 Left = 16
Top = 8 Top = 8
@ -111,7 +110,6 @@ object F_MAIN: TF_MAIN
OnDblClick = Panel_Main1Click OnDblClick = Panel_Main1Click
OnResize = Panel_MainResize OnResize = Panel_MainResize
OnUnDock = Panel_MainUnDock OnUnDock = Panel_MainUnDock
ExplicitHeight = 650
object Panel_Addition: TRzSizePanel object Panel_Addition: TRzSizePanel
Left = 0 Left = 0
Top = 434 Top = 434
@ -125,7 +123,6 @@ object F_MAIN: TF_MAIN
SizeBarWidth = 7 SizeBarWidth = 7
TabOrder = 0 TabOrder = 0
VisualStyle = vsClassic VisualStyle = vsClassic
ExplicitTop = 449
object ToolBar_CompData: TToolBar object ToolBar_CompData: TToolBar
Left = 0 Left = 0
Top = 47 Top = 47
@ -1324,18 +1321,16 @@ object F_MAIN: TF_MAIN
TabStyle = tsSquareCorners TabStyle = tsSquareCorners
OnChange = pcObjectsChange OnChange = pcObjectsChange
OnMouseMove = pcObjectsMouseMove OnMouseMove = pcObjectsMouseMove
ExplicitHeight = 449
FixedDimension = 22 FixedDimension = 22
object tsTemplates: TRzTabSheet object tsTemplates: TRzTabSheet
Hint = #1054#1073#1098#1077#1082#1090#1099 Hint = #1054#1073#1098#1077#1082#1090#1099
ImageIndex = 1 ImageIndex = 1
Caption = #1054#1073#1098#1077#1082#1090#1099 Caption = #1054#1073#1098#1077#1082#1090#1099
ExplicitHeight = 449
object lvTemplates: TRzListView object lvTemplates: TRzListView
Left = 160 Left = 160
Top = 30 Top = 30
Width = 172 Width = 172
Height = 419 Height = 404
Align = alClient Align = alClient
Columns = <> Columns = <>
ColumnClick = False ColumnClick = False
@ -1363,6 +1358,7 @@ object F_MAIN: TF_MAIN
OnResize = lvTemplatesResize OnResize = lvTemplatesResize
OnStartDrag = lvTemplatesStartDrag OnStartDrag = lvTemplatesStartDrag
OnSelectItem = lvTemplatesSelectItem OnSelectItem = lvTemplatesSelectItem
ExplicitHeight = 419
end end
object cbTemplates: TControlBar object cbTemplates: TControlBar
Left = 0 Left = 0
@ -1437,7 +1433,7 @@ object F_MAIN: TF_MAIN
object gbTemplateGroups: TRzGroupBar object gbTemplateGroups: TRzGroupBar
Left = 0 Left = 0
Top = 30 Top = 30
Height = 419 Height = 404
ExclusiveMode = True ExclusiveMode = True
GradientColorStart = clBtnFace GradientColorStart = clBtnFace
GradientColorStop = clBtnShadow GradientColorStop = clBtnShadow
@ -1458,7 +1454,6 @@ object F_MAIN: TF_MAIN
ImageIndex = 2 ImageIndex = 2
Caption = #1050#1086#1084#1087#1086#1085#1077#1085#1090#1099 Caption = #1050#1086#1084#1087#1086#1085#1077#1085#1090#1099
OnResize = tsComponentsResize OnResize = tsComponentsResize
ExplicitHeight = 449
object Panel_Tree: TPanel object Panel_Tree: TPanel
Left = 0 Left = 0
Top = 0 Top = 0
@ -1481,7 +1476,6 @@ object F_MAIN: TF_MAIN
OnEndDock = Panel_TreeEndDock OnEndDock = Panel_TreeEndDock
OnMouseMove = Panel_TreeMouseMove OnMouseMove = Panel_TreeMouseMove
OnStartDock = Panel_TreeStartDock OnStartDock = Panel_TreeStartDock
ExplicitHeight = 449
object splFindInTree: TSplitter object splFindInTree: TSplitter
Left = 0 Left = 0
Top = 201 Top = 201
@ -1625,7 +1619,6 @@ object F_MAIN: TF_MAIN
OnMouseMove = Tree_CatalogMouseMove OnMouseMove = Tree_CatalogMouseMove
OnMouseUp = Tree_CatalogMouseUp OnMouseUp = Tree_CatalogMouseUp
OnStartDrag = Tree_CatalogStartDrag OnStartDrag = Tree_CatalogStartDrag
ExplicitHeight = 226
end end
object Panel_New: TPanel object Panel_New: TPanel
Left = -169 Left = -169
@ -1717,6 +1710,10 @@ object F_MAIN: TF_MAIN
FixedDimension = 13 FixedDimension = 13
object tsFind: TRzTabSheet object tsFind: TRzTabSheet
Caption = #1055#1086#1080#1089#1082 Caption = #1055#1086#1080#1089#1082
ExplicitLeft = 0
ExplicitTop = 0
ExplicitWidth = 0
ExplicitHeight = 0
object Panel2: TPanel object Panel2: TPanel
Left = 0 Left = 0
Top = 0 Top = 0
@ -2177,7 +2174,6 @@ object F_MAIN: TF_MAIN
BorderInner = fsFlat BorderInner = fsFlat
BorderOuter = fsNone BorderOuter = fsNone
TabOrder = 4 TabOrder = 4
ExplicitTop = 430
object lbFilterIsOn: TRzLabel object lbFilterIsOn: TRzLabel
Left = 8 Left = 8
Top = 2 Top = 2
@ -2220,7 +2216,6 @@ object F_MAIN: TF_MAIN
Caption = #1043#1088#1091#1087#1087#1099 Caption = #1043#1088#1091#1087#1087#1099
ParentShowHint = False ParentShowHint = False
ShowHint = False ShowHint = False
ExplicitHeight = 449
object Splitter1: TSplitter object Splitter1: TSplitter
Left = 0 Left = 0
Top = 105 Top = 105
@ -8303,7 +8298,7 @@ object F_MAIN: TF_MAIN
Left = 200 Left = 200
Top = 152 Top = 152
Bitmap = { Bitmap = {
494C010104005001200310001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 494C010104005001240310001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000002000000001002000000000000020 0000000000003600000028000000400000002000000001002000000000000020
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000

View File

@ -11190,7 +11190,7 @@ begin
Act_ReplaceCableCanals.Visible := true; Act_ReplaceCableCanals.Visible := true;
Act_SetCableCanalConnectors.Visible := true; Act_SetCableCanalConnectors.Visible := true;
Act_SetCableCanalConnectorsToSelected.Visible := true; Act_SetCableCanalConnectorsToSelected.Visible := true;
//Act_SetTubesElements.Visible := True; Act_SetTubesElements.Visible := True;
end; end;
end; end;
@ -26132,7 +26132,7 @@ var i: integer;
for j := 0 to TubeCompon.CableCanalConnectors.Count - 1 do for j := 0 to TubeCompon.CableCanalConnectors.Count - 1 do
begin begin
PtrTubeConnector := PCableCanalConnector(TubeCompon.CableCanalConnectors[j]); PtrTubeConnector := PCableCanalConnector(TubeCompon.CableCanalConnectors[j]);
//TubeConn := TSCSComponent(TubeCompon.CableCanalConnectors[j]); TubeConn := TSCSComponent(TubeCompon.CableCanalConnectors[j]);
//TubeConn := //TubeConn :=
//PtrTubeConnector.GuidNBConnector //PtrTubeConnector.GuidNBConnector
@ -34056,7 +34056,10 @@ end;
i: Integer; i: Integer;
begin begin
if Assigned(ACableCanalCompon) and if Assigned(ACableCanalCompon) and
(ACableCanalCompon.ComponentType.SysName = ctsnCableChannel) and (ASide > 0) then //Tolik 07/03/2025 --
//(ACableCanalCompon.ComponentType.SysName = ctsnCableChannel) and (ASide > 0) then
((ACableCanalCompon.ComponentType.SysName = ctsnCableChannel) or
(ACableCanalCompon.ComponentType.SysName = ctsnTube)) and (ASide > 0) then
begin begin
CanalObject := ACableCanalCompon.GetFirstParentCatalog; CanalObject := ACableCanalCompon.GetFirstParentCatalog;
if Assigned(CanalObject) then if Assigned(CanalObject) then
@ -34127,7 +34130,10 @@ end;
CableCanalObject := GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(ConnectorLinesID[i]); CableCanalObject := GSCSBase.CurrProject.GetCatalogFromReferencesBySCSID(ConnectorLinesID[i]);
if Assigned(CableCanalObject) then if Assigned(CableCanalObject) then
if assigned(CableCanalObject.ComponentReferences) then if assigned(CableCanalObject.ComponentReferences) then
if CableCanalObject.ComponentReferences.GetComponentByType(ctsnCableChannel) <> nil then //Tolik 07/03/2025
// if CableCanalObject.ComponentReferences.GetComponentByType(ctsnCableChannel) <> nil then
if CableCanalObject.ComponentReferences.GetComponentByType(ACableCanalCompon.Componenttype.SysName) <> nil then
//
ConnectedLines.Add(CableCanalObject); ConnectedLines.Add(CableCanalObject);
end; end;
GetMem(ptrConnectorWithLines, SizeOf(TConnectorWithLines)); GetMem(ptrConnectorWithLines, SizeOf(TConnectorWithLines));
@ -35624,7 +35630,18 @@ end;
//SavedNBComponent: TSCSComponent; //SavedNBComponent: TSCSComponent;
// //
SavedGConnecntOnlyOneLineCompon: boolean; SavedGConnecntOnlyOneLineCompon: boolean;
ComponSName, ElementSName: string;
begin begin
if aInstallTubesElements then
begin
ComponSName := ctsnTube;
ElementSName := ctsnTubeElement;
end
else
begin
ComponSName := ctsnCableChannel;
ElementSName := ctsnCableChannelElement;
end;
try try
SavedGConnecntOnlyOneLineCompon := GConnecntOnlyOneLineCompon; SavedGConnecntOnlyOneLineCompon := GConnecntOnlyOneLineCompon;
GConnecntOnlyOneLineCompon := True; GConnecntOnlyOneLineCompon := True;
@ -35656,7 +35673,10 @@ end;
begin begin
ConnectorComponent := AConnectorWithLines.ConnectorObject.SCSComponents[i]; ConnectorComponent := AConnectorWithLines.ConnectorObject.SCSComponents[i];
if ConnectorComponent.ComeFrom = cftAuto then if ConnectorComponent.ComeFrom = cftAuto then
if ConnectorComponent.ComponentType.SysName = ctsnCableChannelElement then //Tolik 07/03/2025 --
//if ConnectorComponent.ComponentType.SysName = ctsnCableChannelElement then
if ConnectorComponent.ComponentType.SysName = ElementSName then
//
begin begin
CCESideCount := GetCCESideCount(ConnectorComponent); CCESideCount := GetCCESideCount(ConnectorComponent);
JoinedCountToConnector := GetJoinedCountToComponWithChilds(ConnectorComponent); JoinedCountToConnector := GetJoinedCountToComponWithChilds(ConnectorComponent);
@ -35665,7 +35685,10 @@ end;
(AConnectorWithLines.ConnectedLines.Count <> CCESideCount) then (AConnectorWithLines.ConnectedLines.Count <> CCESideCount) then
begin begin
// Åñëè ýòî íå äîïîëíèòåëüíûé ýêê // Åñëè ýòî íå äîïîëíèòåëüíûé ýêê
JoinedComponent := GetJoinedComponWithType(ConnectorComponent, ctsnCableChannelElement); //Tolik 07/03/2025 --
//JoinedComponent := GetJoinedComponWithType(ConnectorComponent, ctsnCableChannelElement);
JoinedComponent := GetJoinedComponWithType(ConnectorComponent, ElementSName);
//
if (JoinedComponent = nil) or (CCESideCount > GetCCESideCount(JoinedComponent)) then if (JoinedComponent = nil) or (CCESideCount > GetCCESideCount(JoinedComponent)) then
CCEToDel.Add(ConnectorComponent); //DelCompon(ConnectorComponent, nil, true, true, true, false); CCEToDel.Add(ConnectorComponent); //DelCompon(ConnectorComponent, nil, true, true, true, false);
end; end;
@ -35681,7 +35704,10 @@ end;
while i <= ConnectorComponent.JoinedComponents.Count - 1 do while i <= ConnectorComponent.JoinedComponents.Count - 1 do
begin begin
JoinedComponent := ConnectorComponent.JoinedComponents[i]; JoinedComponent := ConnectorComponent.JoinedComponents[i];
if JoinedComponent.ComponentType.SysName = ctsnCableChannelElement then //Tolik 07/03/2025 --
//if JoinedComponent.ComponentType.SysName = ctsnCableChannelElement then
if JoinedComponent.ComponentType.SysName = ElementSName then
//
begin begin
CCEToDel.Remove(JoinedComponent); CCEToDel.Remove(JoinedComponent);
DelCompon(JoinedComponent, nil, true, true, true, false) DelCompon(JoinedComponent, nil, true, true, true, false)
@ -35717,7 +35743,10 @@ end;
if assigned(LineObject.ComponentReferences) then if assigned(LineObject.ComponentReferences) then
for j := 0 to LineObject.ComponentReferences.Count - 1 do for j := 0 to LineObject.ComponentReferences.Count - 1 do
if Assigned(LineObject.ComponentReferences[j]) then if Assigned(LineObject.ComponentReferences[j]) then
if LineObject.ComponentReferences[j].ComponentType.SysName = ctsnCableChannel then //Tolik 07/03/2025 -- ComponSName
//if LineObject.ComponentReferences[j].ComponentType.SysName = ctsnCableChannel then
if LineObject.ComponentReferences[j].ComponentType.SysName = ComponSName then
//
if LineObject.ComponentReferences[j].GetInterfcesCountByTypeIsBusySide(itFunctional, biTrue, CurrLineSide) = 0 then if LineObject.ComponentReferences[j].GetInterfcesCountByTypeIsBusySide(itFunctional, biTrue, CurrLineSide) = 0 then
begin begin
CanalComponent := LineObject.ComponentReferences[j]; CanalComponent := LineObject.ComponentReferences[j];

View File

@ -715,7 +715,8 @@ begin
AddSysNameTYoTable(ctsnConnectingModule, cMakeEditComponentType_Msg5_37); AddSysNameTYoTable(ctsnConnectingModule, cMakeEditComponentType_Msg5_37);
AddSysNameTYoTable(ctsnTestingAccessory, cMakeEditComponentType_Msg5_38); AddSysNameTYoTable(ctsnTestingAccessory, cMakeEditComponentType_Msg5_38);
AddSysNameTYoTable(ctsnTube, cMakeEditComponentType_Msg5_39); AddSysNameTYoTable(ctsnTube, cMakeEditComponentType_Msg5_39);
AddSysNameTYoTable(ctsnTubeElement,cMakeEditComponentType_Msg5_39_1);// Tolik 13/10/2018 -- AddSysNameTYoTable(ctsnTubeElement,cMakeEditComponentType_Msg5_39_1);// Tolik 13/10/2018 --
AddSysNameTYoTable(ctsnWireTray,cMakeEditComponentType_Msg10); // Tolik 10/04/2025 -- Ëîòîê Ïðîâîëî÷íûé
AddSysNameTYoTable(ctsnInstallBox, cMakeEditComponentType_Msg5_40); AddSysNameTYoTable(ctsnInstallBox, cMakeEditComponentType_Msg5_40);
AddSysNameTYoTable(ctsnCupboard, cMakeEditComponentType_Msg5_41); AddSysNameTYoTable(ctsnCupboard, cMakeEditComponentType_Msg5_41);
AddSysNameTYoTable(ctsnJackPlug, cMakeEditComponentType_Msg5_42); AddSysNameTYoTable(ctsnJackPlug, cMakeEditComponentType_Msg5_42);

View File

@ -1708,7 +1708,7 @@ object F_MakeEditCrossConnection: TF_MakeEditCrossConnection
Left = 8 Left = 8
Top = 136 Top = 136
Bitmap = { Bitmap = {
494C01010B002800700010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 494C01010B002800B80010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000003000000001002000000000000030 0000000000003600000028000000400000003000000001002000000000000030
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
000000000000000000000000000000000000000000000000000000000000EF6B 000000000000000000000000000000000000000000000000000000000000EF6B
@ -2140,7 +2140,7 @@ object F_MakeEditCrossConnection: TF_MakeEditCrossConnection
Left = 40 Left = 40
Top = 136 Top = 136
Bitmap = { Bitmap = {
494C010105002800640010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 494C010105002800AC0010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000002000000001002000000000000020 0000000000003600000028000000400000002000000001002000000000000020
0000000000000000000000000000000000000000000000000000000000004D4F 0000000000000000000000000000000000000000000000000000000000004D4F
4F004D4F4F0000000000000000000000000000000000000000004D4F4F004D4F 4F004D4F4F0000000000000000000000000000000000000000004D4F4F004D4F
@ -2415,7 +2415,7 @@ object F_MakeEditCrossConnection: TF_MakeEditCrossConnection
Left = 72 Left = 72
Top = 136 Top = 136
Bitmap = { Bitmap = {
494C010105002800640010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 494C010105002800AC0010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000002000000001002000000000000020 0000000000003600000028000000400000002000000001002000000000000020
0000000000000000000000000000000000000000000000000000000000004D4F 0000000000000000000000000000000000000000000000000000000000004D4F
4F004D4F4F0000000000000000000000000000000000000000004D4F4F004D4F 4F004D4F4F0000000000000000000000000000000000000000004D4F4F004D4F
@ -2728,7 +2728,7 @@ object F_MakeEditCrossConnection: TF_MakeEditCrossConnection
Left = 88 Left = 88
Top = 200 Top = 200
Bitmap = { Bitmap = {
494C010105002800640010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 494C010105002800AC0010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000002000000001002000000000000020 0000000000003600000028000000400000002000000001002000000000000020
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
@ -3521,7 +3521,7 @@ object F_MakeEditCrossConnection: TF_MakeEditCrossConnection
Left = 576 Left = 576
Top = 344 Top = 344
Bitmap = { Bitmap = {
494C010105002800580010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 494C010105002800A00010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000002000000001002000000000000020 0000000000003600000028000000400000002000000001002000000000000020
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000949494005A5A5A00B5B5B500CECECE000000 0000000000000000000000000000949494005A5A5A00B5B5B500CECECE000000
@ -3796,7 +3796,7 @@ object F_MakeEditCrossConnection: TF_MakeEditCrossConnection
Left = 544 Left = 544
Top = 344 Top = 344
Bitmap = { Bitmap = {
494C010105002800580010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 494C010105002800A00010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000002000000001002000000000000020 0000000000003600000028000000400000002000000001002000000000000020
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000018F70000008400106BA5001094D6000000 00000000000000000000000000000018F70000008400106BA5001094D6000000
@ -4071,7 +4071,7 @@ object F_MakeEditCrossConnection: TF_MakeEditCrossConnection
Left = 512 Left = 512
Top = 344 Top = 344
Bitmap = { Bitmap = {
494C01010B002800580010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 494C01010B002800A00010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600
0000000000003600000028000000400000003000000001002000000000000030 0000000000003600000028000000400000003000000001002000000000000030
0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000
00000000000000000000A5BDAD0094B5A50094ADA50094ADA500000000000000 00000000000000000000A5BDAD0094B5A50094ADA50094ADA500000000000000

View File

@ -159,6 +159,7 @@ object F_MakeNorm: TF_MakeNorm
Top = 16 Top = 16
Width = 81 Width = 81
Height = 21 Height = 21
AutoComplete = False
Ctl3D = False Ctl3D = False
FrameHotTrack = True FrameHotTrack = True
FrameVisible = True FrameVisible = True

View File

@ -694,8 +694,10 @@ end;
procedure TF_MakeNorm.CorrectCypher(var AMainCyper, ARestCypher: String); procedure TF_MakeNorm.CorrectCypher(var AMainCyper, ARestCypher: String);
var var
WholeCypher: String; //Tolik 20/02/2025
//WholeCypher: String;
WholeCypher: AnsiString;
//
KolvoZnak: array [0..5] of integer; KolvoZnak: array [0..5] of integer;
TempShifr: string; TempShifr: string;
@ -1050,6 +1052,110 @@ begin
FNormCypherTitles.Add('ÒÐ'); FNormCypherTitles.Add('ÒÐ');
FNormCypherTitles.Add('ØÄ'); FNormCypherTitles.Add('ØÄ');
FNormCypherTitles.Add('Ó'); FNormCypherTitles.Add('Ó');
//Tolik 19/02/2025 --
FNormCypherTitles.Add('ÊÐ');
FNormCypherTitles.Add('ÊÌ');
FNormCypherTitles.Add('ÊÁ');
//
FNormCypherTitles.Add('ÊÂ');
FNormCypherTitles.Add('ÕÕ');
FNormCypherTitles.Add('ÂÌ');
FNormCypherTitles.Add('ÏÆ');
FNormCypherTitles.Add('ÒÅ');
FNormCypherTitles.Add('ËÓ');
FNormCypherTitles.Add('ÑË');
FNormCypherTitles.Add('ÆÊ');
FNormCypherTitles.Add('ÂÅ');
FNormCypherTitles.Add('ÒÃ');
FNormCypherTitles.Add('ÆÑ');
FNormCypherTitles.Add('ÒÏ');
FNormCypherTitles.Add('ÑÃ');
FNormCypherTitles.Add('ÅÂ');
FNormCypherTitles.Add('ÃÊ');
FNormCypherTitles.Add('ÄÅ');
FNormCypherTitles.Add('ÁÐ');
FNormCypherTitles.Add('ÐÌ');
FNormCypherTitles.Add('ÐÓ');
FNormCypherTitles.Add('ÑÐ');
FNormCypherTitles.Add('ÄÏ');
FNormCypherTitles.Add('ÃÁ');
FNormCypherTitles.Add('ÊÏ');
FNormCypherTitles.Add('ÊÃ');
FNormCypherTitles.Add('ÅÑ');
FNormCypherTitles.Add('ÅÌ');
FNormCypherTitles.Add('ÌÃ');
FNormCypherTitles.Add('ÑÀ');
FNormCypherTitles.Add('ÌÐ');
FNormCypherTitles.Add('ÕÁ');
FNormCypherTitles.Add('ÏÒ');
FNormCypherTitles.Add('ÖÃ');
FNormCypherTitles.Add('ÏÂ');
FNormCypherTitles.Add('ÕÔ');
FNormCypherTitles.Add('ÊÄ');
FNormCypherTitles.Add('ÊÅ');
FNormCypherTitles.Add('ÐÇ');
FNormCypherTitles.Add('ÌÑ');
FNormCypherTitles.Add('ÏÑ');
FNormCypherTitles.Add('ÄÐ');
FNormCypherTitles.Add('ÑÏ');
FNormCypherTitles.Add('ÂÂ');
FNormCypherTitles.Add('ÐÐ');
FNormCypherTitles.Add('ØÐ');
FNormCypherTitles.Add('ÎÍ');
FNormCypherTitles.Add('ÕÑ');
FNormCypherTitles.Add('ÔÔ');
FNormCypherTitles.Add('ÔÐ');
FNormCypherTitles.Add('ÀÏ');
FNormCypherTitles.Add('ÐÑ');
FNormCypherTitles.Add('ÁÒ');
FNormCypherTitles.Add('ÄÍ');
FNormCypherTitles.Add('ÑÄ');
FNormCypherTitles.Add('ÁÏ');
FNormCypherTitles.Add('×Â');
FNormCypherTitles.Add('ÐÀ');
FNormCypherTitles.Add('ÍÏ');
FNormCypherTitles.Add('ÓÂ');
FNormCypherTitles.Add('ÒÂ');
FNormCypherTitles.Add('ÑÓ');
FNormCypherTitles.Add('ÑÒ');
FNormCypherTitles.Add('ÎÃ');
FNormCypherTitles.Add('ÁÌ');
FNormCypherTitles.Add('ÀÌ');
FNormCypherTitles.Add('ÓÖ');
FNormCypherTitles.Add('ÓÁ');
FNormCypherTitles.Add('ÇÁ');
FNormCypherTitles.Add('ߨ');
FNormCypherTitles.Add('ÊÊ');
FNormCypherTitles.Add('ÌÒ');
FNormCypherTitles.Add('ÂÊ');
FNormCypherTitles.Add('ÔÍ');
FNormCypherTitles.Add('ÀÑ');
FNormCypherTitles.Add('ÑÂ');
FNormCypherTitles.Add('ÌÁ');
FNormCypherTitles.Add('ÌÓ');
FNormCypherTitles.Add('ËÄ');
FNormCypherTitles.Add('ÂÐ');
FNormCypherTitles.Add('ÓØ');
FNormCypherTitles.Add('ÁÄ');
FNormCypherTitles.Add('ÌÏ');
FNormCypherTitles.Add('ÃÌ');
FNormCypherTitles.Add('ËÁ');
FNormCypherTitles.Add('ÊË');
FNormCypherTitles.Add('ÄÁ');
FNormCypherTitles.Add('ÄÓ');
FNormCypherTitles.Add('ÏÐË');
FNormCypherTitles.Add('ÐÇË');
FNormCypherTitles.Add('ÒÌÌ');
FNormCypherTitles.Add('ÏÐÔ');
FNormCypherTitles.Add('ÂÁÐ');
FNormCypherTitles.Add('ÂÊÒ');
FNormCypherTitles.Add('ØÐÁ');
FNormCypherTitles.Add('ËÁÐ');
FNormCypherTitles.Add('ÖÃÏ');
//
FResMatCypherTitles := TStringList.Create; FResMatCypherTitles := TStringList.Create;
FResMatCypherTitles.Add('Ñ1'); FResMatCypherTitles.Add('Ñ1');

View File

@ -1,6 +1,5 @@
unit U_PECommon; unit U_PECommon;
interface interface
uses uses
@ -218,8 +217,10 @@ begin
ListOfAllTraces := GetAllTraceInCADByMarked_New1(CurrentServer, CurrentWS) ListOfAllTraces := GetAllTraceInCADByMarked_New1(CurrentServer, CurrentWS)
else else
ListOfAllTraces := GetAllTraceInCADByMarked(CurrentServer, CurrentWS); ListOfAllTraces := GetAllTraceInCADByMarked(CurrentServer, CurrentWS);
//Tolik 21/01/2025 -- òóò âïîëíå ìîæåò âåðíóòüñÿ íóëåâîé ðåçóëüòàò (òèïà, nil)
if ListOfAllTraces.Count > 0 then //if ListOfAllTraces.Count > 0 then
if ((ListOfAllTraces <> nil) and (ListOfAllTraces.Count > 0)) then
//
begin begin
//if GCadForm.FTracingListIndex > ListOfAllTraces.Count - 1 then //if GCadForm.FTracingListIndex > ListOfAllTraces.Count - 1 then
GCadForm.FTracingListIndex := 0; GCadForm.FTracingListIndex := 0;
@ -289,8 +290,10 @@ begin
end; end;
//ListOfAllTraces := GetAllTraceInCADByMarked(ConnTo, ConnFrom{ConnFrom, ConnTo}); //ListOfAllTraces := GetAllTraceInCADByMarked(ConnTo, ConnFrom{ConnFrom, ConnTo});
ListOfAllTraces := GetAllTraceInCADByMarked(ConnFrom, ConnTo); ListOfAllTraces := GetAllTraceInCADByMarked(ConnFrom, ConnTo);
// Tolik 21/01/2025 --
if ListOfAllTraces.Count > 0 then //if ListOfAllTraces.Count > 0 then
if ((ListOfAllTraces <> nil) and (ListOfAllTraces.Count > 0)) then
//
begin begin
//if GCadForm.FTracingListIndex > ListOfAllTraces.Count - 1 then //if GCadForm.FTracingListIndex > ListOfAllTraces.Count - 1 then
// GCadForm.FTracingListIndex := 0; // GCadForm.FTracingListIndex := 0;
@ -675,6 +678,9 @@ begin
ListFolder := nil; ListFolder := nil;
ListObject := nil; ListObject := nil;
isLastShield := False; isLastShield := False;
ListAllComponent := nil; // Tolik 21/01/2025 --
LastPoint := nil; // Tolik -- 16/09/2021 -- LastPoint := nil; // Tolik -- 16/09/2021 --
@ -1591,6 +1597,8 @@ begin
if EndPointComponList <> nil then if EndPointComponList <> nil then
FreeAndNil(EndPointComponList); FreeAndNil(EndPointComponList);
// //
if ListAllComponent <> nil then
FreeAndNil(ListAllComponent); //Tolik 21/01/2025 --
end; end;
//GCanRefreshCad := True; //GCanRefreshCad := True;
GCadForm.PCad.Refresh; GCadForm.PCad.Refresh;
@ -1599,7 +1607,7 @@ end;
procedure PE_AutoTrace(ATypeAutoTrace: integer; AEndList, AWorkList: TList); procedure PE_AutoTrace(ATypeAutoTrace: integer; AEndList, AWorkList: TList);
var var
ListShield: tList; ListShield: tList;
vLists: TList; //vLists: TList;
begin begin
if F_NormBase.GSCSBase.SCSComponent.ComponentType.SysName = ctsnCable then if F_NormBase.GSCSBase.SCSComponent.ComponentType.SysName = ctsnCable then
begin begin
@ -1619,6 +1627,7 @@ begin
tatIndivid: LIstShield := AutoTraseToShield(AWorkList, AEndList, True); tatIndivid: LIstShield := AutoTraseToShield(AWorkList, AEndList, True);
end; end;
FreeAndNil(ListShield); //Tolik 20/1/2025 --
end; end;
// EndAutoTrace; // EndAutoTrace;
end; end;
@ -2775,9 +2784,17 @@ end;
inc(k); inc(k);
SetLength(TraceList, k); SetLength(TraceList, k);
TraceList[k - 1] := TracesLength; TraceList[k - 1] := TracesLength;
FreeAndNil(CurrPathList); //Tolik 21/01/2025 -+
FreeAndNil(currPath); //FreeAndNil(CurrPathList);
//FreeAndNil(currPath);
//
end; end;
//Tolik 21/01/2025
for j := 0 to CurrPathList.Count - 1 do
TList(CurrPathList[j]).Free;
FreeAndNil(CurrPathList);
currPath := nil;
//
end end
end; end;
end; end;
@ -2906,15 +2923,15 @@ end;
end; end;
end; end;
Begin Begin
ComponList := TList.Create; //ComponList := TList.Create; // Tolik 21/01/2025 --ýòè 2 ñïèñêà âðîäå êàê íå þçàþòñÿ çäåñü
ComponList1 := TList.Create; //ComponList1 := TList.Create;
currPath:= nil; //Tolik 21/01/2025 --
IdCable := F_NormBase.GSCSBase.SCSComponent.ID; IdCable := F_NormBase.GSCSBase.SCSComponent.ID;
if AFigList.Count > 0 then if AFigList.Count > 0 then
begin begin
SortFigList(AFigList, LengthsList); SortFigList(AFigList, LengthsList);
end; end;
PassList := TList.Create; //PassList := TList.Create; // Tolik 21/01/2025 -- íå þçàåòñÿ çäåñü
SetLength(LenList, 0); SetLength(LenList, 0);
//connect First Figure To Server //connect First Figure To Server
Figure := TFigure(AFigList[0]); Figure := TFigure(AFigList[0]);
@ -2962,7 +2979,10 @@ end;
for i := 0 to AFigList.Count - 1 do for i := 0 to AFigList.Count - 1 do
begin begin
currPathList := GetAllTraceInCADByMarked(Figure, TFigure(aFigList[i])); currPathList := GetAllTraceInCADByMarked(Figure, TFigure(aFigList[i]));
if currPathList.Count > 0 then //Tolik 21/01/2025 --
//if currPathList.Count > 0 then
if ((currPathList <> nil) and (currPathList.Count > 0)) then
//
begin begin
SortPathListByLength(CurrPathList); SortPathListByLength(CurrPathList);
currPathsToFigure.Add(currPathList[0]); currPathsToFigure.Add(currPathList[0]);
@ -3009,6 +3029,7 @@ end;
currPath:= nil; currPath:= nil;
currPathsToFigure.Clear; currPathsToFigure.Clear;
end; end;
FreeAndNil(currPathsToFigure); // Tolik 21/01/2025 --
if not F_PEAutoTraceDialog.CheckPassedTraces.Checked then if not F_PEAutoTraceDialog.CheckPassedTraces.Checked then
// Tolik 20/02/2021 -- // Tolik 20/02/2021 --
{ {
@ -3033,15 +3054,24 @@ end;
currPath := GetPathByMode(CurrPathList); //currPathList[0]; currPath := GetPathByMode(CurrPathList); //currPathList[0];
// âîçâðàò ê íà÷àëüíîé òî÷êå ïîäêëþ÷åíèÿ // âîçâðàò ê íà÷àëüíîé òî÷êå ïîäêëþ÷åíèÿ
//Tolik 21/05/2025 --
{
if F_PEAutoTraceDialog.TypeConnection.ItemIndex = 1 then if F_PEAutoTraceDialog.TypeConnection.ItemIndex = 1 then
CanConnect := ConnectFigures(TConnectorObject(Figure), CurrentServer, currPath, IDCable); CanConnect := ConnectFigures(TConnectorObject(Figure), CurrentServer, currPath, IDCable);
}
if F_NormBase.GSCSBase.SCSComponent.IDNetType <> 3 then //çäåñü äëÿ ýëåêòðèêè îáðàòíûé êàáåëü íå ëîæèì (íî ëàçåéêó äëÿ òðàññèðîâêè îñòàâëÿåì)
begin
if F_PEAutoTraceDialog.TypeConnection.ItemIndex = 1 then
CanConnect := ConnectFigures(TConnectorObject(Figure), CurrentServer, currPath, IDCable);
end;
//
if F_PEAutoTraceDialog.CheckPassedTraces.Checked then if F_PEAutoTraceDialog.CheckPassedTraces.Checked then
CheckPassedPath(currPath); CheckPassedPath(currPath);
if currPathList <> nil then if currPathList <> nil then
FreeAndNil(currPathList); FreeAndNil(currPathList);
if currPath <> nil then if currPath <> nil then
FreeAndNil(currPath); FreeAndNil(currPath);
SetLength(LenList, 0); // Tolik 21/01/2025 --
End; End;
{ procedure GetServerCompons(aNode : TFlyNode); { procedure GetServerCompons(aNode : TFlyNode);
@ -3356,6 +3386,7 @@ begin
// èáî íåõ // èáî íåõ
{ if WSSideCompons.IndexOf(CurrentServer.ID) = -1 then { if WSSideCompons.IndexOf(CurrentServer.ID) = -1 then
begin} begin}
CurrFiguresList := TraceFiguresToServer(CurrentServer); CurrFiguresList := TraceFiguresToServer(CurrentServer);
if ((CurrFiguresList <> nil) and (CurrFiguresList.Count > 0)) then if ((CurrFiguresList <> nil) and (CurrFiguresList.Count > 0)) then
@ -3397,7 +3428,12 @@ begin
FreeAndNil(AllPassedTraces); FreeAndNil(AllPassedTraces);
if ConnectedComponList <> nil then if ConnectedComponList <> nil then
FreeAndNil(ConnectedComponList); FreeAndNil(ConnectedComponList);
// GDragOnCAD := false; // GDragOnCAD := false;
//Tolik 20/01/2025 --
FreeAndNil(CurrFiguresList);
FreeAndNil(currPathList);
FreeAndNil(CurrPath);
//
end; end;
end; end;
// //
@ -3844,7 +3880,7 @@ begin
try try
Result := False; Result := False;
AllTrace := Nil; AllTrace := Nil;
CurrTraceList := Nil; //CurrTraceList := Nil; //20/01/2025
CurrTraceList := TList.Create; CurrTraceList := TList.Create;
//if ACurrPoint.ConnectorType = ct_Clear then //if ACurrPoint.ConnectorType = ct_Clear then
// begin // begin
@ -7848,6 +7884,9 @@ var
begin begin
try try
if WayList <> nil then
FreeAndNil(WayList);//Tolik 20/01/2025 --
DistanceList := TList.Create; DistanceList := TList.Create;
For i := 0 to AStartIndex - 1 do For i := 0 to AStartIndex - 1 do
DistanceList.Add(Nil); DistanceList.Add(Nil);
@ -7860,11 +7899,19 @@ var
OperFigure := TConnectorObject(AWorkFigures[i]); OperFigure := TConnectorObject(AWorkFigures[i]);
for Count := 0 to OperFigure.JoinedConnectorsList.Count - 1 do for Count := 0 to OperFigure.JoinedConnectorsList.Count - 1 do
begin begin
//Tolik 20/01/2025 --
{
WayList := Nil; WayList := Nil;
}
WayList := GetAllTracePEInCADforLamp(AEndObjects, Operfigure, true); WayList := GetAllTracePEInCADforLamp(AEndObjects, Operfigure, true);
operdist := TotalLength(WayList); if WayList <> nil then
if ((operdist <> -1) and(operdist < distance)) or (distance = -1) then begin
distance := operdist; //
operdist := TotalLength(WayList);
if ((operdist <> -1) and(operdist < distance)) or (distance = -1) then
distance := operdist;
FreeAndNil(WayList); // Tolik 20/01/2025 --
end;
end; end;
if i = 0 + AStartIndex then if i = 0 + AStartIndex then
begin begin

BIN
TOOLS/license.key Normal file

Binary file not shown.