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

794 lines
26 KiB
ObjectPascal
Raw Blame History

unit U_MasterDefectAct;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, RzEdit, RzTabs, RzPanel, ExtCtrls, Mask, RzSpnEdt, ComCtrls,
RzButton, exgrid, RapTree, FlytreePro, Menus,
U_BaseConstants, U_BaseCommon, U_SCSComponent, U_SCSLists, U_SCSClasses, U_ProtectionCommon, ActnList, XPMenu, siComp,
siLngLnk, {bz2,} CommCtrl, ToolWin, RzRadChk, U_ResourceReport;
const
//Group Type
gtDefect = 1;
gtNormal = 2;
type
TF_MasterDefectAct = class(TForm)
RzPanel1: TRzPanel;
pnOkCancel: TRzPanel;
btClose: TRzBitBtn;
tvCompons: TFlyTreeViewPro;
Splitter1: TSplitter;
pmCompons: TPopupMenu;
ActionList1: TActionList;
Act_SetDefectToCompons: TAction;
Act_SetNormalToCompons: TAction;
N1: TMenuItem;
N2: TMenuItem;
lng_Forms: TsiLangLinked;
btOk: TRzBitBtn;
btCancel: TRzBitBtn;
RzPanel2: TRzPanel;
RzGroupBox1: TRzGroupBox;
pcDefectAct: TRzPageControl;
tsFindDefect: TRzTabSheet;
Splitter2: TSplitter;
RzGroupBox3: TRzGroupBox;
meFindDefectAdress: TRzMemo;
RzGroupBox4: TRzGroupBox;
meFindDefectDescription: TRzMemo;
tsLinkTransport: TRzTabSheet;
Splitter4: TSplitter;
RzPanel3: TRzPanel;
Splitter3: TSplitter;
RzGroupBox5: TRzGroupBox;
meLinkTransportPointA: TRzMemo;
RzGroupBox6: TRzGroupBox;
meLinkTransportPointB: TRzMemo;
RzPanel5: TRzPanel;
lbLinkTransportCable: TLabel;
seLinkTransportCable: TRzSpinEdit;
RzPanel4: TRzPanel;
RzGroupBox7: TRzGroupBox;
meLinkTransportMaterials: TRzMemo;
tsSetEquipment: TRzTabSheet;
Splitter5: TSplitter;
Splitter6: TSplitter;
RzGroupBox8: TRzGroupBox;
meSetEquipmentAddress: TRzMemo;
RzGroupBox9: TRzGroupBox;
meSetEquipmentEqipm: TRzMemo;
RzGroupBox10: TRzGroupBox;
meSetEquipmentMaterial: TRzMemo;
tsMoveEquipment: TRzTabSheet;
Splitter8: TSplitter;
Splitter9: TSplitter;
RzPanel6: TRzPanel;
Splitter7: TSplitter;
RzGroupBox11: TRzGroupBox;
meMoveEquipmentPointA: TRzMemo;
RzGroupBox12: TRzGroupBox;
meMoveEquipmentPointB: TRzMemo;
RzGroupBox13: TRzGroupBox;
meMoveEquipmentEqipm: TRzMemo;
RzGroupBox14: TRzGroupBox;
meMoveEquipmentMaterial: TRzMemo;
RzGroupBox2: TRzGroupBox;
Label14: TLabel;
Label15: TLabel;
Label16: TLabel;
edContractor: TRzEdit;
dtDateGetting: TRzDateTimeEdit;
dtDateExecution: TRzDateTimeEdit;
btApply_: TRzBitBtn;
_btShowReport: TRzBitBtn;
ToolBar1: TToolBar;
btApply: TToolButton;
btShowReport: TToolButton;
RzPanel10: TRzPanel;
cbMoveEquipmentChecked: TRzCheckBox;
RzPanel9: TRzPanel;
cbFindDefectChecked: TRzCheckBox;
RzPanel7: TRzPanel;
cbSetEquipmentChecked: TRzCheckBox;
RzPanel8: TRzPanel;
cbLinkTransportChecked: TRzCheckBox;
XPMenu1: TXPMenu;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure tvComponsDragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure tvComponsDragDrop(Sender, Source: TObject; X, Y: Integer);
procedure tvComponsGetNodeAttributes(Node: TFlyNode; Column: Integer;
aFont: TFont; var BackColor: TColor; var Alignment: TAlignment);
procedure tvComponsSelectCell(Sender: TObject; ACol, ARow: Integer;
var CanSelect: Boolean);
procedure Act_SetDefectToComponsExecute(Sender: TObject);
procedure Act_SetNormalToComponsExecute(Sender: TObject);
procedure pmComponsPopup(Sender: TObject);
procedure tvComponsSelectedChanged(OldNode, NewNode: TFlyNode);
procedure btApplyClick(Sender: TObject);
procedure pnOkCancelResize(Sender: TObject);
procedure pcDefectActTabClick(Sender: TObject);
procedure pcDefectActMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure btShowReportClick(Sender: TObject);
private
GForm: TForm;
FCatalog: TSCSCatalog;
FUOM: Integer;
FDefActStream: TMemoryStream;
FDefectGroupNode: TFlyNode;
FNormalGroupNode: TFlyNode;
function AddNodeToComponTree(AParentNode: TFlyNode; const ACaption: String; AImageindex: Integer; AData: Pointer): TFlyNode;
function AddComponGroupToTree(AGroupCaption: string; AGroupIndex: Integer; ACompons: TStringList): TFlyNode;
function GetComponFromNode(ANode: TFlyNode): TSCSComponent;
function GetDefectActFromNode(ANode: TFlyNode): TDefectAct;
function GetObjectsBlobFromNode(ANode: TFlyNode): TObjectsBlob;
procedure LoadTree;
procedure MoveSelectedComponsGroupNode(AGroupNode: TFlyNode);
procedure SendDefActFromClassToForm(ADefectAct: TDefectAct);
procedure SendDefActFromFormToClass(ADefectAct: TDefectAct);
procedure SendDefActFromNodeToForm(ANode: TFlyNode);
procedure SendDefActFromFormToNodes;
procedure SetComponIsDefect(AComponent: TSCSComponent; AGroupIndex: Integer);
public
Constructor Create(AOwner: TComponent; AForm: TForm);
Destructor Destroy; override;
procedure Execute(AFormMode: TFormMode; ACatalog: TSCSCatalog; ACanReport: Boolean; AUOM: Integer);
end;
//var
// Form1: TForm1;
implementation
Uses U_Main, Unit_DM_SCS, USCS_Main, ImgList;
{$R *.dfm}
function TF_MasterDefectAct.AddNodeToComponTree(AParentNode: TFlyNode;
const ACaption: String; AImageindex: Integer; AData: Pointer): TFlyNode;
begin
Result := AddNodeToTreeViewFly(tvCompons, AParentNode, ACaption, AImageindex, -1, AData);
end;
function TF_MasterDefectAct.AddComponGroupToTree(AGroupCaption: string; AGroupIndex: Integer; ACompons: TStringList): TFlyNode;
var
GroupNode: TFlyNode;
i: integer;
SCSComponent: TSCSComponent;
begin
GroupNode := AddNodeToComponTree(nil, AGroupCaption, -1, Pointer(AGroupIndex));
Result := GroupNode;
for i := 0 to ACompons.Count - 1 do
begin
SCSComponent := TSCSComponent(ACompons.Objects[i]);
AddNodeToComponTree(GroupNode, ACompons[i], GetComponImageIndexByFilling(SCSComponent.IsLine, foNone, false), SCSComponent);
end;
if GroupNode.Count > 0 then
GroupNode.Expanded := true;
end;
function TF_MasterDefectAct.GetComponFromNode(ANode: TFlyNode): TSCSComponent;
begin
Result := nil;
if ANode <> nil then
if ANode.Level > 0 then
if TObject(ANode.Data) is TSCSComponent then
Result := TSCSComponent(ANode.Data);
end;
function TF_MasterDefectAct.GetDefectActFromNode(ANode: TFlyNode): TDefectAct;
var
//ObjBlob: TObjectsBlob;
//UnpackedStream: TMemoryStream;
Compon: TSCSComponent;
begin
Result := nil;
{ObjBlob := GetObjectsBlobFromNode(ANode);
if ObjBlob <> nil then
begin
UnpackedStream := TMemoryStream.Create;
UnPakStream(ObjBlob.ObjectData, UnpackedStream);
UnpackedStream.Position := 0;
Result := TDefectAct.Create(nil);
Result.LoadFromStream(UnpackedStream);
FreeAndNil(UnpackedStream);
end;}
Compon := GetComponFromNode(ANode);
if Compon <> nil then
Result := Compon.ProjectOwner.GetComponDefectAct(Compon);
end;
function TF_MasterDefectAct.GetObjectsBlobFromNode(ANode: TFlyNode): TObjectsBlob;
var
Compon: TSCSComponent;
begin
Result := nil;
Compon := GetComponFromNode(ANode);
if Compon <> nil then
Result := Compon.ProjectOwner.GetObjectsBlobByParams(tiComponent, obdkDefectAct, Compon.ID);
end;
constructor TF_MasterDefectAct.Create(AOwner: TComponent; AForm: TForm);
begin
GForm := AForm;
inherited Create(AOwner);
end;
destructor TF_MasterDefectAct.Destroy;
begin
inherited;
end;
procedure TF_MasterDefectAct.Execute(AFormMode: TFormMode; ACatalog: TSCSCatalog; ACanReport: Boolean; AUOM: Integer);
begin
FCatalog := ACatalog;
FUOM := AUOM;
LoadTree;
btShowReport.Visible := ACanReport;
btOk.Visible := AFormMode <> fmView;
btCancel.Visible := AFormMode <> fmView;
btClose.Visible := AFormMode = fmView;
Caption := cMasterDefectAct_Msg2 + ' '+cInterfaceInfo_Msg8+' '+ ACatalog.GetNameForVisible;
lbLinkTransportCable.Caption := cMakeEditComponentType_Msg5_18 +', '+ GetNameUOM(AUOM, true);
pnOkCancelResize(pnOkCancel);
ShowModal;
TF_Main(GForm).RefreshNode(false);
end;
procedure TF_MasterDefectAct.FormCreate(Sender: TObject);
var
FButtonstImageIndex: Integer;
begin
seLinkTransportCable.Max := 0;
//tvCompons.Columns.Clear;
tvCompons.Items.Clear;
tvCompons.Images.Clear;
tvCompons.Images.AddImages(TF_Main(GForm).DM.ImageList_Dir);
FButtonstImageIndex := tvCompons.Images.Count;
tvCompons.Images.AddImages(TF_Main(GForm).DM.ImageList_FlyTree);
//tvCompons.ButtonCollapsedIndex := (TF_Main(GForm).DM.ImageList_Dir.Count-1) + 1;
//tvCompons.ButtonExpandedIndex := (TF_Main(GForm).DM.ImageList_Dir.Count-1) + 2;
tvCompons.ButtonCollapsedIndex := tbiCollapsed + FButtonstImageIndex;
tvCompons.ButtonCheckedIndex := tbiChecked + FButtonstImageIndex;
tvCompons.ButtonExpandedIndex := tbiExpanded + FButtonstImageIndex;
tvCompons.ButtonGrayedIndex := tbiGrayed + FButtonstImageIndex;
tvCompons.ButtonUnCheckedIndex := tbiUnchecked + FButtonstImageIndex;
tvCompons.DefaultRowHeight := 17;
tvCompons.FixedRows := 0;
tvCompons.FitColumnToClientWidth := true;
tvCompons.Indent := 17;
//tvCompons.Options := tvCompons.Options + [goColSizing] - [goDrawFocusSelected, goHorzLine, goVertLine, goRangeSelect];
tvCompons.Options := tvCompons.Options + [goColSizing, goRangeSelect, goRowMoving] - [goDrawFocusSelected, goHorzLine, goVertLine];
tvCompons.ShowImages := true;
tvCompons.ShowLogic := true;
tvCompons.StatesDrawed := false;
SetStyleToRZDateTimeEdit(dtDateGetting);
SetStyleToRZDateTimeEdit(dtDateExecution);
Act_SetDefectToCompons.Tag := gtDefect;
Act_SetNormalToCompons.Tag := gtNormal;
FDefActStream := TMemoryStream.Create;
end;
procedure TF_MasterDefectAct.LoadTree;
var
DefectCompons: TStringList;
NormalCompons: TStringList;
SCSComponent: TSCSComponent;
i: Integer;
LookedWholeIDs: TIntList;
begin
tvCompons.Items.Clear;
DefectCompons := TStringList.Create; //}CreateStringListSorted;
NormalCompons := TStringList.Create; //}CreateStringListSorted;
LookedWholeIDs := TIntList.Create;
if F_ProjMan.F_ResourceReport = nil then
begin
F_ProjMan.F_ResourceReport := TF_ResourceReport.Create(F_ProjMan, TForm(F_ProjMan));
{$IF Defined(SCS_RF)}
F_ProjMan.F_ResourceReport.pnOtherProperties.Visible := false;
{$IFEND}
{$IF Defined(SCS_PE) or Defined(SCS_SPA)}
F_ProjMan.F_ResourceReport.pnOtherProperties.Visible := false;
{$IFEND}
F_ProjMan.F_ResourceReport.AllNetTypes := True;
end;
for i := 0 to FCatalog.ComponentReferences.Count - 1 do
begin
SCSComponent := FCatalog.ComponentReferences[i];
// Tolik
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (F_ProjMan.F_ResourceReport.AllNetTypes or (F_ProjMan.F_ResourceReport.NetTypeGuidListSelected.IndexOf(SCSComponent.GUIDNetType) <> -1)) then
begin
if (SCSComponent.Whole_ID = 0) or (LookedWholeIDs.IndexOf(SCSComponent.Whole_ID) = -1) then
begin
case SCSComponent.GetPropertyValueAsBooleanDef(pnDefect, false) of
true:
DefectCompons.AddObject(SCSComponent.GetNameForVisible, SCSComponent);
false:
NormalCompons.AddObject(SCSComponent.GetNameForVisible, SCSComponent);
end;
if SCSComponent.Whole_ID <> 0 then
LookedWholeIDs.Add(SCSComponent.Whole_ID);
end;
end;
end;
FreeAndNil(LookedWholeIDs);
DefectCompons.Sort;
NormalCompons.Sort;
FDefectGroupNode := AddComponGroupToTree(cMasterDefectAct_Msg1_1, gtDefect, DefectCompons);
FNormalGroupNode := AddComponGroupToTree(cMasterDefectAct_Msg1_2, gtNormal, NormalCompons);
FreeAndNil(DefectCompons);
FreeAndNil(NormalCompons);
end;
procedure TF_MasterDefectAct.MoveSelectedComponsGroupNode(AGroupNode: TFlyNode);
var
SelectedNode: TFlyNode;
SelectedNodes: TList;
i: integer;
begin
if AGroupNode <> nil then
begin
SelectedNodes := TList.Create;
tvCompons.FillSelectedList(SelectedNodes);
if SelectedNodes.Count > 0 then
begin
try
for i := 0 to SelectedNodes.Count - 1 do
begin
SelectedNode := TFlyNode(SelectedNodes[i]);
SelectedNode.MoveTo(AGroupNode, naAddChild);
SetComponIsDefect(TSCSComponent(SelectedNode.Data), Integer(AGroupNode.Data));
end;
finally
tvCompons.Selected := nil; //SrcNode;
tvCompons.Selected := TFlyNode(SelectedNodes[0]);
SelectTreeViewNodesFly(tvCompons, SelectedNodes, true);
end;
end;
FreeAndNil(SelectedNodes);
end;
end;
procedure TF_MasterDefectAct.SendDefActFromClassToForm(
ADefectAct: TDefectAct);
var
DefectAct: TDefectAct;
begin
DefectAct := ADefectAct;
// <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
if DefectAct = nil then
DefectAct := TDefectAct.Create(nil);
try
cbFindDefectChecked.Checked := DefectAct.FindDefectChecked;
meFindDefectAdress.Lines.Text := DefectAct.FindDefectAdress;
meFindDefectDescription.Lines.Text := DefectAct.FindDefectDescription;
cbLinkTransportChecked.Checked := DefectAct.LinkTransportChecked;
meLinkTransportPointA.Lines.Text := DefectAct.LinkTransportPointA;
meLinkTransportPointB.Lines.Text := DefectAct.LinkTransportPointB;
seLinkTransportCable.Value := FloatInUOM(DefectAct.LinkTransportCable, umMetr, FUOM);
meLinkTransportMaterials.Lines.Text := DefectAct.LinkTransportMaterials;
cbSetEquipmentChecked.Checked := DefectAct.SetEquipmentChecked;
meSetEquipmentAddress.Lines.Text := DefectAct.SetEquipmentAddress;
meSetEquipmentEqipm.Lines.Text := DefectAct.SetEquipmentEqipm;
meSetEquipmentMaterial.Lines.Text := DefectAct.SetEquipmentMaterial;
cbMoveEquipmentChecked.Checked := DefectAct.MoveEquipmentChecked;
meMoveEquipmentPointA.Lines.Text := DefectAct.MoveEquipmentPointA;
meMoveEquipmentPointB.Lines.Text := DefectAct.MoveEquipmentPointB;
meMoveEquipmentEqipm.Lines.Text := DefectAct.MoveEquipmentEqipm;
meMoveEquipmentMaterial.Lines.Text := DefectAct.MoveEquipmentMaterial;
edContractor.Text := DefectAct.Contractor;
dtDateGetting.Date := DefectAct.DateGetting;
dtDateExecution.Date := DefectAct.DateExecution;
finally
if ADefectAct = nil then
FreeAndNil(DefectAct);
end;
end;
procedure TF_MasterDefectAct.SendDefActFromFormToClass(
ADefectAct: TDefectAct);
begin
ADefectAct.FindDefectChecked := cbFindDefectChecked.Checked;
ADefectAct.FindDefectAdress := meFindDefectAdress.Lines.Text;
ADefectAct.FindDefectDescription := meFindDefectDescription.Lines.Text;
ADefectAct.LinkTransportChecked := cbLinkTransportChecked.Checked;
ADefectAct.LinkTransportPointA := meLinkTransportPointA.Lines.Text;
ADefectAct.LinkTransportPointB := meLinkTransportPointB.Lines.Text;
ADefectAct.LinkTransportCable := FloatInUOM(seLinkTransportCable.Value, FUOM, umMetr);
ADefectAct.LinkTransportMaterials := meLinkTransportMaterials.Lines.Text;
ADefectAct.SetEquipmentChecked := cbSetEquipmentChecked.Checked;
ADefectAct.SetEquipmentAddress := meSetEquipmentAddress.Lines.Text;
ADefectAct.SetEquipmentEqipm := meSetEquipmentEqipm.Lines.Text;
ADefectAct.SetEquipmentMaterial := meSetEquipmentMaterial.Lines.Text;
ADefectAct.MoveEquipmentChecked := cbMoveEquipmentChecked.Checked;
ADefectAct.MoveEquipmentPointA := meMoveEquipmentPointA.Lines.Text;
ADefectAct.MoveEquipmentPointB := meMoveEquipmentPointB.Lines.Text;
ADefectAct.MoveEquipmentEqipm := meMoveEquipmentEqipm.Lines.Text;
ADefectAct.MoveEquipmentMaterial := meMoveEquipmentMaterial.Lines.Text;
ADefectAct.Contractor := edContractor.Text;
ADefectAct.DateGetting := dtDateGetting.Date;
ADefectAct.DateExecution := dtDateExecution.Date;
end;
procedure TF_MasterDefectAct.SendDefActFromNodeToForm(ANode: TFlyNode);
var
DefectAct: TDefectAct;
begin
DefectAct := GetDefectActFromNode(ANode);
SendDefActFromClassToForm(DefectAct);
end;
procedure TF_MasterDefectAct.SendDefActFromFormToNodes;
var
SelectedNodes: TList;
i: integer;
Node: TFlyNode;
DefectAct: TDefectAct;
DefectActStream: TmemoryStream;
Compon: TSCSComponent;
ObjBlob: TObjectsBlob;
begin
try
SelectedNodes := TList.Create;
tvCompons.FillSelectedList(SelectedNodes);
if SelectedNodes.Count > 0 then
begin
DefectAct := TDefectAct.Create(nil);
SendDefActFromFormToClass(DefectAct);
DefectActStream := TmemoryStream.Create;
DefectAct.SaveToStream(DefectActStream);
FreeAndNil(DefectAct);
//PakStream(DefectActStream, DefectActStream, clBetter);
PakStream(DefectActStream, DefectActStream);
DefectActStream.Position := 0;
for i := 0 to SelectedNodes.Count - 1 do
begin
Node := TFlyNode(SelectedNodes[i]);
Compon := GetComponFromNode(Node);
if Compon <> nil then
begin
ObjBlob := GetObjectsBlobFromNode(Node);
if ObjBlob = nil then
begin
ObjBlob := TObjectsBlob.Create(Compon.ActiveForm);
ObjBlob.ID := Compon.ProjectOwner.GenIDByGeneratorIndex(giObjectsBlobID);
ObjBlob.TableKind := tiComponent;
ObjBlob.DataKind := obdkDefectAct;
if Compon.IsLine = biFalse then
ObjBlob.ObjIDs.Add(Compon.ID)
else
begin
Compon.LoadWholeComponent(false);
ObjBlob.ObjIDs.Assign(Compon.WholeComponent);
end;
Compon.ProjectOwner.ObjectsBlobs.AddObjectsBlob(ObjBlob);
end;
ObjBlob.ObjectData.Position := 0;
DefectActStream.Position := 0;
ObjBlob.ObjectData.CopyFrom(DefectActStream, 0);
ObjBlob.ObjectData.Position := 0;
end;
end;
FreeAndNil(DefectActStream);
end;
FreeAndNil(SelectedNodes);
except
on E: Exception do AddExceptionToLogEx('TF_MasterDefectAct.SendDefActFromFormToNodes', E.Message);
end;
end;
procedure TF_MasterDefectAct.SetComponIsDefect(AComponent: TSCSComponent; AGroupIndex: Integer);
var
SprProperty: TNBProperty;
ptrProperty: PProperty;
ComponList: TSCSComponents;
i: Integer;
Compon: TSCSComponent;
begin
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
SprProperty := AComponent.ProjectOwner.Spravochnik.CreatePropertyByStandartGUID(pnDefect, guidPropDefect, false);
if SprProperty <> nil then
begin
ComponList := nil;
if AComponent.IsLine = biTrue then
ComponList := AComponent.ProjectOwner.GetComponentsByWholeID(AComponent.Whole_ID)
else
begin
ComponList := TSCSComponents.Create(false);
ComponList.Add(AComponent);
end;
if ComponList <> nil then
begin
for i := 0 to ComponList.Count - 1 do
begin
Compon := ComponList[i];
ptrProperty := Compon.GetPropertyBySysName(pnDefect);
if ptrProperty = nil then
begin
ptrProperty := Compon.GetPropertyAsNew;
SprProperty.AssignToPProperty(ptrProperty);
end;
case AGroupIndex of
gtDefect:
Compon.SetPropertyValueAsBoolean(pnDefect, True);
gtNormal:
Compon.SetPropertyValueAsBoolean(pnDefect, False);
end;
TF_Main(GForm).OnChangeComponPropertyVal(ptrProperty, Compon);
end;
FreeAndNil(ComponList);
end;
end;
end;
procedure TF_MasterDefectAct.FormDestroy(Sender: TObject);
begin
FreeAndNil(FDefActStream);
end;
procedure TF_MasterDefectAct.tvComponsDragOver(Sender, Source: TObject; X,
Y: Integer; State: TDragState; var Accept: Boolean);
var
TrgNode: TFlyNode;
SrcNode: TFlyNode;
begin
Accept := false;
if Sender = Source then
begin
SrcNode := TFlyTreeViewPro(Source).Selected;
TrgNode := TFlyTreeViewPro(Sender).GetNodeAt(X, Y);
if (SrcNode <> nil) and (TrgNode <> nil) then
if SrcNode.Level > 0 then // <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
if GetParentNodeByLevelFly(SrcNode, 0) <> TrgNode then
begin
Accept := true;
end;
end;
end;
procedure TF_MasterDefectAct.tvComponsDragDrop(Sender, Source: TObject; X,
Y: Integer);
var
TrgNode: TFlyNode;
SrcNode: TFlyNode;
//SelectedNodes: TList;
i: integer;
//SelectedNode: TFlyNode;
begin
if Sender = Source then
begin
SrcNode := TFlyTreeViewPro(Source).Selected;
TrgNode := TFlyTreeViewPro(Sender).GetNodeAt(X, Y);
if (SrcNode <> nil) and (TrgNode <> nil) then
begin
TrgNode := GetParentNodeByLevelFly(TrgNode, 0);
{SelectedNodes := TList.Create;
tvCompons.FillSelectedList(SelectedNodes);
if SelectedNodes.IndexOf(SrcNode) <> -1 then
begin
try
for i := 0 to SelectedNodes.Count - 1 do
begin
SelectedNode := TFlyNode(SelectedNodes[i]);
SelectedNode.MoveTo(TrgNode, naAddChild);
SetComponIsDefect(TSCSComponent(SelectedNode.Data), Integer(TrgNode.Data));
end;
finally
tvCompons.Selected := SrcNode;
SelectTreeViewNodesFly(tvCompons, SelectedNodes, true);
end;
end;
FreeAndNil(SelectedNodes);}
MoveSelectedComponsGroupNode(TrgNode);
end;
end;
end;
procedure TF_MasterDefectAct.tvComponsGetNodeAttributes(Node: TFlyNode;
Column: Integer; aFont: TFont; var BackColor: TColor;
var Alignment: TAlignment);
begin
if (Node <> nil) and (Node.Level = 0) then
aFont.Style := aFont.Style + [fsBold];
end;
procedure TF_MasterDefectAct.tvComponsSelectCell(Sender: TObject; ACol,
ARow: Integer; var CanSelect: Boolean);
var
SelectedNodes: TList;
NodeToSelect: TFlyNode;
begin
try
//<2F><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> CTRL <20><><EFBFBD> SHIFT
if ((GetKeyState(VK_SHIFT) AND $80) = $80) or ((GetKeyState(VK_CONTROL) AND $80) = $80) then
begin
SelectedNodes := TList.Create;
TFlyTreeViewPro(Sender).FillSelectedList(SelectedNodes);
if SelectedNodes.Count > 0 then
begin
NodeToSelect := TFlyTreeViewPro(Sender).GetNodeAtRow(ARow);
if NodeToSelect <> nil then
SelectedNodes.Add(NodeToSelect);
if Not CheckNodesSameParentFly(SelectedNodes) then
CanSelect := false;
end;
FreeAndNil(SelectedNodes);
end;
except
on E: Exception do AddExceptionToLogEx('TF_MasterDefectAct.tvComponsSelectCell', E.Message);
end;
end;
procedure TF_MasterDefectAct.Act_SetDefectToComponsExecute(
Sender: TObject);
begin
MoveSelectedComponsGroupNode(FDefectGroupNode);
end;
procedure TF_MasterDefectAct.Act_SetNormalToComponsExecute(
Sender: TObject);
begin
MoveSelectedComponsGroupNode(FNormalGroupNode);
end;
procedure TF_MasterDefectAct.pmComponsPopup(Sender: TObject);
var
IsCanSetDefect: Boolean;
IsCanSetNormal: Boolean;
CurrGroupNode: TFlyNode;
begin
IsCanSetDefect := false;
IsCanSetNormal := false;
if tvCompons.Selected <> nil then
if tvCompons.Selected.Level > 0 then // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if CheckSelectedNodesHaveSameParentFly(tvCompons) then
begin
CurrGroupNode := GetParentNodeByLevelFly(tvCompons.Selected, 0);
case Integer(CurrGroupNode.Data) of
gtDefect:
IsCanSetNormal := true;
gtNormal:
IsCanSetDefect := true;
end;
end;
Act_SetDefectToCompons.Enabled := IsCanSetDefect;
Act_SetNormalToCompons.Enabled := IsCanSetNormal;
end;
procedure TF_MasterDefectAct.tvComponsSelectedChanged(OldNode,
NewNode: TFlyNode);
begin
if NewNode <> nil then
if GetTreeViewSelectedNodesCountFly(tvCompons) <= 1 then
SendDefActFromNodeToForm(tvCompons.Selected);
end;
procedure TF_MasterDefectAct.btApplyClick(Sender: TObject);
begin
SendDefActFromFormToNodes;
end;
procedure TF_MasterDefectAct.pnOkCancelResize(Sender: TObject);
begin
SetMiddleControlChilds(TControl(Sender), TControl(Self));
end;
procedure TF_MasterDefectAct.pcDefectActTabClick(Sender: TObject);
var
HitTestInfo: {TC_HITTESTINFO; //}TTCHitTestInfo;
HitIndex: Integer;
ScrCursorPos: TPoint;
CursorPos: TPoint;
begin
{GetCursorPos(ScrCursorPos);
CursorPos := pcDefectAct.ScreenToClient(ScrCursorPos);
HitTestInfo.pt.X := CursorPos.X;
HitTestInfo.pt.Y := CursorPos.Y;
HitTestInfo.flags := TCHT_ONITEM; //TCHT_ONITEMICON;//0;
HitIndex := SendMessage(pcDefectAct.Handle, TCM_HITTEST, 0, Longint(@HitTestInfo));
case HitIndex of
1:
;
end; }
//pcDefectAct.ActivePage.
end;
procedure TF_MasterDefectAct.pcDefectActMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
HitTestInfo: {TC_HITTESTINFO; //}TTCHitTestInfo;
HitIndex: Integer;
ScrCursorPos: TPoint;
CursorPos: TPoint;
begin
{GetCursorPos(ScrCursorPos);
CursorPos := pcDefectAct.ScreenToClient(ScrCursorPos);
HitTestInfo.pt.X := X;
HitTestInfo.pt.Y := Y;
HitTestInfo.flags := TCHT_ONITEM; //TCHT_ONITEMICON;//0;
HitIndex := SendMessage(pcDefectAct.Handle, TCM_HITTEST, 0, Longint(@HitTestInfo));
case HitIndex of
1:
;
end;}
end;
procedure TF_MasterDefectAct.btShowReportClick(Sender: TObject);
var
Compon: TSCSComponent;
DefectAct: TDefectAct;
begin
Compon := GetComponFromNode(tvCompons.Selected);
if Compon <> nil then
begin
DefectAct := TDefectAct.Create(nil);
SendDefActFromFormToClass(DefectAct);
TF_Main(GForm).CreateFResourceReport.ShowDefectActForCompon(Compon, nil, DefectAct);
FreeAndNil(DefectAct);
end;
end;
end.