expertcad/SRC/SCSNormBase/U_PEDialogEqChoice.pas
2025-05-12 10:07:51 +03:00

183 lines
5.7 KiB
ObjectPascal
Raw Blame History

unit U_PEDialogEqChoice;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, exgrid, RapTree, FlytreePro, ExtCtrls, RzPanel,
U_SCSLists, U_SCSComponent, RzButton, siComp, siLngLnk;
type
TF_PEDialogEqChoice = class(TForm)
RzPanel1: TRzPanel;
RzPanel2: TRzPanel;
StaticText1: TStaticText;
RzPanel3: TRzPanel;
bOk: TRzBitBtn;
bCancel: TRzBitBtn;
tvChoiceEndObject: TFlyTreeViewPro;
lng_Forms: TsiLangLinked;
procedure RzPanel3Resize(Sender: TObject);
procedure bOkClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure tvChoiceEndObjectDeletion(Sender: TObject; Node: TFlyNode);
private
{ Private declarations }
public
{ Public declarations }
// LineComponForConnect: TSCSComponent;
ComponForConnect: TSCSComponent;
ComponInterfaces: TSCSInterfaces;
procedure BuildTreeEndCompon(AListCompon: TSCSComponents; ASCSCatalog: TscsCatalog);
end;
var
F_PEDialogEqChoice: TF_PEDialogEqChoice;
implementation
{$R *.dfm}
uses U_MAIN,U_PECommon, U_BaseCommon, U_BaseConstants;
procedure TF_PEDialogEqChoice.BuildTreeEndCompon(AListCompon: TSCSComponents; ASCSCatalog: TscsCatalog);
var
currNode: TFlyNode;
currCompon: TSCSComponent;
i, j: integer;
begin
if tvChoiceEndObject.Images.Count = 0 then
tvChoiceEndObject.Images.AddImages(F_NormBase.DM.ImageList_Dir);
tvChoiceEndObject.Items.Clear;
//tvChoiceEndObject.Refresh;
tvChoiceEndObject.NodeStateRefresh(nil);
currNode := AddNode(tvChoiceEndObject, nil, nil, ASCSCatalog.GetNameForVisible);
currNode.Height := -1;
for i := 0 to AListCompon.Count -1 do
begin
AddNode(F_PEDialogEqChoice.tvChoiceEndObject, currNode, AListCompon[i]);
end;
tvChoiceEndObject.TopItem.Expand(True);
// For i := 0 to AListId.Count -1 do
// begin
// currNode := Nil;
// // currNode := AddNode(F_PEDialogEqChoice.tvChoiceEndObject, currNode, nil, intto str(AListId[i]));
// for j := 0 to TList(ListObject//[i]).Count - 1 do
// begin
// currCompon := TscsComponent(TList(ListObject[i]).Items[j]);
// currNode := AddNode(Atree, currNode, currCompon);
// end;
// currNode := Atree.Items[i];
// currNode.StateIndex := 2;
// Atree.NodeStateRefreshChildren(currNode, false);
// end;
// i := currNode.StateIndex;
end;
procedure TF_PEDialogEqChoice.RzPanel3Resize(Sender: TObject);
var
Center: integer;
begin
Center := Round(RzPanel3.Width/2);
bCancel.Left := Center + 12;
bOk.Left := Center - 12 - bOk.Width
end;
procedure TF_PEDialogEqChoice.bOkClick(Sender: TObject);
var
Compon: TScsComponent;
InterfList: TSCSInterfaces;
Interf: TSCSInterface;
i, j: integer;
IOfIRel: TSCSIOfIRel;
begin
//if (LineComponForConnect <> Nil) then
begin //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if F_PEDialogEqChoice.Visible then
if tvChoiceEndObject.Selected = tvChoiceEndObject.GetFirstVisibleNode then
MessageModal(cPEMes20, cPEMes2, MB_ICONWARNING)
else
begin
Compon := F_ProjMan.GSCSBase.CurrProject.CurrList.GetComponentFromReferences(TNodeData(tvChoiceEndObject.Selected.Data).ID);
if Compon = Nil then
MessageModal(cPEMes6, cPEMes2, MB_ICONWARNING);
end
else
Compon := ComponForConnect;
if Compon <> Nil then
begin
InterfList := TSCSInterfaces.Create(false);
try
for i := 0 to Compon.Interfaces.Count - 1 do
begin
Interf := Compon.Interfaces[i];
if {(Interf.IOfIRelOut.Count > 0) and }(Interf.Multiple = biTrue) and (Interf.TypeI = itFunctional) then
begin
if Assigned(Interf.IOfIRelOut) then
For j := 0 to Interf.IOfIRelOut.Count - 1 do
begin
IOfIRel := TSCSIOfIRel(Interf.IOfIRelOut[j]);
if IOfIRel.InterfaceTo.Multiple = biTrue then
// If IOfIRel.InterfaceTo.ID_Component > U_PECommon.GLastIdComponent then
begin
InterfList.Add(Interf);
break;
end;
end;
if Assigned(Interf.ConnectedInterfaces) then
For j := 0 to Interf.ConnectedInterfaces.Count - 1 do
begin
If Interf.ConnectedInterfaces[j].Multiple = biTrue then
//If Interf.ConnectedInterfaces[j].ID_Component > U_PECommon.GLastIdComponent then
begin
InterfList.Add(Interf);
//break;
end;
end;
end;
end;
if InterfList.Count > 0 then
begin
// if LineComponForConnect.CheckJoinTo(Compon,-1,-1,true, nil, InterfList).CanConnect then
// begin
ComponForConnect := Compon;
ComponInterfaces := InterfList;
ModalResult := mrOK;
// end;
end
else
begin
if F_PEDialogEqChoice.Visible then
MessageModal(cPEMes6, cPEMes2, MB_ICONWARNING);
end;
finally
if InterfList.Count = 0 then
InterfList.Free;
end;
end;
end;
//else
// ModalResult := mrCancel;
end;
procedure TF_PEDialogEqChoice.FormCreate(Sender: TObject);
begin
// LineComponForConnect := Nil;
ComponForConnect := Nil;
ComponInterfaces := Nil;
end;
procedure TF_PEDialogEqChoice.tvChoiceEndObjectDeletion(Sender: TObject;
Node: TFlyNode);
begin
if Assigned(Node.Data)then
FreeMemory(Node.Data);
end;
end.