mirror of
http://gitlab.expertsoft.com.ua/git/expertcad
synced 2026-01-11 22:45:39 +02:00
1143 lines
34 KiB
ObjectPascal
1143 lines
34 KiB
ObjectPascal
unit U_PEAutoTraceDialog;
|
||
|
||
interface
|
||
|
||
uses
|
||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||
Dialogs, ExtCtrls, RzPanel, RzRadGrp, RzButton, RzRadChk, exgrid,
|
||
RapTree, FlytreePro, StdCtrls, RzLabel, RzSplit,
|
||
U_SCSComponent, U_SCSLists, Mask, RzEdit, RzSpnEdt, Buttons, siComp,
|
||
siLngLnk, DrawObjects, ComCtrls;
|
||
|
||
type
|
||
|
||
TF_PEAutotraceDialog = class(TForm)
|
||
TypeAutotrace_RadioGroup: TRzRadioGroup;
|
||
Panel1: TPanel;
|
||
bOk: TRzBitBtn;
|
||
bCancel: TRzBitBtn;
|
||
Panel2: TPanel;
|
||
RzSplitter1: TRzSplitter;
|
||
tvEndObject: TFlyTreeViewPro;
|
||
tvWorkObject: TFlyTreeViewPro;
|
||
RzPanel1: TRzPanel;
|
||
RzLabel1: TRzLabel;
|
||
RzPanel2: TRzPanel;
|
||
RzLabel2: TRzLabel;
|
||
PutBox_Check: TRzCheckBox;
|
||
RzPanel3: TRzPanel;
|
||
GetBox_Edit: TRzEdit;
|
||
Label1: TLabel;
|
||
AKolTrace_Edit: TRzSpinEdit;
|
||
TraceFromSwitch_CheckBox: TRzCheckBox;
|
||
GetBox_btn: TSpeedButton;
|
||
lng_Forms: TsiLangLinked;
|
||
AutotraceKind: TRzRadioGroup;
|
||
TypeConnection: TRzRadioGroup;
|
||
DoNotUseUpDown: TRzCheckBox;
|
||
CheckPassedTraces: TRzCheckBox;
|
||
CheckCanConnectCable: TRzCheckBox;
|
||
IgnoreExistingCable: TRzCheckBox;
|
||
SpeedButton5: TSpeedButton;
|
||
SpeedButton3: TSpeedButton;
|
||
procedure FormCreate(Sender: TObject);
|
||
procedure FormDestroy(Sender: TObject);
|
||
procedure bOkClick(Sender: TObject);
|
||
procedure bCancelClick(Sender: TObject);
|
||
procedure GetBox_btnClick(Sender: TObject);
|
||
procedure PutBox_CheckClick(Sender: TObject);
|
||
procedure AKolTrace_EditChange(Sender: TObject);
|
||
procedure tvEndObjectDeletion(Sender: TObject; Node: TFlyNode);
|
||
procedure AutotraceKindChanging(Sender: TObject; NewIndex: Integer;
|
||
var AllowChange: Boolean);
|
||
procedure TypeConnectionChanging(Sender: TObject; NewIndex: Integer;
|
||
var AllowChange: Boolean);
|
||
procedure TypeAutotrace_RadioGroupChanging(Sender: TObject;
|
||
NewIndex: Integer; var AllowChange: Boolean);
|
||
procedure FormShow(Sender: TObject);
|
||
procedure IgnoreExistingCableClick(Sender: TObject);
|
||
|
||
procedure tvEndObjectStateChange(Node: TFlyNode; Oldindex: Integer);
|
||
procedure tvWorkObjectStateChange(Node: TFlyNode; Oldindex: Integer);
|
||
procedure SpeedButton2Click(Sender: TObject);
|
||
procedure SpeedButton1Click(Sender: TObject);
|
||
procedure btCanComplectClick1(Sender: TObject);
|
||
procedure SpeedButton5Click(Sender: TObject);
|
||
procedure SpeedButton3Click(Sender: TObject);
|
||
private
|
||
{ Private declarations }
|
||
FKolTrace: Integer;
|
||
LampParentNode, SwitchParentNode: TFlyNode;
|
||
procedure ExportResultInLists;
|
||
public
|
||
{ Public declarations }
|
||
ListEndCompon, ListWorkCompon: TIntList;
|
||
RaspredBox: TSCSComponent;
|
||
FromAutoTraceDialog: Boolean;
|
||
ListLampCompon, ListSwitchesCompon: TIntList;
|
||
//Tolik
|
||
ShowBadCableConnect: Boolean;
|
||
currTreeNode: TFlyNode;
|
||
NewRaspredBox: Boolean;
|
||
Cypher: String;
|
||
LastAddedCableIDList: TIntList;
|
||
RaspredBoxConnectorList: TList;
|
||
RaspredBoxList: TSCSComponents;
|
||
property KolTrace: integer read FKolTrace;
|
||
|
||
procedure BuildTree(Atree: TFlyTreeViewPro; ListFolder: TStringList; ListObject: Tlist; AIndLamp: integer = -1; AIndSwitch: integer = -1 );
|
||
procedure CopyEndListToSwitchesList;
|
||
Procedure DeleteDoublesfromWorkTree; // Tolik 26/03/2021 --
|
||
Procedure DeselectConnected;
|
||
|
||
end;
|
||
|
||
var
|
||
F_PEAutoTraceDialog: TF_PEAutotraceDialog;
|
||
|
||
// function AddChild(ATree: TFlyTreeViewPro; AParentNode:TFlyNode; AChildComplects: TSCSComponents): TFlyNode;
|
||
// Function AddNode (ATree: TFlyTreeViewPro; ACurrNode: TFlyNode; ACompon: TSCSComponent; AString: string = ''): TFlyNode;
|
||
|
||
implementation
|
||
uses U_main, Treecoll, U_PECommon, U_PEGetBox, u_BaseCommon, U_BaseConstants,
|
||
U_Common, U_Cad, PowerCad, U_ESCadClasess,
|
||
U_SCSEngineTest, U_Constants, {Tolik -- 18/01/2017 -- }U_AnswerToQuast;
|
||
{$R *.dfm}
|
||
|
||
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
procedure TF_PEAutotraceDialog.BuildTree(Atree: TFlyTreeViewPro; ListFolder: TStringList;
|
||
ListObject: Tlist; AIndLamp: integer = -1; AIndSwitch: integer = -1);
|
||
var
|
||
currNode,RememberNode: TFlyNode;
|
||
currCompon: TSCSComponent;
|
||
i, j: integer;
|
||
begin
|
||
currNode := nil;
|
||
RememberNode := nil;
|
||
Try
|
||
if aTree.Items.Count > 0 then // Tolik 03/04/2021 --
|
||
ATree.Items.Clear;
|
||
if ListFolder.Count > 0 then
|
||
begin
|
||
For i := 0 to ListFolder.Count -1 do
|
||
begin
|
||
RememberNode := nil;
|
||
currNode := Nil;
|
||
currNode := AddNode(Atree, currNode, nil, ListFolder[i]);
|
||
if i = AIndLamp then
|
||
begin
|
||
LampParentNode := currNode;
|
||
end;
|
||
if i = AIndSwitch then
|
||
begin
|
||
SwitchParentNode := currNode;
|
||
end;
|
||
|
||
if ListObject.Count > 0 then // Tolik 03/04/2021 --
|
||
begin
|
||
for j := 0 to TList(ListObject[i]).Count - 1 do
|
||
begin
|
||
currCompon := TscsComponent(TList(ListObject[i]).Items[j]);
|
||
currNode := AddNode(Atree, currNode, currCompon);
|
||
end;
|
||
end;
|
||
if currNode <> nil then // Tolik 03/04/2021 --
|
||
begin
|
||
Atree.NodeStateRefreshParent(currNode, false);
|
||
currNode := Atree.Items[i];
|
||
Atree.NodeStateRefreshParent(currNode, false);
|
||
end;
|
||
end;
|
||
if currNode <> nil then // Tolik 03/04/2021 --
|
||
i := currNode.StateIndex;
|
||
end;
|
||
Except
|
||
on E: Exception do addExceptionToLogEx('TF_PEAutotraceDialog.BuildTree', E.Message);
|
||
End;
|
||
end;
|
||
|
||
procedure TF_PEAutotraceDialog.ExportResultInLists;
|
||
|
||
procedure PutResultsFromTreeInList(ATree : TFlyTreeViewPro; Alist: TintList);
|
||
var
|
||
i: integer;
|
||
CurrNode, ChildNode: TFlyNode;
|
||
|
||
|
||
procedure AddToSwitchListNode(ANode: TFlyNode);
|
||
var
|
||
i: integer;
|
||
begin
|
||
if ANode.StateIndex = 2 then
|
||
begin
|
||
If TNodeData(ANode.Data).ID = -1 then
|
||
for i := 0 to ANode.Count - 1 do
|
||
begin
|
||
ListSwitchesCompon.Add(TNodeData(ANode.Items[i].Data).ID);
|
||
end
|
||
else
|
||
ListSwitchesCompon.Add(TNodeData(ANode.Data).ID);
|
||
end;
|
||
//if CurrNode.StateIndex > 2 then
|
||
if ANode.StateIndex > 2 then
|
||
begin
|
||
for i := 0 to ANode.Count - 1 do
|
||
begin
|
||
AddToSwitchListNode(ANode.Item[i]);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure AddToLampListNode(ANode: TFlyNode);
|
||
var
|
||
i: integer;
|
||
begin
|
||
if ANode.StateIndex = 2 then
|
||
begin
|
||
If TNodeData(ANode.Data).ID = -1 then
|
||
for i := 0 to ANode.Count - 1 do
|
||
begin
|
||
ListLampCompon.Add(TNodeData(ANode.Items[i].Data).ID);
|
||
end
|
||
else
|
||
ListLampCompon.Add(TNodeData(ANode.Data).ID);
|
||
end;
|
||
//if CurrNode.StateIndex > 2 then
|
||
if ANode.StateIndex > 2 then
|
||
begin
|
||
for i := 0 to ANode.Count - 1 do
|
||
begin
|
||
AddToLampListNode(ANode.Item[i]);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure AddToListNode(ANode: TFlyNode);
|
||
var
|
||
i: integer;
|
||
begin
|
||
//Tolik
|
||
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if ANode.StateIndex = 2 then
|
||
begin
|
||
// Tolik -- <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
|
||
//if AList.IndexOf(TNodeData(ANode.Data).ID) = -1 then
|
||
if (TNodeData(ANode.Data).ID <> -1) and (AList.IndexOf(TNodeData(ANode.Data).ID) = -1) then
|
||
Alist.Add(TNodeData(ANode.Data).ID);
|
||
//
|
||
|
||
// Tolik 20/11/2015
|
||
//if ANode.Expanded then
|
||
if (ANode.Expanded or (TNodeData(ANode.Data).ID = -1)) then // <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
|
||
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//
|
||
begin
|
||
for i := 0 to ANode.Count - 1 do
|
||
begin
|
||
if TFlyNode(ANode.Item[i]).StateIndex = 2 then
|
||
begin
|
||
Alist.Add(TNodeData(ANode.Items[i].Data).ID);
|
||
AddToListNode(TFlyNode(ANode.Item[i]));
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
{
|
||
if ANode.StateIndex = 2 then
|
||
begin
|
||
If TNodeData(ANode.Data).ID = -1 then
|
||
for i := 0 to ANode.Count - 1 do
|
||
begin
|
||
Alist.Add(TNodeData(ANode.Items[i].Data).ID);
|
||
end
|
||
else
|
||
Alist.Add(TNodeData(ANode.Data).ID);
|
||
end;
|
||
}
|
||
//if CurrNode.StateIndex > 2 then
|
||
if ANode.StateIndex > 2 then
|
||
begin
|
||
for i := 0 to ANode.Count - 1 do
|
||
begin
|
||
AddToListNode(TFlyNode(ANode.Item[i]));
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
begin
|
||
CurrNode := ATree.GetFirstVisibleNode;
|
||
while CurrNode <> Nil do
|
||
begin
|
||
if CurrNode = LampParentNode then
|
||
begin
|
||
AddToLampListNode(CurrNode);
|
||
end
|
||
else
|
||
if CurrNode = SwitchParentNode then
|
||
begin
|
||
AddToSwitchListNode(CurrNode);
|
||
end
|
||
else
|
||
begin
|
||
AddToListNode(CurrNode);
|
||
end;
|
||
CurrNode := CurrNode.GetNextSibling;
|
||
end;
|
||
end;
|
||
|
||
procedure PutResultsFromTreeInWorkList(ATree : TFlyTreeViewPro; Alist: TintList);
|
||
var
|
||
i: integer;
|
||
CurrNode, ChildNode: TFlyNode;
|
||
|
||
|
||
procedure AddToSwitchListNode(ANode: TFlyNode);
|
||
var
|
||
i: integer;
|
||
begin
|
||
if ANode.StateIndex = 2 then
|
||
begin
|
||
If TNodeData(ANode.Data).ID = -1 then
|
||
for i := 0 to ANode.Count - 1 do
|
||
begin
|
||
ListSwitchesCompon.Add(TNodeData(ANode.Items[i].Data).ID);
|
||
end
|
||
else
|
||
ListSwitchesCompon.Add(TNodeData(ANode.Data).ID);
|
||
end;
|
||
//if CurrNode.StateIndex > 2 then
|
||
if ANode.StateIndex > 2 then
|
||
begin
|
||
for i := 0 to ANode.Count - 1 do
|
||
begin
|
||
AddToSwitchListNode(ANode.Item[i]);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure AddToLampListNode(ANode: TFlyNode);
|
||
var
|
||
i: integer;
|
||
begin
|
||
if ANode.StateIndex = 2 then
|
||
begin
|
||
If TNodeData(ANode.Data).ID = -1 then
|
||
for i := 0 to ANode.Count - 1 do
|
||
begin
|
||
ListLampCompon.Add(TNodeData(ANode.Items[i].Data).ID);
|
||
end
|
||
else
|
||
ListLampCompon.Add(TNodeData(ANode.Data).ID);
|
||
end;
|
||
//if CurrNode.StateIndex > 2 then
|
||
if ANode.StateIndex > 2 then
|
||
begin
|
||
for i := 0 to ANode.Count - 1 do
|
||
begin
|
||
AddToLampListNode(ANode.Item[i]);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
procedure AddToListNode(ANode: TFlyNode);
|
||
var
|
||
i: integer;
|
||
begin
|
||
//Tolik
|
||
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if ANode.StateIndex = 2 then
|
||
begin
|
||
// if AList.IndexOf(TNodeData(ANode.Data).ID) = -1 then
|
||
// Tolik -- 20/11/2015 -- <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
if (AList.IndexOf(TNodeData(ANode.Data).ID) = -1) and (ANode.Expanded = False) and
|
||
(TNodeData(ANode.Data).ID <> -1) then
|
||
//
|
||
Alist.Add(TNodeData(ANode.Data).ID);
|
||
// Tolik
|
||
//if ANode.Expanded then
|
||
if ANode.Expanded or (TNodeData(ANode.Data).ID = -1) then // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
//
|
||
begin
|
||
for i := 0 to ANode.Count - 1 do
|
||
begin
|
||
if TFlyNode(ANode.Item[i]).StateIndex = 2 then
|
||
begin
|
||
//Tolik
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
// <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
if TFlyNode(ANode.Item[i]).Expanded then
|
||
AddToListNode(TFlyNode(ANode.Item[i]))
|
||
else
|
||
Alist.Add(TNodeData(ANode.Items[i].Data).ID);
|
||
// Alist.Add(TNodeData(ANode.Items[i].Data).ID);
|
||
// AddToListNode(TFlyNode(ANode.Item[i]));
|
||
//
|
||
end;
|
||
end;
|
||
end
|
||
{else
|
||
if ANode.StateIndex = 2 then
|
||
begin
|
||
If TNodeData(ANode.Data).ID = -1 then
|
||
for i := 0 to ANode.Count - 1 do
|
||
begin
|
||
Alist.Add(TNodeData(ANode.Items[i].Data).ID);
|
||
end
|
||
else
|
||
Alist.Add(TNodeData(ANode.Data).ID);
|
||
end;}
|
||
end;
|
||
|
||
//if CurrNode.StateIndex > 2 then
|
||
if ANode.StateIndex > 2 then
|
||
begin
|
||
for i := 0 to ANode.Count - 1 do
|
||
begin
|
||
AddToListNode(TFlyNode(ANode.Item[i]));
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
|
||
begin
|
||
CurrNode := ATree.GetFirstVisibleNode;
|
||
while CurrNode <> Nil do
|
||
begin
|
||
if CurrNode = LampParentNode then
|
||
begin
|
||
AddToLampListNode(CurrNode);
|
||
end
|
||
else
|
||
if CurrNode = SwitchParentNode then
|
||
begin
|
||
AddToSwitchListNode(CurrNode);
|
||
end
|
||
else
|
||
begin
|
||
AddToListNode(CurrNode);
|
||
end;
|
||
CurrNode := CurrNode.GetNextSibling;
|
||
end;
|
||
end;
|
||
|
||
|
||
begin
|
||
if ListEndCompon <> Nil then
|
||
ListEndCompon.Clear
|
||
else
|
||
ListEndCompon := TIntList.Create;
|
||
if ListWorkCompon <> Nil then
|
||
ListWorkCompon.Clear
|
||
else
|
||
ListWorkCompon := TIntList.Create;
|
||
if ListLampCompon <> Nil then
|
||
ListLampCompon.Clear
|
||
else
|
||
ListLampCompon := TIntList.Create;
|
||
if ListSwitchesCompon <> Nil then
|
||
ListSwitchesCompon.Clear
|
||
else
|
||
ListSwitchesCompon := TIntList.Create;
|
||
//Tolik
|
||
tvEndObject.Refresh;
|
||
tvWorkObject.Refresh;
|
||
//
|
||
|
||
|
||
PutResultsFromTreeInList(tvEndObject, ListEndCompon);
|
||
PutResultsFromTreeInWorkList(tvWorkObject, ListWorkCompon);
|
||
end;
|
||
|
||
procedure TF_PEAutotraceDialog.FormCreate(Sender: TObject);
|
||
begin
|
||
// Tolik 01/11/2019 --
|
||
AKolTrace_Edit.Min := 3;
|
||
AKolTrace_Edit.Max := 9;
|
||
//
|
||
FromAutoTraceDialog := false;
|
||
ListEndCompon := Nil;
|
||
ListWorkCompon := Nil;
|
||
LampParentNode := Nil;
|
||
SwitchParentNode := Nil;
|
||
RaspredBox := Nil;
|
||
ListLampCompon := Nil;
|
||
ListSwitchesCompon := Nil;
|
||
currTreeNode := nil;
|
||
end;
|
||
|
||
procedure TF_PEAutotraceDialog.FormDestroy(Sender: TObject);
|
||
begin
|
||
if ListEndCompon <> Nil then
|
||
ListEndCompon.Free;
|
||
if ListWorkCompon = Nil then
|
||
ListEndCompon.Free;
|
||
tvEndObject.Items.Clear;
|
||
tvWorkObject.Items.Clear;
|
||
end;
|
||
|
||
procedure TF_PEAutotraceDialog.bOkClick(Sender: TObject);
|
||
begin
|
||
ShowBadCableConnect := False;
|
||
NewRaspredBox := False;
|
||
Cypher :='';
|
||
LastAddedCableIDList := TIntList.Create;
|
||
RaspredBoxConnectorList := TList.Create;
|
||
RaspredBoxList := TSCSComponents.Create(False);
|
||
if PutBox_Check.Checked and (Not Assigned(RaspredBox)) then
|
||
MessageModal(cPEMes16, cPEMes15, MB_ICONWARNING)
|
||
else
|
||
begin
|
||
F_PEAutotraceDialog.FKolTrace := StrToInt(F_PEAutotraceDialog.AKolTrace_Edit.Text);
|
||
FromAutoTraceDialog := true;
|
||
ExportResultInLists;
|
||
ModalResult := mrOk;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_PEAutotraceDialog.bCancelClick(Sender: TObject);
|
||
begin
|
||
ModalResult := mrCancel;
|
||
end;
|
||
|
||
procedure TF_PEAutotraceDialog.GetBox_btnClick(Sender: TObject);
|
||
begin
|
||
if GetBox_btn.tag = 0 then
|
||
begin
|
||
GetBox_btn.tag := 1;
|
||
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
F_PEGetBox.SetNBToForm;
|
||
if F_PEGetBox.ShowModal = mrOk then
|
||
begin
|
||
if Assigned(RaspredBox) then
|
||
begin
|
||
RaspredBox.Free;
|
||
end;
|
||
RaspredBox := F_PEGetBox.GetCompon;
|
||
GetBox_Edit.Text := RaspredBox.Name;
|
||
end
|
||
else
|
||
PutBox_Check.Checked := false;
|
||
GetBox_btn.tag := 0;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_PEAutotraceDialog.PutBox_CheckClick(Sender: TObject);
|
||
begin
|
||
if PutBox_Check.Checked then
|
||
begin
|
||
RzPanel3.Enabled := true;
|
||
if not Assigned(RaspredBox)then
|
||
F_PEAutotraceDialog.GetBox_btnClick(Sender);
|
||
end
|
||
else
|
||
begin
|
||
RzPanel3.Enabled := false;
|
||
end;
|
||
end;
|
||
|
||
procedure TF_PEAutotraceDialog.AKolTrace_EditChange(Sender: TObject);
|
||
var
|
||
len: integer;
|
||
begin
|
||
len := length(AKolTrace_Edit.EditText);
|
||
if len > 1 then
|
||
begin
|
||
AKolTrace_Edit.EditText := AKolTrace_Edit.EditText[len];
|
||
end;
|
||
end;
|
||
|
||
procedure TF_PEAutotraceDialog.tvEndObjectDeletion(Sender: TObject;
|
||
Node: TFlyNode);
|
||
begin
|
||
if Assigned(Node.Data) then
|
||
FreeMemory(Node.Data);
|
||
end;
|
||
|
||
procedure TF_PEAutotraceDialog.CopyEndListToSwitchesList;
|
||
var
|
||
i: integer;
|
||
begin
|
||
for i := 0 to F_PEAutotraceDialog.ListEndCompon.count -1 do
|
||
begin
|
||
F_PEAutotraceDialog.ListSwitchesCompon.add(F_PEAutotraceDialog.ListEndCompon[i]);
|
||
end;
|
||
end;
|
||
|
||
function GetTreeNodebyDataID(aNode: TFlyNode; dataID: integer): TFlyNode;
|
||
var i: integer;
|
||
ChildNode: TFlyNode;
|
||
begin
|
||
Result := nil;
|
||
if TNodeData(aNode.Data).ID = dataID then
|
||
Result := aNode
|
||
else
|
||
begin
|
||
for i := 0 to aNode.Count - 1 do
|
||
begin
|
||
ChildNode := aNode.Item[i];
|
||
Result := GetTreeNodebyDataID(ChildNode, dataID);
|
||
if Result <> nil then
|
||
Break; //// BREAK ////;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
Procedure TF_PEAutotraceDialog.DeleteDoublesfromWorkTree; // Tolik 26/03/2021 --
|
||
var i, j: integer;
|
||
ENode, WNode: TFlyNode;
|
||
|
||
Procedure DeleteDoubleNodes(aNode: TFlyNode; NodeDataID: integer);
|
||
var i: integer;
|
||
delNode, WNode: TFlyNode;
|
||
begin
|
||
if TNodeData(aNode.Data).ID <> -1 then
|
||
begin
|
||
for i := 0 to tvWorkObject.Items.Count - 1 do
|
||
begin
|
||
WNode := tvWorkObject.Items[i];
|
||
delNode := GetTreeNodebyDataID(WNode, NodeDataID);
|
||
if delNode <> nil then
|
||
tvWorkObject.Items.Delete(delNode);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
Procedure delWNode(aNode: TFlyNode; NodeDataID: integer);
|
||
var i: integer;
|
||
ChildNode: TFlyNode;
|
||
begin
|
||
DeleteDoubleNodes(aNode, NodeDataID);
|
||
for i := 0 to aNode.Count - 1 do
|
||
begin
|
||
ChildNode := aNode.Item[i];
|
||
delWNode(ChildNode, TNodeData(ChildNode.Data).ID);
|
||
end;
|
||
end;
|
||
|
||
begin
|
||
for i := 0 to tvEndObject.Items.Count - 1 do
|
||
begin
|
||
ENode := tvEndObject.Items[i];
|
||
DelWNode(eNode, TNodeData(ENode.Data).ID);
|
||
end;
|
||
for i := tvWorkObject.Items.Count - 1 downto 0 do
|
||
begin
|
||
WNode := tvWorkObject.Items[i];
|
||
if TNodeData(WNode.Data).ID = -1 then
|
||
if WNode.Count = 0 then
|
||
tvWorkObject.Items.Delete(WNode);
|
||
end;
|
||
end;
|
||
|
||
Procedure TF_PEAutotraceDialog.DeselectConnected;
|
||
var i: integer;
|
||
Node: TFlyNode;
|
||
tvWorkEvent: TStateChangedEvent;
|
||
|
||
Procedure disableNode(aNode: TflyNode);
|
||
var childNode: TFlyNode;
|
||
SCSComponent: TSCSComponent;
|
||
i: integer;
|
||
begin
|
||
if TNodeData(aNode.Data).ID <> -1 then
|
||
begin
|
||
SCSComponent := F_ProjMan.GSCSBase.CurrProject.GetComponentFromReferences(TNodeData(aNode.Data).ID);
|
||
if SCSComponent <> nil then
|
||
begin
|
||
if SCSComponent.JoinedComponents.Count > 0 then
|
||
begin
|
||
for i := 0 to SCSComponent.JoinedComponents.Count - 1 do
|
||
begin
|
||
if isCableComponent(SCSComponent.JoinedComponents[i]) then
|
||
begin
|
||
aNode.BeginUpdate;
|
||
aNode.StateIndex := STATE_UNCHECKED;
|
||
tvWorkObject.NodeStateRefresh(aNode);
|
||
aNode.EndUpdate;
|
||
break;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
for i := 0 to aNode.Count - 1 do
|
||
begin
|
||
ChildNode := aNode.Item[i];
|
||
disableNode(ChildNode);
|
||
end;
|
||
end;
|
||
begin
|
||
tvWorkEvent := tvworkObject.OnStateChanged;
|
||
tvWorkObject.OnStateChanged := nil;
|
||
for i := 0 to tvWorkObject.Items.Count - 1 do
|
||
begin
|
||
Node := tvWorkObject.Items[i];
|
||
disableNode(Node);
|
||
end;
|
||
//tvWorkObject.RefreshTreeStates;
|
||
tvWorkObject.OnStateChanged := tvWorkEvent;
|
||
tvWorkObject.Refresh;
|
||
|
||
{for i := 0 to tvEndObject.Items.Count - 1 do
|
||
begin
|
||
Node := tvEndObject.Items[i];
|
||
disableNode(Node);
|
||
end;}
|
||
end;
|
||
|
||
|
||
procedure TF_PEAutotraceDialog.AutotraceKindChanging(Sender: TObject;
|
||
NewIndex: Integer; var AllowChange: Boolean);
|
||
begin
|
||
if NewIndex = 1 then
|
||
begin
|
||
TraceFromSwitch_CheckBox.Checked := false;
|
||
TraceFromSwitch_CheckBox.Visible := false;
|
||
TypeConnection.Visible := true;
|
||
|
||
// Tolik
|
||
if TypeConnection.ItemIndex = 0 then
|
||
begin
|
||
TypeAutotrace_RadioGroup.Enabled := True;
|
||
CheckPassedTraces.Visible := False;
|
||
end
|
||
else
|
||
begin
|
||
TypeAutotrace_RadioGroup.Enabled := False;
|
||
CheckPassedTraces.Visible := True;
|
||
end;
|
||
//
|
||
end
|
||
else
|
||
begin
|
||
TraceFromSwitch_CheckBox.Visible := true;
|
||
TypeConnection.Visible := False;
|
||
//Tolik
|
||
TypeAutotrace_RadioGroup.Enabled := True;
|
||
TypeConnection.ItemIndex := 0;
|
||
CheckCanConnectCable.Visible := False;
|
||
end;
|
||
// Tolik 09/04/2021 --
|
||
if GCallAutoTraceElectricMaster then
|
||
IgnoreExistingCable.Visible := True
|
||
else
|
||
//
|
||
IgnoreExistingCable.Visible := (TypeAutotrace_RadioGroup.Enabled and (TypeAutotrace_RadioGroup.ItemIndex = 1) and
|
||
(NewIndex = 0) );
|
||
end;
|
||
|
||
procedure TF_PEAutotraceDialog.TypeConnectionChanging(Sender: TObject;
|
||
NewIndex: Integer; var AllowChange: Boolean);
|
||
begin
|
||
if NewIndex = 1 then
|
||
//Tolik
|
||
begin
|
||
PutBox_Check.Enabled := false;
|
||
TypeAutotrace_RadioGroup.Enabled := False;
|
||
CheckPassedTraces.Visible := True;
|
||
CheckCanConnectCable.Visible := True;
|
||
end
|
||
else
|
||
begin
|
||
TypeAutotrace_RadioGroup.Enabled := True;
|
||
//PutBox_Check.Enabled := true;
|
||
PutBox_Check.Enabled := (TypeAutotrace_RadioGroup.ItemIndex = 1);
|
||
CheckPassedTraces.Visible := False;
|
||
CheckCanConnectCable.Visible := False;
|
||
end;
|
||
// Tolik 09/04/2021 --
|
||
if GCallAutoTraceElectricMaster then
|
||
IgnoreExistingCable.Visible := True
|
||
else
|
||
//
|
||
IgnoreExistingCable.Visible := (TypeAutotrace_RadioGroup.Enabled and (TypeAutotrace_RadioGroup.ItemIndex = 1) and
|
||
(AutotraceKind.ItemIndex = 0) );
|
||
end;
|
||
|
||
procedure TF_PEAutotraceDialog.TypeAutotrace_RadioGroupChanging(
|
||
Sender: TObject; NewIndex: Integer; var AllowChange: Boolean);
|
||
begin
|
||
// Tolik 09/04/2021 --
|
||
if GCallAutoTraceElectricMaster then
|
||
IgnoreExistingCable.Visible := True
|
||
else
|
||
//
|
||
IgnoreExistingCable.Visible := (TypeAutotrace_RadioGroup.Enabled and (NewIndex = 1) and
|
||
(AutotraceKind.ItemIndex = 0) );
|
||
PutBox_Check.Enabled := (NewIndex = 1);
|
||
end;
|
||
// Tolik
|
||
procedure TF_PEAutotraceDialog.FormShow(Sender: TObject);
|
||
var currList: TSCSList;
|
||
i, j: Integer;
|
||
currCatalog: TSCSCatalog;
|
||
Procedure ShowCatalogInPM(ACatalog : TSCSCatalog; aShowNode: Boolean = True);
|
||
var
|
||
Node: TTreeNode;
|
||
FirstChildNode: TTreeNode;
|
||
ObjID: Integer;
|
||
Catalog: TSCSCatalog;
|
||
//LastRoom: TSCSCatalog;
|
||
begin
|
||
//Exit; //#Del
|
||
try
|
||
with F_ProjMan do
|
||
begin
|
||
Catalog := ACatalog;
|
||
if Assigned(Catalog) then
|
||
begin
|
||
Node := nil;
|
||
FirstChildNode := nil;
|
||
if Catalog.SCSComponents.Count > 0 then
|
||
begin
|
||
Node := Catalog.SCSComponents.Items[0].TreeViewNode;
|
||
if Not Assigned(Node) then
|
||
Node := FindComponOrDirInTree(TSCSComponent(Catalog.SCSComponents.Items[0]).ID, true)
|
||
end
|
||
else
|
||
Node := Catalog.TreeViewNode; //FindComponOrDirInTree(ObjID, false);
|
||
if Not Assigned(Node) then
|
||
Node := FindComponOrDirInTree(Catalog.ID, false);
|
||
//Tolik
|
||
if aShowNode then
|
||
begin
|
||
//
|
||
if Assigned(Node) then
|
||
begin
|
||
// Tree_Catalog.Items.BeginUpdate;
|
||
try
|
||
Tree_Catalog.Selected := Node;
|
||
if Tree_Catalog.Selected <> Node then
|
||
Tree_Catalog.Selected := Node;
|
||
//Tolik
|
||
if aShowNode then
|
||
ShowSelectedNode(Tree_Catalog);
|
||
finally
|
||
// Tree_Catalog.Items.EndUpdate;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
except
|
||
on E: Exception do AddExceptionToLog('ShowCatalogInPM: '+E.Message);
|
||
end;
|
||
end;
|
||
|
||
begin
|
||
FromAutoTraceDialog := False;
|
||
currList := F_ProjMan.GSCSBase.CurrProject.CurrList;
|
||
if currList <> nil then
|
||
begin
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
for i := 0 to currList.ChildCatalogs.Count - 1 do
|
||
begin
|
||
currCatalog := currList.ChildCatalogs[i];
|
||
if currCatalog <> nil then
|
||
ShowCatalogInPM(currCatalog);
|
||
end;
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> LastAdded <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
|
||
for i := 0 to currList.ChildCatalogReferences.Count - 1 do
|
||
begin
|
||
currCatalog := currList.ChildCatalogReferences[i];
|
||
if currCatalog <> nil then
|
||
begin
|
||
if currCatalog.LastAddedComponent <> nil then
|
||
begin
|
||
currCatalog.LastAddedComponent := nil;
|
||
currCatalog.IDLastAddedComponent := 0;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
end;
|
||
// Tolik 09/04/2021 --
|
||
if GCallAutoTraceElectricMaster then
|
||
IgnoreExistingCable.Visible := True
|
||
else
|
||
//
|
||
IgnoreExistingCable.Visible := (TypeAutotrace_RadioGroup.Enabled and (TypeAutotrace_RadioGroup.ItemIndex = 1) and
|
||
(AutotraceKind.ItemIndex = 0) );
|
||
IgnoreExistingCable.Checked := False;
|
||
end;
|
||
|
||
procedure TF_PEAutotraceDialog.IgnoreExistingCableClick(Sender: TObject);
|
||
var currComponent: TSCSComponent;
|
||
i: Integer;
|
||
CanCheck: Boolean;
|
||
begin
|
||
CanCheck := True;
|
||
if (F_PEAutotraceDialog.IgnoreExistingCable.Checked) then
|
||
begin
|
||
currComponent := F_NormBase.GSCSBase.SCSComponent;
|
||
if (currComponent <> nil) and (currComponent.IsLine = biTrue) then
|
||
begin
|
||
for i := 0 to currComponent.Interfaces.Count - 1 do
|
||
begin
|
||
if (currComponent.Interfaces[i].TypeI = itFunctional) and (currComponent.Interfaces[i].Multiple = biTrue) then
|
||
begin
|
||
CanCheck := False;
|
||
Break;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
if not CanCheck then
|
||
begin
|
||
F_PEAutotraceDialog.IgnoreExistingCable.Checked := False;
|
||
ShowMessage(cPEMes25);
|
||
end;
|
||
end;
|
||
|
||
// Tolik -- New --19/11/2015
|
||
// Tolik -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>)
|
||
|
||
// Tolik -- New --19/11/2015
|
||
Procedure DropStateIndex(aNode: TFlyNode);
|
||
var i: Integer;
|
||
ChildNode: TFlyNode;
|
||
begin
|
||
if aNode.Count = 0 then
|
||
aNode.StateIndex := 2
|
||
else
|
||
begin
|
||
for i := 0 to aNode.UpdateCount - 1 do
|
||
begin
|
||
ChildNode := aNode.Item[i];
|
||
DropStateIndex(ChildNode);
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
// Tolik -- New --19/11/2015
|
||
procedure TF_PEAutotraceDialog.tvEndObjectStateChange(Node: TFlyNode;
|
||
Oldindex: Integer);
|
||
var i, j: Integer;
|
||
aNode, NodeToChange: TFlyNode;
|
||
NodeFound: Boolean;
|
||
tvWorkEvent: TStateChangedEvent;
|
||
|
||
{ function GetTreeNodebyDataID(aNode: TFlyNode; dataID: integer): TFlyNode;
|
||
var i: integer;
|
||
ChildNode: TFlyNode;
|
||
begin
|
||
Result := nil;
|
||
if TNodeData(aNode.Data).ID = dataID then
|
||
Result := aNode
|
||
else
|
||
begin
|
||
for i := 0 to aNode.Count - 1 do
|
||
begin
|
||
ChildNode := aNode.Item[i];
|
||
Result := GetTreeNodebyDataID(ChildNode, dataID);
|
||
if Result <> nil then
|
||
Break; //// BREAK ////;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
Procedure DropStateIndex(aNode: TFlyNode);
|
||
var i: Integer;
|
||
ChildNode: TFlyNode;
|
||
begin
|
||
if aNode.Count = 0 then
|
||
aNode.StateIndex := 2
|
||
else
|
||
begin
|
||
for i := 0 to aNode.UpdateCount - 1 do
|
||
begin
|
||
ChildNode := aNode.Item[i];
|
||
DropStateIndex(ChildNode);
|
||
end;
|
||
end;
|
||
end;
|
||
}
|
||
begin
|
||
|
||
if OldIndex <> 2 then
|
||
begin
|
||
tvWorkEvent := tvWorkObject.OnStateChanged;
|
||
tvWorkObject.OnStateChanged := nil;
|
||
|
||
NodeFound := False;
|
||
NodeToChange := nil;
|
||
|
||
i := TNodeData(Node.Data).ID;
|
||
if i <> -1 then
|
||
begin
|
||
if tvWorkObject.Items.Count > 0 then
|
||
begin
|
||
for j := 0 to tvWorkObject.Items.Count - 1 do
|
||
begin
|
||
aNode := TFlyNode(tvWorkObject.Items[j]);
|
||
if TNodeData(aNode.Data).ID = i then
|
||
begin
|
||
NodeToChange := aNode;
|
||
end
|
||
else
|
||
NodeToChange := GetTreeNodebyDataID(aNode, i);
|
||
if NodeToChange <> nil then
|
||
Break; //// BREAK ////;
|
||
end;
|
||
|
||
{ if NodeToChange <> nil then
|
||
begin
|
||
NodeToChange.StateIndex := 1;
|
||
tvWorkObject.RefreshTreeStates;
|
||
tvWorkObject.Repaint;
|
||
end;}
|
||
if NodeToChange <> nil then
|
||
begin
|
||
if (TNodeData(NodeToChange.Data).Id = -1) then
|
||
NodeTochange.StateIndex := 1
|
||
else
|
||
begin
|
||
if NodeToChange.Parent.expanded then
|
||
NodeToChange.StateIndex := 1
|
||
else
|
||
begin
|
||
aNode := NodeToChange.Parent;
|
||
if TNodeData(aNode.Data).ID = -1 then
|
||
aNode.StateIndex := 1
|
||
else
|
||
begin
|
||
while ((not aNode.Parent.Expanded) and (TNodeData(aNode.Parent.Data).ID <> -1)) do
|
||
aNode := aNode.Parent;
|
||
|
||
aNode.Expand(true);
|
||
aNode.BeginUpdate;
|
||
DropStateIndex(aNode);
|
||
aNode.StateIndex := 1;
|
||
tvWorkObject.NodeStateRefreshChildren(aNode, True);
|
||
aNode.EndUpdate;
|
||
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
|
||
tvWorkObject.RefreshTreeStates;
|
||
tvWorkObject.Repaint;
|
||
tvWorkObject.OnStateChanged := tvWorkEvent;
|
||
end;
|
||
end;
|
||
// Tolik -- New --19/11/2015
|
||
procedure TF_PEAutotraceDialog.tvWorkObjectStateChange(Node: TFlyNode;
|
||
Oldindex: Integer);
|
||
var i, j: Integer;
|
||
aNode, NodeToChange: TFlyNode;
|
||
NodeFound: Boolean;
|
||
currEvent: TStateChangedEvent;
|
||
tvEndEvent: TStateChangedEvent;
|
||
ChildChecked: Boolean;
|
||
CanCheckNextTreeNode: Boolean;
|
||
|
||
begin
|
||
|
||
if OldIndex <> 2 then
|
||
begin
|
||
tvEndEvent := tvEndObject.OnStateChanged;
|
||
tvEndObject.OnStateChanged := nil;
|
||
|
||
NodeFound := False;
|
||
NodeToChange := nil;
|
||
|
||
i := TNodeData(Node.Data).ID;
|
||
if i <> -1 then // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
begin
|
||
if tvEndObject.Items.Count > 0 then
|
||
begin
|
||
for j := 0 to tvEndObject.Items.Count - 1 do
|
||
begin
|
||
aNode := TFlyNode(tvEndObject.Items[j]);
|
||
if TNodeData(aNode.Data).ID = i then
|
||
begin
|
||
NodeToChange := aNode;
|
||
end
|
||
else
|
||
NodeToChange := GetTreeNodebyDataID(aNode, i);
|
||
if NodeToChange <> nil then
|
||
Break; //// BREAK ////;
|
||
end;
|
||
|
||
if NodeToChange <> nil then
|
||
begin
|
||
if (TNodeData(NodeToChange.Data).Id = -1) then
|
||
NodeTochange.StateIndex := 1
|
||
else
|
||
begin
|
||
if NodeToChange.Parent.expanded then
|
||
NodeToChange.StateIndex := 1
|
||
else
|
||
begin
|
||
aNode := NodeToChange.Parent;
|
||
if TNodeData(aNode.Data).ID = -1 then
|
||
aNode.StateIndex := 1
|
||
else
|
||
begin
|
||
while ((not aNode.Parent.Expanded) and (TNodeData(aNode.Parent.Data).ID <> -1)) do
|
||
aNode := aNode.Parent;
|
||
|
||
aNode.Expand(true);
|
||
aNode.BeginUpdate;
|
||
DropStateIndex(aNode);
|
||
aNode.StateIndex := 1;
|
||
tvEndObject.NodeStateRefreshChildren(aNode, True);
|
||
aNode.EndUpdate;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
end;
|
||
tvEndObject.RefreshTreeStates;
|
||
tvEndObject.Repaint;
|
||
tvEndObject.OnStateChanged := tvEndEvent;
|
||
end;
|
||
end;
|
||
/////Tolik ----------18/01/2017
|
||
procedure TF_PEAutotraceDialog.SpeedButton2Click(Sender: TObject);
|
||
begin
|
||
{ TF_MAIN(F_NormBase).F_AnswerToQuast.GCaption := cAddComponent_Msg6_1;
|
||
TF_MAIN(F_NormBase).F_AnswerToQuast.GAnswer := cAddComponent_Msg6_2;
|
||
TF_MAIN(F_NormBase).F_AnswerToQuast.ShowContextHelp(TF_MAIN(F_NormBase).F_AnswerToQuast.GCaption, TF_MAIN(F_NormBase).F_AnswerToQuast.GAnswer);
|
||
}end;
|
||
|
||
procedure TF_PEAutotraceDialog.SpeedButton1Click(Sender: TObject);
|
||
begin
|
||
{ TF_MAIN(F_NormBase).F_AnswerToQuast.GCaption := PE_HelpCapt3;
|
||
TF_MAIN(F_NormBase).F_AnswerToQuast.GAnswer := PE_HelpMsg_2;
|
||
TF_MAIN(F_NormBase).F_AnswerToQuast.ShowContextHelp(TF_MAIN(F_NormBase).F_AnswerToQuast.GCaption, TF_MAIN(F_NormBase).F_AnswerToQuast.GAnswer);
|
||
}end;
|
||
|
||
procedure TF_PEAutotraceDialog.btCanComplectClick1(Sender: TObject);
|
||
begin
|
||
{ TF_MAIN(F_NormBase).F_AnswerToQuast.GCaption := PE_HelpCapt4;
|
||
TF_MAIN(F_NormBase).F_AnswerToQuast.GAnswer := PE_HelpMsg_4;
|
||
TF_MAIN(F_NormBase).F_AnswerToQuast.ShowContextHelp(TF_MAIN(F_NormBase).F_AnswerToQuast.GCaption, TF_MAIN(F_NormBase).F_AnswerToQuast.GAnswer);
|
||
}end;
|
||
//
|
||
procedure TF_PEAutotraceDialog.SpeedButton5Click(Sender: TObject);
|
||
begin
|
||
TF_MAIN(F_NormBase).F_AnswerToQuast.GCaption := PE_HelpCapt2;
|
||
TF_MAIN(F_NormBase).F_AnswerToQuast.GAnswer := PE_HelpMsg_2;
|
||
TF_MAIN(F_NormBase).F_AnswerToQuast.ShowContextHelp(TF_MAIN(F_NormBase).F_AnswerToQuast.GCaption, TF_MAIN(F_NormBase).F_AnswerToQuast.GAnswer);
|
||
end;
|
||
|
||
procedure TF_PEAutotraceDialog.SpeedButton3Click(Sender: TObject);
|
||
begin
|
||
TF_MAIN(F_NormBase).F_AnswerToQuast.GCaption := PE_HelpCapt1;
|
||
TF_MAIN(F_NormBase).F_AnswerToQuast.GAnswer := PE_HelpMsg_1;
|
||
TF_MAIN(F_NormBase).F_AnswerToQuast.ShowContextHelp(TF_MAIN(F_NormBase).F_AnswerToQuast.GCaption, TF_MAIN(F_NormBase).F_AnswerToQuast.GAnswer);
|
||
end;
|
||
|
||
end.
|
||
|
||
|