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

11913 lines
440 KiB
ObjectPascal
Raw Blame History

unit U_AddComponent;
interface
uses
Windows, U_LNG, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtDlgs, DBCtrls, Mask, {DBCtrlsEh,}
DB, FIBDataSet, pFIBDataSet, cxControls, cxContainer, cxEdit, cxCheckBox,
cxDBEdit, Spin, cxLookAndFeelPainters, cxButtons, cxTextEdit, cxMaskEdit,
cxSpinEdit, cxDropDownEdit, {cxColorComboBox,} {cxDBColorComboBox,} cxImage,
cxMemo, cxRadioGroup, ExtCtrls, ComCtrls, cxStyles, cxCustomData,
cxGraphics, cxFilter, cxData, cxDBData, cxGridLevel, cxClasses,
cxGridCustomView, cxGridCustomTableView, cxGridTableView,
cxGridDBTableView, cxGrid, Menus, cxGridBandedTableView, kbmMemTable,
ActnList, cxCurrencyEdit, ToolWin, cxDataStorage, U_BaseCommon, U_BaseSettings, XPMenu,
RzEdit, Grids, DBGrids, cxColorComboBox, cxGroupBox, cxDBLookupComboBox,
cxBlobEdit,
U_SCSLists, U_SCSClasses, U_SCSComponent, U_BaseConstants,
RzPanel, RzTabs, RzLabel, cxEditRepositoryItems, cxCalc,
RzButton, Contnrs, siComp, siLngLnk, RzRadChk, cxLookAndFeels, cxNavigator,
clipbrd;
const
// Fields indexes
fiNormIsOn = 1;
fiNormTotalCost = 8;
fiResourceIsOn = 1;
fiResourcePrice = 5;
fiResourceAdditionalPrice = 6;
fiResourceKolvo = 7;
fiResourceCost = 8;
strNoDefined = cAddComponent_Msg1;
type
TF_AddComponent = class(TForm)
OpenPictureDialog1: TOpenPictureDialog;
PopupMenu: TPopupMenu;
pmnu_Add: TMenuItem;
pmnu_Del: TMenuItem;
pmnu_Edit: TMenuItem;
ActionList_Component: TActionList;
Act_AddInterface: TAction;
Act_DelInterface: TAction;
Act_EditInterface: TAction;
Act_AddProperty: TAction;
Act_DelProperty: TAction;
Act_EditProperty: TAction;
Act_Add: TAction;
Act_Del: TAction;
Act_Edit: TAction;
Act_AddComplectEd: TAction;
Act_DelComplectEd: TAction;
Act_EditComplectEd: TAction;
Act_Default: TAction;
Act_Cancel: TAction;
Act_AddPort: TAction;
Act_EditPort: TAction;
Act_DelPort: TAction;
Act_AddCableCanalConnector: TAction;
Act_EditCableCanalConnector: TAction;
Act_DelCableCanalConnector: TAction;
pcMain: TRzPageControl;
tsCommon: TRzTabSheet;
tsView: TRzTabSheet;
gbOkCancel: TRzGroupBox;
Timer_AfterEditProperty: TTimer;
tsWorkingAndResources: TRzTabSheet;
gbNorms: TRzGroupBox;
ToolBar1: TToolBar;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton8: TToolButton;
ToolButton9: TToolButton;
GroupBox_ResourcesRel: TRzGroupBox;
ToolBar_Resources: TToolBar;
ToolButton4: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
Grid_Resources: TcxGrid;
GT_Resources: TcxGridDBTableView;
GT_ResourcesNPP: TcxGridDBColumn;
GT_ResourcesIsOn: TcxGridDBColumn;
GT_ResourcesCypher: TcxGridDBColumn;
GT_ResourcesName: TcxGridDBColumn;
GT_ResourcesIzm: TcxGridDBColumn;
GT_ResourcesPrice: TcxGridDBColumn;
GT_ResourcesAdditionalPrice: TcxGridDBColumn;
GT_ResourcesKolvo: TcxGridDBColumn;
GT_ResourcesCost: TcxGridDBColumn;
GT_ResourcesRType: TcxGridDBColumn;
GL_Resources: TcxGridLevel;
GroupBox_OtherData: TRzGroupBox;
ToolBar_OtherData: TToolBar;
ToolButton_Make: TToolButton;
ToolButton_Edit: TToolButton;
ToolButton_Delete: TToolButton;
ToolButton1: TToolButton;
Label_AddEditDelComplects: TLabel;
Grid: TcxGrid;
GT_Port: TcxGridDBTableView;
GT_PortNpp: TcxGridDBColumn;
GT_PortNAME: TcxGridDBColumn;
GT_PortISBusy: TcxGridDBColumn;
GT_PortTYPE: TcxGridDBColumn;
GT_PortKind: TcxGridDBColumn;
GT_PortNppPort: TcxGridDBColumn;
GT_PortNameConnected: TcxGridDBColumn;
GT_PortNameConnectCable: TcxGridDBColumn;
GT_PortGender: TcxGridDBColumn;
GT_PortMultiple: TcxGridDBColumn;
GT_PortisNative: TcxGridDBColumn;
GT_PortValueI: TcxGridDBColumn;
GT_PortCoordZ: TcxGridDBColumn;
GT_PortNumPair: TcxGridDBColumn;
GT_PortColor: TcxGridDBColumn;
GT_PortSide: TcxGridDBColumn;
GT_PortNotice: TcxGridDBColumn;
GT_Interface: TcxGridDBTableView;
GT_InterfaceNpp: TcxGridDBColumn;
GT_InterfaceName: TcxGridDBColumn;
GT_InterfaceType: TcxGridDBColumn;
GT_InterfaceKind: TcxGridDBColumn;
GT_InterfaceGender: TcxGridDBColumn;
GT_InterfaceIsBusy: TcxGridDBColumn;
GT_InterfaceMultiple: TcxGridDBColumn;
GT_InterfaceIsNative: TcxGridDBColumn;
GT_InterfaceValueI: TcxGridDBColumn;
GT_InterfaceCoordZ: TcxGridDBColumn;
GT_InterfaceNumPairsStr: TcxGridDBColumn;
GT_InterfaceColor: TcxGridDBColumn;
GT_InterfaceSide: TcxGridDBColumn;
GT_InterfaceNotice: TcxGridDBColumn;
GT_Property: TcxGridDBTableView;
GT_PropertyName: TcxGridDBColumn;
GT_PropertyPValue: TcxGridDBColumn;
GT_PropertyIzm: TcxGridDBColumn;
GT_PropertyTakeIntoConnect: TcxGridDBColumn;
GT_PropertyTakeIntoJoin: TcxGridDBColumn;
GT_PropertyDescription: TcxGridDBColumn;
GT_PropertyDBDataType: TcxGridDBColumn;
GT_Complects: TcxGridDBTableView;
GT_ComplectsName: TcxGridDBColumn;
GT_ComplectsKolvo: TcxGridDBColumn;
GT_ComplectsPrice1: TcxGridDBColumn;
GT_ComplectsCost1: TcxGridDBColumn;
GT_ComplectsPrice2: TcxGridDBColumn;
GT_ComplectsCost2: TcxGridDBColumn;
GT_CableCanalConnectors: TcxGridDBTableView;
GT_CableCanalConnectorsName: TcxGridDBColumn;
GT_CableCanalConnectorsConnectorType: TcxGridDBColumn;
GL_PORT: TcxGridLevel;
GL_Interface: TcxGridLevel;
GL_Property: TcxGridLevel;
GL_Complects: TcxGridLevel;
GL_CableCanalConnectors: TcxGridLevel;
Panel_TotalCost: TPanel;
Label6: TLabel;
CurrencyEdit_ResourcesCost: TcxCurrencyEdit;
Splitter1: TSplitter;
Act_AddNorm: TAction;
Act_AddResourceToMTNorm: TAction;
Act_EditNormResource: TAction;
Act_DeleteNormResource: TAction;
Act_AddResource: TAction;
Act_EditResource: TAction;
Act_DelResource: TAction;
Grid_NORMS: TcxGrid;
GT_NORMS: TcxGridDBTableView;
GT_NORMSNPP: TcxGridDBColumn;
GT_NORMSIsOn: TcxGridDBColumn;
GT_NORMSCypher: TcxGridDBColumn;
GT_NORMSName: TcxGridDBColumn;
GT_NORMSWork_Kind: TcxGridDBColumn;
GT_NORMSIZM: TcxGridDBColumn;
GT_NORMSCost: TcxGridDBColumn;
GT_NORMSKolvo: TcxGridDBColumn;
GT_NORMSTotalCost: TcxGridDBColumn;
GT_NORMSZarplat: TcxGridDBColumn;
GL_NORMS: TcxGridLevel;
PopupMenu_NormsResources: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
PopupMenu_Resources: TPopupMenu;
N5: TMenuItem;
N6: TMenuItem;
N7: TMenuItem;
EditRepository_Norm: TcxEditRepository;
EditRepository_NormCurrency_NormCost: TcxEditRepositoryCurrencyItem;
EditRepository_NormCurrency_NormTotalCost: TcxEditRepositoryCurrencyItem;
EditRepository_NormCurrency_ResourcePrice: TcxEditRepositoryCurrencyItem;
EditRepository_NormCurrency_ResourceCost: TcxEditRepositoryCurrencyItem;
GT_NORMSRType: TcxGridDBColumn;
BitBtn_OK: TRzBitBtn;
BitBtn_Cancel: TRzBitBtn;
cbApplyNorms_: TcxCheckBox;
cbApplyResources_: TcxCheckBox;
ToolButton7: TToolButton;
Act_AddCompDataFromOtherCompon: TAction;
ToolButton10: TToolButton;
Act_DublicatePortInterface: TAction;
N8: TMenuItem;
GT_InterfaceRNumber: TcxGridDBColumn;
GT_PortRNumber: TcxGridDBColumn;
GT_PortInterfRelNames: TcxGridDBColumn;
GT_NORMSExpenseForLength: TcxGridDBColumn;
RzPanel3: TRzPanel;
Label1: TLabel;
Label_NameShort: TLabel;
lbCyper: TLabel;
Label_ArticulDistributor: TLabel;
Label_ArticulProducer: TLabel;
Label_NetType: TLabel;
Label_Izm: TLabel;
Label_Producer: TLabel;
Label_Notice: TLabel;
btCanComplect: TSpeedButton;
cbApplyCanComplect: TcxCheckBox;
cbApplyNotice: TcxCheckBox;
cbApplyProducer: TcxCheckBox;
cbApplyNetType: TcxCheckBox;
cbApplyIzm: TcxCheckBox;
cbApplyArticulDistributor: TcxCheckBox;
cbApplyArticulProducer: TcxCheckBox;
cbApplyNameShort: TcxCheckBox;
cbApplyName: TcxCheckBox;
Edit_Name: TcxTextEdit;
Edit_NameShort: TcxTextEdit;
MaskEdit_Cyper: TRzMaskEdit;
Edit_ArticulDistributor: TcxTextEdit;
Edit_ArticulProducer: TcxTextEdit;
ComboBox_NetType: TcxComboBox;
Button_ChangeNetType: TcxButton;
Edit_Izm: TcxTextEdit;
ComboBox_Producer: TcxComboBox;
Button_Producer: TcxButton;
Edit_Notice: TcxTextEdit;
gbPrice: TRzGroupBox;
pnSuppliesKind: TRzPanel;
Label12: TLabel;
lbPriceSupply: TLabel;
cbSuppliesKind: TcxComboBox;
btSuppliesKind: TcxButton;
cePriceSupply: TcxCurrencyEdit;
GroupBox_Price: TRzGroupBox;
Label_Price1: TLabel;
Label_Price2: TLabel;
Label_NDS1: TLabel;
Label_NDS2: TLabel;
CurrencyEdit_NDS1: TcxCurrencyEdit;
CurrencyEdit_NDS2: TcxCurrencyEdit;
CurrencyEdit_Price2: TcxCurrencyEdit;
CurrencyEdit_Price1: TcxCurrencyEdit;
cbApplyComponData: TcxCheckBox;
RzPanel4: TRzPanel;
Label2: TLabel;
Label3: TLabel;
lbSymbolImage: TLabel;
cbApplySymbol: TcxCheckBox;
cbApplyComponIcon: TcxCheckBox;
cbApplyImage: TcxCheckBox;
Image_CompIcons: TcxImage;
Button_OpenCompIcons: TcxButton;
Button_ClearComponIcon: TcxButton;
Image_Symbol: TcxImage;
btOpenSymbolImage: TcxButton;
btClearSymbolImage: TcxButton;
Image: TcxImage;
Button_OpenPicture: TcxButton;
Button_ClearImage: TcxButton;
RzPanel5: TRzPanel;
RzPanel1: TRzPanel;
meDescription: TRzMemo;
RzPanel2: TRzPanel;
cbApplyDescription: TcxCheckBox;
RzPanel6: TRzPanel;
Label7: TLabel;
pcApplyForAll: TRzPageControl;
tsApplyInNB: TRzTabSheet;
tsApplyInPM: TRzTabSheet;
pnApplyForCurrentDir: TRzPanel;
GroupBox_ApplyForAllComponents: TRzGroupBox;
Act_TurnFromMemTableToSpravochnik: TAction;
N9: TMenuItem;
RzGroupBox1: TRzGroupBox;
cbApplyComponentType: TcxCheckBox;
ComboBox_ComponentType: TcxComboBox;
Button_TypeComponent: TcxButton;
GL_CrossConnection: TcxGridLevel;
GT_CrossConnection: TcxGridDBTableView;
GT_CrossConnectionNameFrom: TcxGridDBColumn;
GT_CrossConnectionNameTo: TcxGridDBColumn;
GT_CrossConnectionNameWith: TcxGridDBColumn;
Act_AddCrossConnection: TAction;
Act_EditCrossConnection: TAction;
Act_DelCrossConnection: TAction;
seIndex: TcxSpinEdit;
lbIndex: TLabel;
pnProjManElements: TRzPanel;
Label_UserLength: TLabel;
cbApplyUserLength: TcxCheckBox;
SpinEdit_UserLength: TcxSpinEdit;
gbNameMark: TRzGroupBox;
Edit_NameMark: TcxTextEdit;
rbMarkByDefault: TcxRadioButton;
rbMarkByTemplate: TcxRadioButton;
GT_InterfaceKolvo: TcxGridDBColumn;
GT_PortKolvo: TcxGridDBColumn;
GT_PortKolvoBusy: TcxGridDBColumn;
GT_InterfaceKolvoBusy: TcxGridDBColumn;
GT_InterfaceSideSection: TcxGridDBColumn;
btImportComponByArtProducer: TcxButton;
lng_Forms: TsiLangLinked;
CheckBox_HasNds: TRzCheckBox;
cbComponentIsTemplate: TRzCheckBox;
cbImportFromTemplate: TRzCheckBox;
cbCanComplect: TRzCheckBox;
cbDismount: TRzCheckBox;
cbUseDismounted: TRzCheckBox;
cbApplyForCurrentDir: TRzCheckBox;
cbIncludingSubFolders: TRzCheckBox;
CheckBox_ApplyForList: TRzCheckBox;
CheckBox_ApplyForProject: TRzCheckBox;
CheckBox_ApplyIncludingMark: TRzCheckBox;
lbSelectFieldsFromApplyInPM: TRzLabel;
pmSelectApplyFields: TPopupMenu;
Act_SelectAllApplyFields: TAction;
Act_DeSelectAllApplyFields: TAction;
N10: TMenuItem;
N11: TMenuItem;
lbSelectFieldsFromApplyInNB: TRzLabel;
Act_SelectCurrPageAllApplyFields: TAction;
Act_DeSelectCurrPagetAllApplyFields: TAction;
N12: TMenuItem;
N13: TMenuItem;
cbApplyPrice: TcxCheckBox;
GT_PropertySysName: TcxGridDBColumn;
pnApplyNormsResources: TRzPanel;
cbApplyNorms: TcxCheckBox;
ToolButton11: TToolButton;
Act_DelAll: TAction;
N14: TMenuItem;
GT_NORMSCountForPoint: TcxGridDBColumn;
GT_NORMSStepOfPoint: TcxGridDBColumn;
ToolButton12: TToolButton;
Act_AddResourceComponToMTNorm: TAction;
GT_NORMSIsResource: TcxGridDBColumn;
GT_NORMSGUIDNBCompon: TcxGridDBColumn;
GT_NORMSTotalKolvo: TcxGridDBColumn;
btClose: TRzBitBtn;
cbApplyResources: TcxCheckBox;
Timer_ChoiceCompType: TTimer;
lbSpecification: TLabel;
cbSpecification: TcxComboBox;
btChangeSpecification: TcxButton;
cbApplySpecification: TcxCheckBox;
cbApplyForOnlySelected: TRzCheckBox;
cbIsMarkInCaptions: TRzCheckBox;
cbApplyIsMarkInCaptions: TcxCheckBox;
cbApplyForFocusedProp: TRzCheckBox;
cbAutoAddInter: TRzCheckBox;
GT_NORMSLaborTime: TcxGridDBColumn;
GT_NORMSPricePerTime: TcxGridDBColumn;
N15: TMenuItem;
Act_ShowInNormBase: TAction;
XP_Menu1: TXPMenu;
cbNotUseUgoBounds: TRzCheckBox;
procedure Button_OpenPictureClick(Sender: TObject);
procedure BitBtn_OKClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure BitBtn_CancelClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btCanComplectClick(Sender: TObject);
procedure Act_AddInterfaceExecute(Sender: TObject);
procedure Act_DelInterfaceExecute(Sender: TObject);
procedure Act_EditInterfaceExecute(Sender: TObject);
procedure Act_AddPropertyExecute(Sender: TObject);
procedure Act_EditPropertyExecute(Sender: TObject);
procedure Act_DelPropertyExecute(Sender: TObject);
procedure GT_InterfaceTypeGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: string);
procedure ComboBox_NetTypeKeyPress(Sender: TObject; var Key: Char);
procedure Button_ChangeNetTypeClick(Sender: TObject);
procedure CurrencyEdit_Price1_KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure CurrencyEdit_Price2KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure Act_AddExecute(Sender: TObject);
procedure Act_DelExecute(Sender: TObject);
procedure Act_EditExecute(Sender: TObject);
procedure GridActiveTabChanged(Sender: TcxCustomGrid;
ALevel: TcxGridLevel);
procedure ColorEditChange(Sender: TObject);
procedure GT_PropertyPValueGetProperties(Sender: TcxCustomGridTableItem;
ARecord: TcxCustomGridRecord;
var AProperties: TcxCustomEditProperties);
procedure Act_AddComplectEdExecute(Sender: TObject);
procedure Act_DelComplectEdExecute(Sender: TObject);
procedure Act_EditComplectEdExecute(Sender: TObject);
procedure GridEnter(Sender: TObject);
procedure GridExit(Sender: TObject);
procedure FormHide(Sender: TObject);
procedure GT_InterfaceGenderGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: string);
procedure FormDestroy(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button_OpenCompIconsClick(Sender: TObject);
procedure Act_DefaultExecute(Sender: TObject);
procedure GT_InterfaceNumPairsStrGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: string);
procedure GT_InterfaceSideGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: string);
procedure GT_InterfaceValueIGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: string);
procedure Act_CancelExecute(Sender: TObject);
procedure Edit_NamePropertiesChange(Sender: TObject);
procedure ComboBox_NetTypePropertiesChange(Sender: TObject);
procedure GT_InterfaceKindGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: string);
procedure Button_TypeComponentClick(Sender: TObject);
procedure Button_ProducerClick(Sender: TObject);
procedure ComboBox_ComponentTypePropertiesChange(Sender: TObject);
procedure Act_AddPortExecute(Sender: TObject);
procedure Act_EditPortExecute(Sender: TObject);
procedure Act_DelPortExecute(Sender: TObject);
procedure GT_InterfaceFocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord;
ANewItemRecordFocusingChanged: Boolean);
procedure GT_PortFocusedRecordChanged(Sender: TcxCustomGridTableView;
APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord;
ANewItemRecordFocusingChanged: Boolean);
procedure GT_PropertyFocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord;
ANewItemRecordFocusingChanged: Boolean);
procedure Edit_IzmPropertiesChange(Sender: TObject);
procedure Edit_NameShortPropertiesChange(Sender: TObject);
procedure Edit_NameMarkPropertiesChange(Sender: TObject);
procedure GT_InterfaceNppGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: string);
procedure Button_ClearImageClick(Sender: TObject);
procedure Button_ClearComponIconClick(Sender: TObject);
procedure GT_PortNppGetDisplayText(Sender: TcxCustomGridTableItem;
ARecord: TcxCustomGridRecord; var AText: string);
procedure CheckBox_HasNdsPropertiesChange(Sender: TObject);
procedure Act_AddCableCanalConnectorExecute(Sender: TObject);
procedure Act_EditCableCanalConnectorExecute(Sender: TObject);
procedure Act_DelCableCanalConnectorExecute(Sender: TObject);
procedure GT_CableCanalConnectorsConnectorTypeGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: string);
procedure CheckBox_ApplyForProjectPropertiesChange(Sender: TObject);
procedure CheckBox_ApplyForListPropertiesChange(Sender: TObject);
procedure Edit_NameShortKeyPress(Sender: TObject; var Key: Char);
procedure btOpenSymbolImageClick(Sender: TObject);
procedure btClearSymbolImageClick(Sender: TObject);
procedure rbMarkByDefaultClick(Sender: TObject);
procedure rbMarkByTemplateClick(Sender: TObject);
procedure Edit_NameMarkEditing(Sender: TObject; var CanEdit: Boolean);
procedure Timer_AfterEditPropertyTimer(Sender: TObject);
procedure GT_PropertyEditValueChanged(Sender: TcxCustomGridTableView;
AItem: TcxCustomGridTableItem);
procedure GT_PropertyEditChanged(Sender: TcxCustomGridTableView;
AItem: TcxCustomGridTableItem);
procedure SpinEdit_UserLengthPropertiesEditValueChanged(
Sender: TObject);
procedure GT_NORMSCellClick(Sender: TcxCustomGridTableView;
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
AShift: TShiftState; var AHandled: Boolean);
procedure GT_NORMSEditing(Sender: TcxCustomGridTableView;
AItem: TcxCustomGridTableItem; var AAllow: Boolean);
procedure GT_NORMSFocusedRecordChanged(Sender: TcxCustomGridTableView;
APrevFocusedRecord, AFocusedRecord: TcxCustomGridRecord;
ANewItemRecordFocusingChanged: Boolean);
procedure GT_NORMSCostPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
procedure GT_NORMSKolvoPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
procedure GT_ResourcesPricePropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
procedure GT_ResourcesAdditionalPricePropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
procedure GT_ResourcesKolvoPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
procedure Act_AddNormExecute(Sender: TObject);
procedure Act_AddResourceToMTNormExecute(Sender: TObject);
procedure Act_EditNormResourceExecute(Sender: TObject);
procedure Act_DeleteNormResourceExecute(Sender: TObject);
procedure Act_AddResourceExecute(Sender: TObject);
procedure Act_EditResourceExecute(Sender: TObject);
procedure Act_DelResourceExecute(Sender: TObject);
procedure GT_NORMSRTypeGetDisplayText(Sender: TcxCustomGridTableItem;
ARecord: TcxCustomGridRecord; var AText: string);
procedure cbApplyForCurrentDirPropertiesChange(Sender: TObject);
procedure cbSuppliesKindPropertiesChange(Sender: TObject);
procedure btSuppliesKindClick(Sender: TObject);
procedure Act_AddCompDataFromOtherComponExecute(Sender: TObject);
procedure CurrencyEdit_Price1Exit(Sender: TObject);
procedure cbApplyComponDataClick(Sender: TObject);
procedure Act_DublicatePortInterfaceExecute(Sender: TObject);
procedure GT_InterfaceRNumberGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: string);
procedure GT_PortRNumberGetDisplayText(Sender: TcxCustomGridTableItem;
ARecord: TcxCustomGridRecord; var AText: string);
procedure GT_NORMSNPPGetDisplayText(Sender: TcxCustomGridTableItem;
ARecord: TcxCustomGridRecord; var AText: string);
procedure gbOkCancelResize(Sender: TObject);
procedure Act_TurnFromMemTableToSpravochnikExecute(Sender: TObject);
procedure Act_AddCrossConnectionExecute(Sender: TObject);
procedure Act_EditCrossConnectionExecute(Sender: TObject);
procedure Act_DelCrossConnectionExecute(Sender: TObject);
procedure seIndexPropertiesChange(Sender: TObject);
procedure Act_EnterExecute(Sender: TObject);
procedure cePriceSupplyKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure cbDismountClick(Sender: TObject);
procedure GT_CableCanalConnectorsDblClick(Sender: TObject);
procedure ComboBox_ComponentTypeExit(Sender: TObject);
procedure GT_NORMSEditChanged(Sender: TcxCustomGridTableView;
AItem: TcxCustomGridTableItem);
procedure GT_NORMSEditValueChanged(Sender: TcxCustomGridTableView;
AItem: TcxCustomGridTableItem);
procedure btImportComponByArtProducerClick(Sender: TObject);
procedure lbSelectFieldsFromApplyInPMClick(Sender: TObject);
procedure Act_SelectAllApplyFieldsExecute(Sender: TObject);
procedure Act_DeSelectAllApplyFieldsExecute(Sender: TObject);
procedure lbSelectFieldsFromApplyInNBClick(Sender: TObject);
procedure Act_SelectCurrPageAllApplyFieldsExecute(Sender: TObject);
procedure Act_DeSelectCurrPagetAllApplyFieldsExecute(Sender: TObject);
procedure GT_PropertyPValueGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: String);
procedure GT_PropertyIzmGetDisplayText(Sender: TcxCustomGridTableItem;
ARecord: TcxCustomGridRecord; var AText: String);
procedure GT_NORMSExpenseForLengthGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: String);
procedure GT_NORMSExpenseForLengthPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
procedure GT_NORMSInitEdit(Sender: TcxCustomGridTableView;
AItem: TcxCustomGridTableItem; AEdit: TcxCustomEdit);
procedure GT_InterfaceCoordZGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: String);
procedure pcMainChanging(Sender: TObject; NewIndex: Integer;
var AllowChange: Boolean);
procedure Act_DelAllExecute(Sender: TObject);
procedure GT_NORMSCountForPointPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
procedure GT_NORMSStepOfPointGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: String);
procedure GT_NORMSStepOfPointPropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
procedure Act_AddResourceComponToMTNormExecute(Sender: TObject);
procedure GT_NORMSCustomDrawCell(Sender: TcxCustomGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo;
var ADone: Boolean);
procedure GT_NORMSTotalKolvoGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: String);
procedure ComboBox_ProducerPropertiesChange(Sender: TObject);
procedure cePriceSupplyPropertiesChange(Sender: TObject);
procedure Edit_NoticePropertiesChange(Sender: TObject);
procedure Timer_ChoiceCompTypeTimer(Sender: TObject);
procedure btChangeSpecificationClick(Sender: TObject);
procedure GT_NORMSLaborTimePropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
procedure GT_NORMSPricePerTimePropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
procedure GT_NORMSLaborTimeGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: String);
procedure Act_ShowInNormBaseExecute(Sender: TObject);
procedure Edit_NameDblClick(Sender: TObject);
private
{ Private declarations }
GForm: TForm;
FMakeEdit: TMakeEdit;
InterfFields: TStringList;
PortFields: TStringList;
PropertFields: TStringList;
ComplectsFields: TStringList;
IOfI_RelFields: TStringList;
ComponIconsFields: TStringList;
CableCanalConnectorsFields: TStringList;
//CrossConnectionsFields: TStringList;
GGenLastCableCanalConnectorID: Integer;
GGenLastCompPropRelID: Integer;
GGenLastCrossConnectionID: Integer;
GGenLastInterfID: Integer;
GGenLastPortInterfRelID: Integer;
GGenLastNormID: Integer;
GGenLastResourceID: Integer;
//GGenLastPropertyID: Integer;
GLastPort: Integer;
GWasChanging: Boolean;
FIsLoadingForm: Boolean;
FApplyCheckBoxes: TObjectList;
FApplyCheckBoxesBorderColor: TColor;
FApplyCheckBoxesBorderStyle: TcxEditBorderStyle;
FApplyCheckBoxesPageIndex: TIntList;
FApplyControls: TObjectList;
FApplyComponElementsVisible: TIntList;
FApplyComponElementsChecked: TIntList;
FComponBeforeEdit: TSCSComponent;
FCurrComponentType: TComponentType;
FCurrency: TCurrency;
FNBCurrency: TCurrency;
FIDCatalog: Integer;
FOutNormsResources: TSCSNormsResources;
FTraccaLength: Double;
FSuppliesKind: TSuppliesKind;
FSpravochnik: TSpravochnik;
FProjSpravochnik: TSpravochnik;
FListSpravochnik: TSpravochnik;
FChangedComponTypeInCombo: Boolean;
FIsTemplate: Boolean;
procedure OncbApplyForChange(Sender: TObject);
procedure OncbApplyForPMChange(Sender: TObject);
procedure SetGenLastID(ATableKind: TTableKind);
function GetMaxNumPair(AMemTable: TkbmMemTable): Integer;
function GenNewID(ATableKind: TTableKind): Integer;
//function GetStrWithoutSpaces(AString: String): String;
procedure AddApplyCheckBoxToList(ACheckBox: TcxCheckBox; APageIndex: Integer);
function CheckRequiredProperties: Boolean;
procedure ClearFormGrids;
procedure ClearPortInterfaceMemTable(AMemTable: TkbmMemTable; AIsPort: Boolean);
function CreateFormOnlyComponent: TSCSComponent;
function CreateFormComponent: TSCSComponent;
function CreateFormInterfaces: TSCSInterfaces;
function CreateFormProperties: TList;
function CreateFormCableCanalConnectors: TList;
function CreateFormCrossConnections: TSCSObjectList;
procedure DeleteAllPortsAndInterf;
function DelRequiredEmptyProps: Boolean;
function GetComponentActualPrice: Double;
function GetComponentNameMarkByTemplate: string;
function GetNormResourcesCountByCompPropRelID(AIDCompPropRel: Integer): Integer;
function GetSignType: Integer;
procedure ImportComponentByID(AID: Integer);
procedure SetAsDeletedMTRecords(AMemTable, ADetailMemTable: TkbmMemTable;
ADeletedIDs, ADeletedIDsFromDetail: TIntList);
procedure SendComponentToForm(AComponent: TSCSComponent; AFromChangeComponType: Boolean);
procedure SendInterfacesPortsToMemTable(ASCSComponent: TSCSComponent; AAsNew, AAskDelInterf: Boolean);
procedure DefineComponCurrencies;
procedure DefineComponSecondPrice(AFirstPrice: Double);
procedure DefineNormResByProperty(Aproperty: PProperty);
procedure DefineParamsBySupply(APriceSupply: Double; ADefIzm: Boolean);
procedure DefineSupplyPriceByComponActualPrice;
procedure DefineSupplyPriceByComponPrice(AComponPrice: Double);
procedure DefinecbApplyCompData;
procedure DefineUniversalInterfacesByProperty(AProp: PProperty; const ACompTypeSysName: string);
procedure DeleteNormResByIDCompPropRel(AIDCompPropRel: Integer);
procedure LoadNetTypesToForm;
procedure LoadCompSpecificationToForm;
procedure LoadProducersToForm;
procedure LoadSuppliesKindsToForm;
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
procedure SetNewCompPropIDsToNormRes(AOldCompPropIDs, ANewCompPropIDs: TintList);
procedure SetValueToAllApplyCheckBoxes(AValue: Boolean);
procedure SetValueToCurrPageApplyCheckBoxes(AValue: Boolean);
procedure VisibleApplyCheckBoxes(AVisible, ASetAsChecked: Boolean);
procedure OnChangeComponPropertyVal(AProperty: PProperty; AOldProperty: PProperty=nil);
procedure OnSetComponPropertyVal(AMakeEdit: TMakeEdit; AProperty: PProperty; AOldProperty: PProperty=nil);
procedure OnControlChange(Sender: TObject);
public
{ Public declarations }
//Tolik 21/02/2022 --
GComponGuidNB: String;
//
GFormMode: TFormMode;
GIDComponent: Integer;
GIDObjectIcon: Integer;
GIDSymbolImage: Integer;
GGUIDObjectIcon: string;
GGUIDSymbolImage: string;
GName_Currency: string;
GID_Currency: Integer;
GCompAdded: Boolean;
GChangedPicture: Boolean;
GChangedInterface: Boolean;
GChangedProperty: Boolean;
GChangedComplect: Boolean;
GChangedObjectIcons: Boolean;
GChangedUserLength: Boolean;
GChangedIndex: Boolean;
GChangedNameShort: Boolean;
GisEditingPrice: Boolean;
GColors: TStringList;
GDeletedInterfRel: TIntList;
GDeletedPort: TIntList;
GDeletedPortInterfRels: TIntList;
//GDeletedComponIcons: TIntList;
GDeletedPropRel: TIntList;
GDeletedComplects: TIntList;
GDeletedIOfIRel: TIntList;
GDeletedCableCanalConnectors: TIntList;
GDeletedCrossConnections: TIntList;
GDeletedNormID: TIntList;
GDeletedResourceID: TIntList;
property ApplyComponElementsChecked: TIntList read FApplyComponElementsChecked write FApplyComponElementsChecked;
procedure EnableButtons;
procedure EnableDisableApplyIncludingMark;
function GetComponentType: TComponentType;
procedure SetControls(APrevCompType: PComponentType);
procedure SetReadOnlyToControls(AReadOnly: Boolean);
procedure SetSupplyKindControls;
//Function GetIDFromComboBox: Integer;
function PriceWithNDS(APrice, ANDS: Double): Double;
function PriceWithoutNDS(APrice, ANDS: Double): Double;
procedure SetCalcPrice;
procedure ShowNDSPrice;
procedure EnableMakeEditCompon(AEnable: Boolean);
procedure RefreshFields(ATarget: TkbmMemTable; ASTableName,
ATargetKeyName, ASourceKeyName: string; AFieldsNames: TStringList);
procedure EnableControl(AEnable: Boolean);
procedure SetVisibleByIsLine(AIsLineType: Integer);
procedure VisibleInterfaceColumns(AVisible: Boolean);
function GetMainformName: string;
function GetPropertyBySysName(ASysyName: string): string;
function GetPropertyBySysNameAsFloat(ASysyName: string): Double;
function isBusyInterface: Boolean;
procedure SetPropertyValueBySysName(ASysyName, AValue: string);
procedure SetPropertyValueBySysNameAsFloat(ASysyName: string; AValue: Double);
//Procedure AddPropertyToNBCompon(aProp: PProperty); // Tolik 05/03/2021 --
Procedure AddPropertyToNBCompon(aProp: TNBProperty; aValue: string); // Tolik 05/03/2021 --
procedure SdvigNppPortAfterDel(ADelNPPPort: Integer);
procedure AddInterfacePort(AIsPort: Integer);
procedure EditInterfacePort(AIsPort: Integer);
procedure DelAllInterfacesPorts(AIsPort: Boolean);
procedure DelAllProperties;
procedure DelAllCableCanalConnectors;
procedure DelAllCrossConnections;
procedure DelInterfacePort(AIsPort: Integer);
procedure DelPropsBySysNames(ASysNames: TStringList);
procedure DefineAllPortInterfRelNames;
procedure DefineCurrPortInterfRelNames(AAutoEditPost: Boolean);
function GetInterfPortMemTable: TkbmMemTable;
procedure AddEditCableCanalConnector(AMakeEdit: TMakeEdit);
procedure AddEditCrossConnection(AMakeEdit: TMakeEdit);
procedure AddEditProperty(AMakeEdit: TMakeEdit);
procedure LoadComponIcon(AIDObjectIcon: Integer; AGUIDObjectIcon: string; ATrgImage: TcxImage);
procedure LoadImageFromObjectIcons(var AIDIcon: Integer; var AGUIDObjectIcon: string; AImage: TcxImage);
procedure RefreshCompIcons(AID_CompStateType: Integer);
procedure AddInterfaceToMT(AmeInterfaceRel: TmeInterfaceRel);
procedure LoadNormsResources(AAsNew: Boolean);
procedure SaveNormsResources;
procedure DelResourcesFromCurrNorm;
procedure EnableEditDelNorm;
procedure EnableEditDelResource;
function GetExistsResourcesIDsFromCurrNorm: TIntList;
procedure AddEditNorm(AMakeEdit: TMakeEdit);
procedure AddEditResource(AMakeEdit: TMakeEdit; AMemoryTableKind: TTableKind; AMakeFromCompon: Boolean);
function GetNewNPP(AMemTable: TkbmMemTable): Integer;
//procedure SdvigNPP(ANPPAfter: Integer; AMemTable: TkbmMemTable);
//procedure LoadFromResourceToMT(AResource: TSCSResourceRel; AMakeEdit: TMakeEdit; AMemoryTableKind: TTableKind);
//procedure LoadFromNormToMT(ASCSNorm: TSCSNorm; AMakeEdit: TMakeEdit; AKolvo: Double);
//procedure LoadFromMTToResource(AMemoryTableKind: TTableKind; AResourceRel: TSCSResourceRel);
//procedure LoadFromMTToNorm(ASCSNorm: TSCSNorm);
procedure CalcNormCost;
procedure CalcWorkCost;
procedure ApplyChangedComponentType;
function ReadOnly: Boolean;
//function Excecute(AMakeEdit: TMakeEdit; var ): Boolean;
constructor Create(AOwner: TComponent; AForm: TForm);
function Execute(AFormMode: TFormMode; AIsTemplate: Boolean): Boolean;
end;
{
var
F_AddComponent: TF_AddComponent;
}
implementation
uses Unit_DM_scs, U_CaseForm, U_AnswerToQuast, U_AddInterface, U_Main, Math,
U_CanDelete, U_Common, cxExtEditRepositoryItems, FIBQuery,
U_MakeEditCrossConnection, U_ComponDesignWizard, U_ChoiceComponType;
{$R *.dfm}
// ############################# My Functions ##################################
// #############################################################################
//
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> / <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.EnableButtons;
procedure VisibleButtons(AVisible: Boolean);
begin
ToolButton_Make.Visible := AVisible;
ToolButton_Edit.Visible := AVisible;
ToolButton_Delete.Visible := AVisible;
//Label_AddEditDelComplects.Align := alRight;
//Label_AddEditDelComplects.Align := alLeft;
end;
procedure EnablDisabl(RecCount, ActiveLevelIndex: Integer);
begin
if (RecCount = 0) or (ActiveLevelIndex = liComplects) {or (TF_Main(GForm).GDBMode = bkProjectManager)} then
begin
Act_Edit.Enabled := false;
Act_Del.Enabled := false;
end
else
begin
Act_Edit.Enabled := true;
Act_Del.Enabled := true;
end;
Act_Add.Enabled := true;
Act_DublicatePortInterface.Visible := ActiveLevelIndex in [liPort, liInterface];
Act_DublicatePortInterface.Enabled := (RecCount > 0) and (ActiveLevelIndex in [liPort, liInterface]);
Act_TurnFromMemTableToSpravochnik.Visible := ActiveLevelIndex in [liPort, liInterface];
Act_TurnFromMemTableToSpravochnik.Enabled := (RecCount > 0) and (ActiveLevelIndex in [liPort, liInterface]);
VisibleButtons(true);
Label_AddEditDelComplects.Visible := (ActiveLevelIndex = liComplects);
//if ActiveLevelIndex <> liComplects then
// //ToolBar_OtherData.Visible := true
// VisibleButtons(true)
//else
// //ToolBar_OtherData.Visible := false;
// VisibleButtons(false);
end;
begin
try
Act_AddCompDataFromOtherCompon.Visible := (TF_Main(GForm).GDBMode = bkNormBase) and GUseVisibleInterfaces and Not FIsTemplate;
Act_AddCompDataFromOtherCompon.Enabled := false;
Act_DelAll.Visible := (TF_Main(GForm).GDBMode = bkNormBase) and Not FIsTemplate;
with TF_Main(GForm).DM {F_Main.DM} do
case Grid.ActiveLevel.Index of
liInterface:
begin
if MemTable_InterfaceRelEd.Active then
EnablDisabl(MemTable_InterfaceRelEd.RecordCount, liInterface)
else
EnablDisabl(0, liInterface);
Act_AddCompDataFromOtherCompon.Enabled := true;
Act_AddCompDataFromOtherCompon.Hint := cAddComponent_Msg2_1;
end;
liPort:
begin
if MemTable_PortEd.Active then
EnablDisabl(MemTable_PortEd.RecordCount, liPort)
else
EnablDisabl(0, liPort);
Act_AddCompDataFromOtherCompon.Enabled := true;
Act_AddCompDataFromOtherCompon.Hint := cAddComponent_Msg2_2;
end;
liProperty:
begin
if MemTable_PropertyEd.Active then
EnablDisabl(MemTable_PropertyEd.RecordCount, liProperty)
else
EnablDisabl(0, liProperty);
//if TF_Main(GForm).GDBMode = bkProjectManager then
// Act_Del.Enabled := false;
end;
liComplects:
begin
if MemTable_ComplectsEd.Active then
EnablDisabl(MemTable_ComplectsEd.RecordCount, liComplects)
else
EnablDisabl(0, liComplects);
end;
liCableCanalConnectors:
begin
if MemTable_CableCanalConnectorsEd.Active then
EnablDisabl(MemTable_CableCanalConnectorsEd.RecordCount, liCableCanalConnectors)
else
EnablDisabl(0, liCableCanalConnectors);
end;
liCrossConnections:
begin
if mtCrossConnectionEd.Active then
EnablDisabl(mtCrossConnectionEd.RecordCount, liCrossConnections)
else
EnablDisabl(0, liCrossConnections);
end;
end;
Act_DelAll.Enabled := Act_Del.Enabled;
except
on E: Exception do
AddExceptionToLog('TF_AddComponent.EnableButtons: ' + E.Message);
end;
end;
procedure TF_AddComponent.EnableDisableApplyIncludingMark;
var
CanEnable: Boolean;
begin
CanEnable := false;
if (CheckBox_ApplyForList.Enabled and CheckBox_ApplyForList.Checked) or
(CheckBox_ApplyForProject.Checked) then
CanEnable := true;
CheckBox_ApplyIncludingMark.Enabled := CanEnable;
lbSelectFieldsFromApplyInPM.Enabled := CanEnable;
end;
function TF_AddComponent.GetComponentType: TComponentType;
var
SprComponentType: TNBComponentType;
begin
Result.ID := 0;
Result.NAME := '';
Result.NamePlural := '';
Result.PortKind := pkNone;
Result.ActiveState := biFalse;
Result.IsLine := biFalse;
Result.IsStandart := biFalse;
if ComboBox_ComponentType.Text <> '' then
begin
case TF_Main(GForm).GDBMode of
bkNormBase:
Result := TF_Main(GForm).FNormBase.DM.GetComponentType(GetIDFromComboBox(ComboBox_ComponentType));
bkProjectManager:
begin
SprComponentType := nil;
if TF_Main(GForm).GSCSBase.CurrProject.CurrList <> nil then
SprComponentType := TF_Main(GForm).GSCSBase.CurrProject.CurrList.Spravochnik.GetComponentTypeWithAssign(
GetGUIDFromComboBox(ComboBox_ComponentType), TF_Main(GForm).FNormBase.GSCSBase.NBSpravochnik);
if SprComponentType <> nil then
Result := SprComponentType.ComponentType;
end;
end;
end;
end;
procedure TF_AddComponent.SetControls(APrevCompType: PComponentType);
var
GUIDComponType: string;
GDBMode: TDBKind;
CanVisible: Boolean;
ComponentType: TComponentType;
HardIzm: String;
begin
FIsLoadingForm := true;
try
GDBMode := TF_Main(GForm).GDBMode;
SetReadOnlyToControls(GFormMode = fmView);
GUIDComponType := GetGUIDFromComboBox(ComboBox_ComponentType);
ComponentType := GetComponentType;
if GUIDComponType = '' then
GroupBox_OtherData.Enabled := false
else
GroupBox_OtherData.Enabled := true;
//cbSuppliesKindPropertiesChange(cbSuppliesKind);
//24.09.2007 pnSuppliesKind.Visible := (GDBMode = bkNormBase);
if ComponentType.IsLine = biTrue then
GT_InterfaceMultiple.Caption := GetNameInterfaceMultipleForLine //CMultipleLineInterface
else
GT_InterfaceMultiple.Caption := CMultiplePoinInterface;
GL_CableCanalConnectors.Visible := (ComponentType.SysName = ctsnCableChannel) and Not FIsTemplate;
GL_CrossConnection.Visible := (ComponentType.SysName = ctsnCupBoard) and (GDBMode = bkNormBase) and Not FIsTemplate;
GL_Interface.Visible := GUseVisibleInterfaces;
if Not Grid.ActiveLevel.Visible then
if Grid.Levels.GetAvailableItem <> nil then
Grid.ActiveLevel := Grid.Levels.GetAvailableItem;
CanVisible := false;
if GDBMode = bkProjectManager then
CanVisible := true;
//GroupBox_ApplyForAllComponents.Visible := CanVisible;
//pnApplyForCurrentDir.Visible := Not CanVisible;
MaskEdit_Cyper.Enabled := not CanVisible;
lbIndex.Enabled := CanVisible;
seIndex.Enabled := CanVisible;
pnProjManElements.Visible := CanVisible;
GT_NORMSExpenseForLength.Visible := ComponentType.IsLine = biTrue;
//GT_NORMSExpenseForSection.Visible := ComponentType.IsLine = biTrue;
SetSupplyKindControls;
cbUseDismounted.Enabled := cbDismount.Checked;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
cbComponentIsTemplate.Checked := (GIDComponent > 0) and (GIDComponent = ComponentType.IDComponTemplate);
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HardIzm := GetNameUOMForCompon('', @ComponentType, TF_Main(GForm).FUOM);
if HardIzm <> '' then
Edit_Izm.Text := HardIzm
else
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>-<2D> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD>-<2D> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20> <20><>.<2E><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if APrevCompType <> nil then
begin
if GetNameUOMForCompon('', APrevCompType, TF_Main(GForm).FUOM) <> '' then
if (FCurrComponentType.IsLine = biFalse) or (FCurrComponentType.CanUseAsPoint = biTrue) then
if FSuppliesKind.ID <> 0 then
Edit_Izm.Text := FSuppliesKind.Izm;
end;
Edit_Izm.Properties.ReadOnly := (HardIzm <> '');
cbApplyNorms.Properties.Caption := cAddComponent_Msg17;
cbApplyResources.Properties.Caption := cAddComponent_Msg18;
if Not FIsTemplate then
lbSymbolImage.Caption := cAddComponent_Msg23
else
lbSymbolImage.Caption := cAddComponent_Msg24;
cbComponentIsTemplate.Enabled := GUseComponTemplates;
cbComponentIsTemplate.Visible := Not FIsTemplate;
cbImportFromTemplate.Enabled := GUseComponTemplates;
cbImportFromTemplate.Visible := Not FIsTemplate;
//Label_ArticulProducer.Enabled := Not FIsTemplate;
//Edit_ArticulProducer.Enabled := Not FIsTemplate;
//Label_ArticulDistributor.Enabled := Not FIsTemplate;
//Edit_ArticulDistributor.Enabled := Not FIsTemplate;
//Act_AddCompDataFromOtherCompon.Visible := Not FIsTemplate;
lbCyper.Visible := Not FIsTemplate;
MaskEdit_Cyper.Visible := Not FIsTemplate;
//Tolik 15/02/2022 -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//tsWorkingAndResources.TabVisible := Not FIsTemplate;
//
pcApplyForAll.Visible := Not FIsTemplate;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
cbCanComplect.Visible := GUseVisibleInterfaces and Not FIsTemplate;
btCanComplect.Visible := GUseVisibleInterfaces and Not FIsTemplate;
//28.08.2013 cbIsMarkInCaptions.Visible := ComponentType.IsLine = biFalse;
CanVisible := true;
if GDBMode = bkProjectManager then
CanVisible := false;
lbSpecification.Visible := CanVisible;
cbSpecification.Visible := CanVisible;
btChangeSpecification.Visible := CanVisible;
finally
FIsLoadingForm := true;
end;
end;
procedure TF_AddComponent.SetReadOnlyToControls(AReadOnly: Boolean);
begin
BitBtn_OK.Visible := Not AReadOnly;
BitBtn_Cancel.Visible := Not AReadOnly;
btClose.Visible := AReadOnly;
//ComboBox_ComponentType.Properties.ReadOnly := AReadOnly;
//ComboBox_NetType.Properties.ReadOnly := AReadOnly;
//ComboBox_Producer.Properties.ReadOnly := AReadOnly;
//cbSuppliesKind.Properties.ReadOnly := AReadOnly;
Button_TypeComponent.Enabled := Not AReadOnly;
Button_ChangeNetType.Enabled := Not AReadOnly;
Button_Producer.Enabled := Not AReadOnly;
btSuppliesKind.Enabled := Not AReadOnly;
Button_OpenPicture.Enabled := Not AReadOnly;
Button_OpenCompIcons.Enabled := Not AReadOnly;
btOpenSymbolImage.Enabled := Not AReadOnly;
Button_ClearImage.Enabled := Not AReadOnly;
Button_ClearComponIcon.Enabled := Not AReadOnly;
btClearSymbolImage.Enabled := Not AReadOnly;
pcApplyForAll.Visible := Not AReadOnly;
gbOkCancelResize(gbOkCancel);
end;
procedure TF_AddComponent.SetSupplyKindControls;
var
IDSuppliesKind: Integer;
GUIDSuppliesKind: string;
begin
IDSuppliesKind := GetIDFromComboBox(cbSuppliesKind);
GUIDSuppliesKind := GetGUIDFromComboBox(cbSuppliesKind);
lbPriceSupply.Enabled := (IDSuppliesKind > 0) or (GUIDSuppliesKind <> '');
cePriceSupply.Enabled := (IDSuppliesKind > 0) or (GUIDSuppliesKind <> '');
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
{Function TF_AddComponent.GetIDFromComboBox: Integer;
var Item: Integer;
ID_NetType: TObject;
begin
Result := 0;
Item := ComboBox_NetType.ItemIndex;
ID_NetType := ComboBox_NetType.Properties.Items.Objects[item];
Result := (ID_NetType as TID).ID;
Item := Result;
end;
}
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD> #####
function TF_AddComponent.PriceWithNDS(APrice, ANDS: Double): Double;
begin
Result := Round3(APrice + APrice * (ANDS / 100));
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> #####
function TF_AddComponent.PriceWithoutNDS(APrice, ANDS: Double): Double;
begin
Result := APrice - Round3(APrice * (ANDS / (100 + ANDS)));
end;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD>
procedure TF_AddComponent.ShowNDSPrice;
var
Price1: Double;
Price2: Double;
begin
//if RadioGroup_HasNds.ItemIndex = 1 then // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
Price1 := 0;
Price2 := 0;
//if StrCanBeFloat(CurrencyEdit_Price1.Text) then
Price1 := StrToFloatU(CorrectStrToFloat(CurrencyEdit_Price1.Text));
//if StrCanBeFloat(CurrencyEdit_Price2.Text) then
Price2 := StrToFloatU(CorrectStrToFloat(CurrencyEdit_Price2.Text));
if not CheckBox_HasNds.Checked then
begin
Label_Nds1.Visible := true;
Label_Nds2.Visible := true;
CurrencyEdit_NDS1.Visible := true;
CurrencyEdit_NDS2.Visible := true;
CurrencyEdit_NDS1.Value := PriceWithNDS(Price1, TF_Main(GForm).GNDS);
CurrencyEdit_NDS2.Value := PriceWithNDS(Price2, TF_Main(GForm).GNDS);
end
else
begin
Label_Nds1.Visible := false;
Label_Nds2.Visible := false;
CurrencyEdit_NDS1.Visible := false;
CurrencyEdit_NDS2.Visible := false;
end;
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> / <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) #####
procedure TF_AddComponent.EnableMakeEditCompon(AEnable: Boolean);
begin
TF_Main(GForm).Act_MakeComponent.Enabled := AEnable;
TF_Main(GForm).Act_EditComponent.Enabled := AEnable;
TF_Main(GForm).Act_DelComponent.Enabled := AEnable;
end;
// ######################## <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> ######################################
procedure TF_AddComponent.FormCreate(Sender: TObject);
var
DBMode: TDBKind;
begin
DBMode := TF_Main(GForm).GDBMode;
case DBMode of
bkNormBase:
pcApplyForAll.ActivePage := tsApplyInNB;
bkProjectManager:
begin
pcApplyForAll.ActivePage := tsApplyInPM;
cbComponentIsTemplate.Visible := false;
cbImportFromTemplate.Visible := false;
end;
end;
cbImportFromTemplate.Checked := true;
FComponBeforeEdit := TSCSComponent.Create(GForm);
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" <20><><EFBFBD><EFBFBD><EFBFBD> ProjectManager
//*** <20><> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> User-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> isLine
{if (GForm as TF_Main).GDBMode = bkProjectManager then
begin
Grid.PopupMenu := nil;
ToolBar_OtherData.Visible := false;
ActList := TList.Create;
ActList.Add(Act_Add);
ActList.Add(Act_AddComplectEd);
ActList.Add(Act_AddInterface);
ActList.Add(Act_AddProperty);
ActList.Add(Act_Edit);
ActList.Add(Act_EditComplectEd);
ActList.Add(Act_EditInterface);
ActList.Add(Act_EditProperty);
ActList.Add(Act_Del);
ActList.Add(Act_DelComplectEd);
ActList.Add(Act_DelInterface);
ActList.Add(Act_DelProperty);
for i := 0 to ActList.Count - 1 do
begin
TAction(ActList.Items[i]).Enabled := false;
TAction(ActList.Items[i]).Visible := false;
end;
ActList.Free;
end; }
InterfFields := TStringList.Create;
InterfFields.Add('ID');
InterfFields.Add('ID_COMPONENT');
InterfFields.Add('ID_INTERFACE');
InterfFields.Add('NAME');
InterfFields.Add('TYPEI');
InterfFields.Add('Kind');
InterfFields.Add('IsPort');
InterfFields.Add('GENDER');
InterfFields.Add('IsBusy');
InterfFields.Add('Multiple');
InterfFields.Add('isNative');
InterfFields.Add('ValueI');
InterfFields.Add('SORT_ID');
InterfFields.Add(fnNpp);
InterfFields.Add('Num_Pair');
InterfFields.Add('Color');
InterfFields.Add('id_adverse');
InterfFields.Add('Side');
InterfFields.Add(fnNotice);
if TF_Main(GForm).GDBMode = bkProjectManager then
InterfFields.Add('CoordZ');
PortFields := TStringList.Create;
PortFields.Add('ID');
PortFields.Add('ID_COMPONENT');
PortFields.Add('ID_INTERFACE');
PortFields.Add(fnNpp);
PortFields.Add('NAME');
PortFields.Add(fnNameConnectCable);
PortFields.Add('TYPEI');
PortFields.Add('Kind');
PortFields.Add('IsPort');
PortFields.Add('IsUser_Port');
PortFields.Add('Npp_Port');
PortFields.Add('GENDER');
PortFields.Add('IsBusy');
PortFields.Add('Multiple');
PortFields.Add('isNative');
PortFields.Add('Color');
PortFields.Add(fnNotice);
if TF_Main(GForm).GDBMode = bkProjectManager then
begin
PortFields.Add('ID_CONNECTED');
PortFields.Add('NAME_CONNECTED');
PortFields.Add('CoordZ');
end;
ComponIconsFields := TStringList.Create;
ComponIconsFields.Add('ID');
ComponIconsFields.Add('ID_OBJECT_ICON');
//ComponIconsFields.Add('Name');
//ComponIconsFields.Add('ICON');
PropertFields := TStringList.Create;
PropertFields.Add(fnIsStandart);
PropertFields.Add(fnIsDefault);
PropertFields.Add(fnID);
PropertFields.Add(fnIDMaster);
PropertFields.Add(fnIDProperty);
PropertFields.Add(fnIDDataType);
PropertFields.Add(fnNAME);
PropertFields.Add(fnSYSNAME);
PropertFields.Add(fnPVALUE);
PropertFields.Add(fnIZM);
PropertFields.Add(fnTakeIntoConnect);
PropertFields.Add(fnTakeIntoJoin);
PropertFields.Add(fnIsCrossControl);
PropertFields.Add(fnIDCrossProperty);
PropertFields.Add(fnDescription);
CableCanalConnectorsFields := TStringList.Create;
CableCanalConnectorsFields.Add(fnID);
CableCanalConnectorsFields.Add(fnIDComponent);
CableCanalConnectorsFields.Add(fnIDNBConnector);
CableCanalConnectorsFields.Add(fnGuidNBConnector);
CableCanalConnectorsFields.Add(fnConnectorType);
CableCanalConnectorsFields.Add(fnName);
ComplectsFields := TStringList.Create;
ComplectsFields.Add('ID');
ComplectsFields.Add('ID_COMPONENT');
ComplectsFields.Add('ID_CHILD');
ComplectsFields.Add('NAME');
ComplectsFields.Add('KOLVO');
ComplectsFields.Add('PRICE1');
ComplectsFields.Add('COST1');
ComplectsFields.Add('PRICE2');
ComplectsFields.Add('COST2');
IOfI_RelFields := TStringList.Create;
GDeletedInterfRel := TIntList.Create;
GDeletedPort := TIntList.Create;
GDeletedPortInterfRels := TIntList.Create;
//GDeletedComponIcons := TStringList.Create;
GDeletedPropRel := TIntList.Create;
GDeletedComplects := TIntList.Create;
GDeletedIOfIRel := TIntList.Create;
GDeletedCableCanalConnectors := TIntList.Create;
GDeletedCrossConnections := TIntList.Create;
GDeletedNormID := TIntList.Create;
GDeletedResourceID := TIntList.Create;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
//FillComboNetType(0);
///FillComboBox(ComboBox_NetType, F_NormBase.DM.DataSet_NET_TYPE, 'ID', 'Name');
GColors := TStringList.Create;
GColors.Add('dssfsfs');
GT_Complects.DataController.DataSource := TF_Main(GForm).DM.DataSource_MT_ComplectsEd;
GT_Property.DataController.DataSource := TF_Main(GForm).DM.DataSource_MT_PropertyEd;
GT_Interface.DataController.DataSource := TF_Main(GForm).DM.DataSource_MT_INTERFACERelEd;
GT_PORT.DataController.DataSource := TF_Main(GForm).DM.DataSource_MT_PortEd;
GT_CableCanalConnectors.DataController.DataSource := TF_Main(GForm).DM.DSrc_MT_CableCanalConnectorsEd;
GT_CrossConnection.DataController.DataSource := TF_Main(GForm).DM.dsrcMTCrossConnectionEd;
GT_Norms.DataController.DataSource := TF_Main(GForm).DM.DataSource_MT_NormsEd;
GT_Resources.DataController.DataSource := TF_Main(GForm).DM.DataSource_MT_ResourcesRelEd;
GT_InterfaceCoordZ.Visible := false;
if TF_Main(GForm).GDBMode = bkNormBase then
begin
//Label_NameMark.Visible := false;
//Edit_NameMark.Visible := false;
//CheckBox_IsUserMark.Visible := false;
gbNameMark.Visible := false;
//GT_InterfaceCoordZ.Visible := false;
GT_InterfaceNpp.Visible := false;
GT_InterfaceKolvoBusy.Visible := false;
GT_PORTNpp.Visible := false;
GT_PORTNppPort.Visible := false;
GT_PORTNameConnected.Visible := false;
GT_PORTNameConnectCable.Visible := false;
GT_PortKolvoBusy.Visible := false;
end;
TcxCurrencyEditProperties(GT_InterfaceValueI.Properties).DisplayFormat := GetDisplayFormatForFloat;
TcxCurrencyEditProperties(GT_ComplectsPrice1.Properties).DisplayFormat := GetDisplayFormatForFloat;
TcxCurrencyEditProperties(GT_ComplectsCost1.Properties).DisplayFormat := GetDisplayFormatForFloat;
TcxCurrencyEditProperties(GT_ComplectsPrice2.Properties).DisplayFormat := GetDisplayFormatForFloat;
TcxCurrencyEditProperties(GT_ComplectsCost2.Properties).DisplayFormat := GetDisplayFormatForFloat;
//01.11.2013
GT_NORMSLaborTime.Caption := TF_Main(GForm).GT_NormsResourcesLaborTime.Caption;
GT_NORMSLaborTime.DataBinding.FieldName := TF_Main(GForm).GT_NormsResourcesLaborTime.DataBinding.FieldName;
GT_NORMSPricePerTime.Caption := TF_Main(GForm).GT_NormsResourcesPricePerTime.Caption;
GT_NORMSPricePerTime.DataBinding.FieldName := TF_Main(GForm).GT_NormsResourcesPricePerTime.DataBinding.FieldName;
TcxCurrencyEditProperties(GT_NORMSPricePerTime.Properties).DisplayFormat := GetDisplayFormatForFloat;
TcxCurrencyEditProperties(GT_NORMSPricePerTime.Properties).DecimalPlaces := FloatPrecision;
TcxCurrencyEditProperties(GT_NORMSCost.Properties).DisplayFormat := GetDisplayFormatForFloat;
TcxCurrencyEditProperties(GT_NORMSCost.Properties).DecimalPlaces := FloatPrecision;
TcxCurrencyEditProperties(GT_NORMSKolvo.Properties).DisplayFormat := GetDisplayFormatForFloat;
TcxCurrencyEditProperties(GT_NORMSKolvo.Properties).DecimalPlaces := FloatPrecision;
GT_NORMSExpenseForLength.DataBinding.FieldName := fnExpenseForLength;
TcxCurrencyEditProperties(GT_NORMSExpenseForLength.Properties).DisplayFormat := GetDisplayFormatForFloat;
TcxCurrencyEditProperties(GT_NORMSExpenseForLength.Properties).DecimalPlaces := FloatPrecision;
GT_NORMSCountForPoint.Caption := cNameCountForPoint;
GT_NORMSCountForPoint.DataBinding.FieldName := fnCountForPoint;
TcxCurrencyEditProperties(GT_NORMSCountForPoint.Properties).DisplayFormat := GetDisplayFormatForFloat;
TcxCurrencyEditProperties(GT_NORMSCountForPoint.Properties).DecimalPlaces := FloatPrecision;
GT_NORMSStepOfPoint.DataBinding.FieldName := fnStepOfPoint;
TcxCurrencyEditProperties(GT_NORMSStepOfPoint.Properties).DisplayFormat := GetDisplayFormatForFloat;
TcxCurrencyEditProperties(GT_NORMSStepOfPoint.Properties).DecimalPlaces := FloatPrecision;
GT_NORMSTotalKolvo.Caption := cNameTotalkolvo;
GT_NORMSTotalKolvo.DataBinding.FieldName := fnTotalKolvo;
tsWorkingAndResources.Caption := cNameAccessoryResourceNorm;
Act_AddResourceToMTNorm.Hint := Act_AddResourceToMTNorm.Caption;
Act_AddResourceComponToMTNorm.Caption := cMain_Msg168;
Act_AddResourceComponToMTNorm.Hint := Act_AddResourceComponToMTNorm.Caption;
//TcxCurrencyEditProperties(GT_NORMSExpenseForLength.Properties).
//TcxLookupComboBoxProperties(GT_NORMSExpenseForLength.Properties).
EditRepository_NormCurrency_NormCost.Properties.DisplayFormat := GetDisplayFormatForFloat;
EditRepository_NormCurrency_NormCost.Properties.DecimalPlaces := FloatPrecision;
EditRepository_NormCurrency_NormTotalCost.Properties.DisplayFormat := GetDisplayFormatForFloat;
EditRepository_NormCurrency_NormTotalCost.Properties.DecimalPlaces := FloatPrecision;
EditRepository_NormCurrency_ResourceCost.Properties.DisplayFormat := GetDisplayFormatForFloat;
EditRepository_NormCurrency_ResourceCost.Properties.DecimalPlaces := FloatPrecision;
EditRepository_NormCurrency_ResourcePrice.Properties.DisplayFormat := GetDisplayFormatForFloat;
EditRepository_NormCurrency_ResourcePrice.Properties.DecimalPlaces := FloatPrecision;
CurrencyEdit_Price1.Properties.DisplayFormat := GetDisplayFormatForFloat;
CurrencyEdit_Price1.Properties.DecimalPlaces := FloatPrecision;
CurrencyEdit_Price2.Properties.DisplayFormat := GetDisplayFormatForFloat;
CurrencyEdit_Price2.Properties.DecimalPlaces := FloatPrecision;
CurrencyEdit_NDS1.Properties.DisplayFormat := GetDisplayFormatForFloat;
CurrencyEdit_NDS1.Properties.DecimalPlaces := FloatPrecision;
CurrencyEdit_NDS2.Properties.DisplayFormat := GetDisplayFormatForFloat;
CurrencyEdit_NDS2.Properties.DecimalPlaces := FloatPrecision;
CurrencyEdit_ResourcesCost.Properties.DisplayFormat := GetDisplayFormatForFloat;
CurrencyEdit_ResourcesCost.Properties.DecimalPlaces := FloatPrecision;
cePriceSupply.Properties.DisplayFormat := GetDisplayFormatForFloat;
cePriceSupply.Properties.DecimalPlaces := FloatPrecision;
FApplyCheckBoxes := TObjectList.Create(False);
FApplyCheckBoxesPageIndex := TIntList.Create;
FApplyCheckBoxesBorderColor := clRed;
FApplyCheckBoxesBorderStyle := ebsSingle;
AddApplyCheckBoxToList(cbApplyName, 0);
AddApplyCheckBoxToList(cbApplyNameShort, 0);
AddApplyCheckBoxToList(cbApplyArticulProducer, 0);
AddApplyCheckBoxToList(cbApplyArticulDistributor, 0);
AddApplyCheckBoxToList(cbApplyIzm, 0);
AddApplyCheckBoxToList(cbApplyUserLength, 0);
AddApplyCheckBoxToList(cbApplyComponentType, 0);
AddApplyCheckBoxToList(cbApplyNetType, 0);
AddApplyCheckBoxToList(cbApplyProducer, 0);
AddApplyCheckBoxToList(cbApplyIsMarkInCaptions, 0);
AddApplyCheckBoxToList(cbApplyNotice, 0);
AddApplyCheckBoxToList(cbApplyCanComplect, 0);
AddApplyCheckBoxToList(cbApplyPrice, 0);
AddApplyCheckBoxToList(cbApplyComponData, 0);
AddApplyCheckBoxToList(cbApplyImage, 1);
AddApplyCheckBoxToList(cbApplySpecification, 1);
AddApplyCheckBoxToList(cbApplyComponIcon, 1);
AddApplyCheckBoxToList(cbApplySymbol, 1);
AddApplyCheckBoxToList(cbApplyDescription, 1);
{$IF Defined(NORMSCS_PE) or Defined(SCS_SPA)}
cbApplyNorms.Visible := false;
{$ELSE}
AddApplyCheckBoxToList(cbApplyNorms, 2);
{$IFEND}
AddApplyCheckBoxToList(cbApplyResources, 2);
FApplyControls := TObjectList.Create(False);
FApplyControls.Add(Edit_Name);
FApplyControls.Add(Edit_NameShort);
FApplyControls.Add(Edit_ArticulProducer);
FApplyControls.Add(Edit_ArticulDistributor);
FApplyControls.Add(Edit_Izm);
FApplyControls.Add(SpinEdit_UserLength);
FApplyControls.Add(ComboBox_ComponentType);
FApplyControls.Add(ComboBox_NetType);
FApplyControls.Add(ComboBox_Producer);
FApplyControls.Add(cbIsMarkInCaptions);
FApplyControls.Add(Edit_Notice);
FApplyControls.Add(cbCanComplect);
FApplyControls.Add(gbPrice);
FApplyControls.Add(Grid);
FApplyControls.Add(Image);
FApplyControls.Add(cbSpecification);
FApplyControls.Add(Image_CompIcons);
FApplyControls.Add(Image_Symbol);
FApplyControls.Add(meDescription);
//FApplyControls.Add(gbNorms);
{$IF Defined(NORMSCS_PE) or Defined(SCS_SPA)}
//
{$ELSE}
FApplyControls.Add(gbNorms);
{$IFEND}
FApplyControls.Add(gbNorms); //FApplyControls.Add(GroupBox_ResourcesRel);
FApplyComponElementsVisible := TIntList.Create;
FApplyComponElementsVisible.Add(BoolToInt(DBMode = bkNormBase)); //liPort = 0
FApplyComponElementsVisible.Add(BoolToInt(DBMode = bkNormBase)); //liInterface = 1
FApplyComponElementsVisible.Add(BoolToInt(DBMode = bkNormBase)); //liProperty = 2
FApplyComponElementsVisible.Add(biFalse); //liComplects = 3
FApplyComponElementsVisible.Add(BoolToInt(DBMode = bkNormBase)); //liCableCanalConnectors = 4
FApplyComponElementsVisible.Add(biFalse); //liCrossConnections = 5;
FApplyComponElementsChecked := TIntList.Create;
FApplyComponElementsChecked.Add(biTrue); //liPort = 0
FApplyComponElementsChecked.Add(biTrue); //liInterface = 1
FApplyComponElementsChecked.Add(biTrue); //liProperty = 2
FApplyComponElementsChecked.Add(biFalse); //liComplects = 3
FApplyComponElementsChecked.Add(biTrue); //liCableCanalConnectors = 4
FApplyComponElementsChecked.Add(biFalse); //liCrossConnections = 5;
{//10.08.2012
VisibleApplyCheckBoxes(false, true);
cbApplyName.Checked := false;
cbApplyNameShort.Checked := false;
cbApplyArticulProducer.Checked := false;
cbApplyArticulDistributor.Checked := false;
cbApplyPrice.Checked := false;
cbApplyComponIcon.Checked := false;
pnApplyNormsResources.Visible := false; }
VisibleApplyCheckBoxes(false, false);
pcMain.ActivePage := tsCommon;
gbOkCancelResize(gbOkCancel);
//cePriceSupply.Properties
//cePriceSupply.ValidateEdit()
FIsLoadingForm := false;
Edit_Name.Properties.OnChange := OnControlChange;
Edit_Izm.Properties.OnChange := OnControlChange;
Edit_NameShort.Properties.OnChange := OnControlChange;
Edit_NameMark.Properties.OnChange := OnControlChange;
rbMarkByDefault.OnClick := OnControlChange;
ComboBox_NetType.Properties.OnChange := OnControlChange;
//RadioGroup_CanComplect.Properties.OnChange := OnControlChange;
ComboBox_Producer.Properties.OnChange := OnControlChange;
cePriceSupply.Properties.OnChange := OnControlChange;
Edit_Notice.Properties.OnChange := OnControlChange;
// Tolik 25//11/2019 --
seIndex.Value := 0;
//
cbNotUseUgoBounds.Checked := False; // Tolik 09/03/2021 --
{$IF Not Defined(FINAL_SCS)}
btImportComponByArtProducer.Visible := true;
{$IFEND}
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.FormDestroy(Sender: TObject);
begin
FreeAndNil(InterfFields);
FreeAndNil(PropertFields);
FreeAndNil(ComplectsFields);
FreeAndNil(IOfI_RelFields);
FreeAndNil(ComponIconsFields);
FreeAndNil(GDeletedInterfRel);
FreeAndNil(GDeletedPort);
FreeAndNil(GDeletedPortInterfRels);
//GDeletedComponIcons.Clear;
//GDeletedComponIcons.Free;
FreeAndNil(GDeletedPropRel);
FreeAndNil(GDeletedComplects);
FreeAndNil(GDeletedIOfIRel);
FreeAndNil(GDeletedCableCanalConnectors);
FreeAndNil(GDeletedCrossConnections);
FreeAndNil(GDeletedNormID);
FreeAndNil(GDeletedResourceID);
ClearComboBox(ComboBox_ComponentType);
ClearComboBox(ComboBox_NetType);
ClearComboBox(ComboBox_Producer);
ClearComboBox(cbSpecification);
FApplyCheckBoxes.Free;
FApplyCheckBoxesPageIndex.Free;
FApplyControls.Free;
FApplyComponElementsVisible.Free;
FApplyComponElementsChecked.Free;
FreeAndNil(FComponBeforeEdit);
end;
procedure TF_AddComponent.FormClose(Sender: TObject;
var Action: TCloseAction);
//var SavedID: Integer;
begin
{ with TF_Main(GForm).F_CanDelete do
ListView_NotDel.OnChange := ListView_NotDelChange; }
{with TF_Main(GForm).DM do
begin
SavedID := pFIBDataSet1.FN('ID').AsInteger;
SelectInterfaces;
SearchRecord(pFIBDataSet1, 'ID', SavedID);
SavedID := DataSet_COMP_PROP_RELATION.FN('ID').AsInteger;
SelectComponProperty;
SearchRecord(DataSet_COMP_PROP_RELATION, 'ID', SavedID);
MemTable_InterfaceRelEd.Active := false;
MemTable_InterfOfInterf_RelEd.Active := false;
MemTable_PropertyEd.Active := false;
MemTable_ComplectsEd.Active := false;
F_NormBase.DM.MemTable_ComponentIcons.Active := false;
end; }
try
TF_Main(GForm).F_AnswerToQuast.Close;
except
end;
end;
// ######################## <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> ######################################
procedure TF_AddComponent.FormShow(Sender: TObject);
//var //i: Integer;
//Ratio: Double;
//ID_NetType: TObject;
//Stream: TStream;
//CurrTreeNode : TTreeNode;
//ProjManCompon: TSCSComponent;
var Prop: PProperty; // Tolik 09/03/2021 --
SCSCompon: TSCSComponent;
begin
try
//Tolik 21/02/2022 --
GComponGuidNB := '';
//
cbNotUseUgoBounds.Checked := False; // Tolik 09/03/2021 --
try
if GReadOnlyMode then
bitbtn_Ok.Enabled := False;
Screen.Cursor := crHourGlass;
if GL_Interface.Visible then
Grid.ActiveLevel := GL_Interface;
GCompAdded := false;
GChangedPicture := false;
GChangedInterface := false;
GChangedProperty := false;
GChangedComplect := false;
GChangedObjectIcons := false;
GChangedUserLength := false;
GChangedIndex := false;
GChangedNameShort := false;
FChangedComponTypeInCombo := false;
FSpravochnik := nil;
FProjSpravochnik := nil;
FListSpravochnik := nil;
FTraccaLength := 0;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
FTraccaLength := FloatInUOM(1, TF_MAIN(GForm).FUOM, umMetr);
//TF_Main(GForm).F_CanDelete.ListView_NotDel.OnChange := nil;
Label_Price1.Caption := cAddComponent_Msg3 + ' ' + TF_Main(GForm).GLocalCurrencyM.Data.NameBrief;
Label_Price2.Caption := cAddComponent_Msg3 + ' ' + TF_Main(GForm).GLocalCurrencyS.Data.NameBrief;
GisEditingPrice := false;
//lbUserLengthUOM.Caption := GetNameUOM(TF_Main(GForm).FUOM, true);
Label_UserLength.Caption := cAddComponent_Msg16 +', '+GetNameUOM(TF_Main(GForm).FUOM, true);
GT_InterfaceValueI.Caption := cNameFreeCutset +', '+ GetNameUOM(ConvertUOMToMin(TF_Main(GForm).FUOM), true, false)+'2';
GT_NORMSExpenseForLength.Caption := cNameExpenseFor +' '+ IntToStr(1)+GetNameUOM(TF_Main(GForm).FUOM, true);
GT_NORMSStepOfPoint.Caption := TF_Main(GForm).GT_NormsResourcesStepOfPoint.Caption;
GT_NORMSTotalKolvo.Caption := GetCaptionNormsResourcesTotalKolvo(TF_Main(GForm).FUOM, FTraccaLength);
ClearComboBox(ComboBox_ComponentType);
if TF_Main(GForm).GDBMode = bkNormBase then
begin
FSpravochnik := TF_Main(GForm).GSCSBase.NBSpravochnik;
ComboBox_ComponentType.Properties.OnChange := nil;
FillComboBox(ComboBox_ComponentType, F_NormBase, True, tnComponentTypes, fnID, fnName, '', 0);
ComboBox_ComponentType.Properties.OnChange := ComboBox_ComponentTypePropertiesChange;
// Tolik 09/03/2021 --
if F_NormBase.GSCSBase.SCSComponent <> nil then
begin
//Tolik 21/02/2022 -- <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
// <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GComponGuidNB := F_NormBase.GSCSBase.SCSComponent.GuidNB;
//
Prop := F_NormBase.GSCSBase.SCSComponent.GetPropertyBySysName(pnNotUseUgoBounds);
if Prop <> nil then
if Prop.Value = '1' then
cbNotUseUgoBounds.Checked := True;
end;
//FillComboBox(ComboBox_NetType, F_NormBase, false, tnNetType, fnID, fnName, '', 0);
//FillComboBox(ComboBox_Producer, F_NormBase, True, tnProducers, fnID, fnName, '', 0);
end
else if TF_Main(GForm).GDBMode = bkProjectManager then
begin
if TF_Main(GForm).GSCSBase.SCSComponent.ProjectOwner <> nil then
begin
FProjSpravochnik := TF_Main(GForm).GSCSBase.SCSComponent.ProjectOwner.Spravochnik;
if TF_Main(GForm).GSCSBase.SCSComponent.ProjectOwner.GetListBySCSID(TF_Main(GForm).GSCSBase.SCSComponent.ListID) <> nil then
FListSpravochnik := TF_Main(GForm).GSCSBase.SCSComponent.ProjectOwner.GetListBySCSID(TF_Main(GForm).GSCSBase.SCSComponent.ListID).Spravochnik;
FSpravochnik := FProjSpravochnik;
//FProjSpravochnik.LoadNetTypesToStrings(ComboBox_NetType.Properties.Items);
//FProjSpravochnik.LoadProducersToStrings(ComboBox_Producer.Properties.Items, true);
end;
end;
LoadNetTypesToForm;
LoadProducersToForm;
LoadSuppliesKindsToForm;
LoadCompSpecificationToForm;
ZeroMemory(@FCurrComponentType, SizeOf(TComponentType));
GDeletedInterfRel.Clear;
GDeletedPort.Clear;
GDeletedPortInterfRels.Clear;
//GDeletedComponIcons.Clear;
GDeletedPropRel.Clear;
GDeletedComplects.Clear;
GDeletedIOfIRel.Clear;
GDeletedCableCanalConnectors.Clear;
GDeletedCrossConnections.Clear;
GLastPort := 0;
ClearcxImage(Image);
ClearcxImage(Image_CompIcons);
ClearcxImage(Image_Symbol);
CheckBox_ApplyForProject.Checked := false;
CheckBox_ApplyForList.Checked := false;
cbApplyForOnlySelected.Checked := false;
CheckBox_ApplyIncludingMark.Checked := false;
cbIncludingSubFolders.Enabled := false;
cbApplyForFocusedProp.Enabled := false;
cbAutoAddInter.Visible := GUseLiteFunctional;
if cbAutoAddInter.Checked and Not GUseLiteFunctional then
cbAutoAddInter.Checked := False;
cbAutoAddInter.Enabled := false;
cbApplyForCurrentDir.Checked := false;
meDescription.Lines.Clear;
VisibleApplyCheckBoxes(false, false);
GIDComponent := 0;
GIDObjectIcon := 0;
GIDSymbolImage := 0;
ZeroMemory(@FSuppliesKind, SizeOf(TSuppliesKind));
GGUIDObjectIcon := '';
GGUIDSymbolImage := '';
FMakeEdit := GetMakeEditByFormMode(GFormMode);
{$IF Defined(NORMSCS_PE) or Defined(SCS_SPA)}
Act_AddNorm.Visible := true;
{$IFEND}
case GFormMode of
fmMake:
begin
//GIDComponent := 0;
//GIDObjectIcon := 0;
//GIDSymbolImage := 0;
//FIDSuppliesKind := 0;
//GGUIDObjectIcon := '';
//GGUIDSymbolImage := '';
//if GUseLiteFunctional then
// cbImportFromTemplate.Checked := true;
ClearFormGrids;
pcMain.ActivePage := tsCommon;
EnableControl(true);
if Not FIsTemplate then
Caption := cAddComponent_Msg4_1
else
Caption := cAddComponent_Msg4_3;
//Edit_Name.SetFocus;
Edit_Name.Text := '';
Edit_NameShort.Text := '';
seIndex.Value := 0;
//Edit_MarkStr.Text := '';
Edit_Izm.Text := '';
Edit_Notice.Text := '';
Edit_ArticulDistributor.Text := '';
Edit_ArticulProducer.Text := '';
MaskEdit_Cyper.Text := TF_Main(GForm).FNormBase.DM.GenComponentNewCypher; //GenNewComponentCypher;
//RadioGroup_CanComplect.ItemIndex := -1;
cbCanComplect.Checked := true;
CheckBox_HasNds.Checked := true; //RadioGroup_HasNds.ItemIndex := 0;
cbIsMarkInCaptions.Checked := false;
CurrencyEdit_Price1.Value := 0;
CurrencyEdit_Price2.Value := 0;
CurrencyEdit_NDS1.Visible := false;
CurrencyEdit_NDS2.Visible := false;
GID_Currency := TF_Main(GForm).GCurrencyM.ID;
//ComboBox_ComponentType.Properties.OnChange := nil;
//ComboBox_ComponentType.ItemIndex := 0;
//ComboBox_ComponentType.Properties.OnChange := ComboBox_ComponentTypePropertiesChange;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//13.05.2009 ComboBox_ComponentType.SetFocus;
//13.05.2009 ComboBox_ComponentType.DroppedDown := true;
//13.05.2009 //if SendMessage(ComboBox_ComponentType.Handle, CB_GETDROPPEDSTATE, 0, 0) <> 1 then
//13.05.2009 //SendMessage(ComboBox_ComponentType.Handle, CB_SHOWDROPDOWN, 1, 0);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Timer_ChoiceCompType.Enabled := true;
SpinEdit_UserLength.Value := 0;
//SpinEdit_ObjectIconStep.Value := 0;
//ComboBox_Producer.ItemIndex := 0;
//ComboBox_NetType.ItemIndex := 0;
//SelectItemByIDinCombo(ComboBox_NetType, ntComputer);
SetVisibleByIsLine(biFalse);
cbComponentIsTemplate.Checked := false;
FComponBeforeEdit.Clear;
DefineComponCurrencies;
if FIsTemplate then
begin
CurrencyEdit_Price1.Value := 1;
DefineComponSecondPrice(CurrencyEdit_Price1.Value);
//CurrencyEdit_Price2.Value := 0;
end;
end;
fmEdit, fmView, fmDisabled:
//with TF_Main(GForm).GSCSBase.SCSComponent do
begin
if Not FIsTemplate then
Caption := cAddComponent_Msg4_2
else
Caption := cAddComponent_Msg4_4;
GIDComponent := TF_Main(GForm).GSCSBase.SCSComponent.ID;
FComponBeforeEdit.Assign(TF_Main(GForm).GSCSBase.SCSComponent, false, false);
SendComponentToForm(TF_Main(GForm).GSCSBase.SCSComponent, false);
(*
GIDObjectIcon := IDObjectIcon;
GIDSymbolImage := IDSymbol;
if IsLine = biTrue then
if TF_Main(GForm).GDBMode = bkProjectManager then
begin
ProjManCompon := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(ID);
if (ProjManCompon <> nil) and (ProjManCompon.IsLine = biTrue) then
FTraccaLength := ProjManCompon.GetPartLength;
end;
Caption := '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
if Picture <> nil then
try
Picture.Position := 0;
if Picture.Size > 0 then
begin
Stream := TFileStream.Create(ComponPictFileName, fmCreate);
Stream.Position := 0;
Stream.CopyFrom(TF_Main(GForm).GSCSBase.SCSComponent.Picture, 0);
Stream.Position := 0;
FreeAndNil(Stream);
Image.Picture.LoadFromFile(ComponPictFileName);
DeleteFile(ComponPictFileName);
//Image.Picture.Bitmap.LoadFromStream(Stream);
//Stream.Free;
end;
except
on E: Exception do ShowMessage('<27><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>');
end;
if Assigned(Description) then
if Description.Size > 0 then
begin
Description.Position := 0;
meDescription.Lines.LoadFromStream(Description);
end;
Edit_Name.Text := Name;
Edit_NameShort.Text := NameShort;
Edit_NameMark.Text := NameMark;
Edit_MarkStr.Text := MarkStr;
GNameMark := NameMark;
MaskEdit_Cyper.Text := Cypher;
Edit_Izm.Text := Izm;
Edit_Notice.Text := Notice;
Edit_ArticulDistributor.Text := ArticulDistributor;
Edit_ArticulProducer.Text := ArticulProducer;
//CheckBox_IsUserMark.Checked := IntToBool(IsUserMark);
if IsUserMark = biTrue then
rbMarkByDefault.Checked := true
else
rbMarkByTemplate.Checked := true;
//case ISComplect of
// 0: RadioGroup_CanComplect.ItemIndex := 1;
// 1: RadioGroup_CanComplect.ItemIndex := 0;
//end;
cbCanComplect.Checked := IntToBool(ISComplect);
//case HASNDS of
// 0: RadioGroup_HasNds.ItemIndex := 1;
// 1: RadioGroup_HasNds.ItemIndex := 0;
//end;
cePriceSupply.Properties.OnChange := nil;
cePriceSupply.Value := PriceSupply;
cePriceSupply.Properties.OnChange := cePriceSupplyPropertiesChange;
CheckBox_HasNds.Checked := IntToBool(HASNDS);
ComboBox_ComponentType.Properties.OnChange := nil;
LoadComponentType;
case TF_Main(GForm).GDBMode of
bkNormBase:
SelectItemByIDinCombo(ComboBox_ComponentType, ID_ComponentType);
bkProjectManager:
begin
AddItemToCombo(ComboBox_ComponentType, ComponentType.Name, GUIDComponentType, ID_ComponentType,
GUIDComponentType, ID_ComponentType, nil);
SelectItemByGUIDinCombo(ComboBox_ComponentType, GUIDComponentType);
end;
end;
ComboBox_ComponentType.Properties.OnChange := ComboBox_ComponentTypePropertiesChange;
cbSuppliesKind.Properties.OnChange := nil;
SelectItemByIDinCombo(cbSuppliesKind, IDSuppliesKind);
cbSuppliesKind.Properties.OnChange := cbSuppliesKindPropertiesChange;
DefineParamsBySupply(false);
SpinEdit_UserLength.Value := UserLength;
SpinEdit_ObjectIconStep.Value := ObjectIconStep;
SelectItemByIDinCombo(ComboBox_Producer, ID_Producer);
SelectItemByIDinCombo(ComboBox_NetType, IDNetType);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
{ID_NetType := TObject.Create;
for i := 0 to ComboBox_NetType.Properties.Items.Count - 1 do
begin
ID_NetType := ComboBox_NetType.Properties.Items.Objects[i];
if (ID_NetType as TID).ID = IDNetType then
begin
ComboBox_NetType.ItemIndex := i;
ComboBox_NetType.Refresh;
Break;
end;
end;}
//With TF_Main(GForm).DM do
// LoadMT(GID_COMPONENT, tkComponIconsED, ComponIconsFields);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
with TF_Main(GForm).DM do
begin
LoadMT(GIDComponent, tkInterfRelED, InterfFields);
//MemTable_InterfaceRelEd.LoadFromDataSet(MemTable_InterfaceRel, []);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if IsLine = biFalse then
begin
//With TF_Main(GForm).DM do
LoadMT(GIDComponent, tkPortED, PortFields);
LoadMT(GIDComponent, tkPortInterfRelED, nil);
DefineAllPortInterfRelNames;
end;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//With TF_Main(GForm).DM do
LoadMT(GIDComponent, tkPropertyRelED, PropertFields);
//MemTable_PropertyEd.LoadFromDataSet(MemTable_Property, []);
LoadComponIcon(GIDObjectIcon, Image_CompIcons);
LoadComponIcon(GIDSymbolImage, Image_Symbol);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//With TF_Main(GForm).DM do
LoadMT(GIDComponent, tkComplectED, ComplectsFields);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ComponentType.SysName = ctsnCableChannel then
//With TF_Main(GForm).DM do
LoadMT(GIDComponent, tkCableCanalConnectorsED, CableCanalConnectorsFields);
end;
LoadNormsResources;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
ShowNDSPrice;
case HASNDS of
0:
begin // <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> - <20><>
CurrencyEdit_Nds1.Value := Round3(Price);
CurrencyEdit_Nds2.Value := Round3(Price *
(TF_Main(GForm).GCurrencyM.Ratio / TF_Main(GForm).GCurrencyS.Ratio));
CurrencyEdit_Price1.Value := Round3( PriceWithoutNDS( Price, TF_Main(GForm).GNDS));
CurrencyEdit_Price2.Value := Round3( PriceWithoutNDS( Price, TF_Main(GForm).GNDS) *
(TF_Main(GForm).GCurrencyM.Ratio / TF_Main(GForm).GCurrencyS.Ratio));
end;
1:
begin // <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> - <20><><EFBFBD>
CurrencyEdit_Price1.Value := Round3(Price);
CurrencyEdit_Price2.Value := Round3(Price *
(TF_Main(GForm).GCurrencyM.Ratio / TF_Main(GForm).GCurrencyS.Ratio));
end;
end;
if TF_Main(GForm).GDBMode = bkProjectManager then
begin
GLastPort := TF_Main(GForm).DM.GetComponentLastPort(ID);
EnableControl(false);
//Caption := '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
end
else
EnableControl(true);
SetVisibleByIsLine(ComponentType.IsLine); *)
end;
end;
SetGenLastID(tkCableCanalConnectorsED);
SetGenLastID(tkCompPropRelED);
SetGenLastID(tkCrossConnectionED);
SetGenLastID(tkInterfRelED);
SetGenLastID(tkPortInterfRelED);
SetGenLastID(tkNormEd);
SetGenLastID(tkResourceRelEd);
//ComboBox_ComponentTypePropertiesChange(ComboBox_ComponentType);
GWasChanging := false;
if TF_Main(GForm).GDBMode = bkProjectManager then
begin
if GIDComponent > 0 then
begin
SCSCompon := F_ProjMan.GSCSBase.CurrProject.CurrList.GetComponentFromReferences(GIDComponent);
if SCSCompon <> nil then
begin
Prop := SCSCompon.GetPropertyBySysName(pnNotUseUgoBounds);
if Prop <> nil then
if Prop.Value = '1' then
cbNotUseUgoBounds.Checked := True;
end;
SCSCompon := nil;
end;
end;
EnableButtons;
SetControls(nil);
except
on E: Exception do
AddExceptionToLog('TF_AddComponent.FormShow' + E.Message);
end;
finally
Screen.Cursor := crDefault;
end;
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.Button_OpenPictureClick(Sender: TObject);
//Var Stream: TStream;
//Bmp: TBitmap;
begin
if OpenPictureDialog1.Execute then
begin
Image.Picture.LoadFromFile(OpenPictureDialog1.FileName);
{if DBImage.DataSource = nil then
DBImage.DataSource = TF_Main(GForm).DM.DataSource; }
GChangedPicture := True;
GWasChanging := true;
end;
end;
procedure TF_AddComponent.Button_ClearImageClick(Sender: TObject);
begin
ClearcxImage(Image);
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>" #####
procedure TF_AddComponent.CheckBox_HasNdsPropertiesChange(Sender: TObject);
begin
ShowNDSPrice;
DefineSupplyPriceByComponActualPrice;
GWasChanging := true;
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.Button_ChangeNetTypeClick(Sender: TObject);
var
IDNetType: Integer;
GUIDNetType: string;
//Iindex: Integer;
begin
IDNetType := GetIDFromComboBox(ComboBox_NetType);
GUIDNetType := GetGUIDFromComboBox(ComboBox_NetType);
if TF_Main(GForm).GDBMode = bkNormBase then
begin
F_NormBase.F_CaseForm.GIDNotDel := IDNetType;
F_NormBase.F_CaseForm.GIDToLocate := IDNetType;
if (F_NormBase.F_CaseForm.Execute(vkNetType, fmEdit)) then
begin
IDNetType := F_NormBase.DM.DataSet_NET_TYPE.FN(fnID).AsInteger;
FillComboBox(ComboBox_NetType, F_NormBase, false, tnNetType, fnID, fnName, '', IDNetType);
GWasChanging := true;
end
else
FillComboBox(ComboBox_NetType, F_NormBase, false, tnNetType, fnID, fnName, '', IDNetType);
end
else if TF_Main(GForm).GDBMode = bkProjectManager then
begin
if ShowCurrProjectProperties(vkNetType, GUIDNetType) then
if FProjSpravochnik.LastNetType <> nil then
GUIDNetType := FProjSpravochnik.LastNetType.GUID;
//ComboBox_NetType.Properties.OnChange := nil;
//FProjSpravochnik.LoadNetTypesToStrings(ComboBox_NetType.Properties.Items, false);
//ComboBox_NetType.Properties.OnChange := ComboBox_NetTypePropertiesChange;
LoadNetTypesToForm;
SelectItemByGUIDinCombo(ComboBox_NetType, GUIDNetType);
end;
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.Button_ProducerClick(Sender: TObject);
var
ID_Producer: Integer;
GUIDProducer: string;
begin
try
ID_Producer := GetIDFromComboBox(ComboBox_Producer);
GUIDProducer := GetGUIDFromComboBox(ComboBox_Producer);
if TF_Main(GForm).GDBMode = bkNormBase then
begin
//SearchRecord(F_NormBase.DM.DataSet_PRODUCERS, 'ID', ID_Producer);
F_NormBase.F_CaseForm.GIDNotDel := ID_Producer;
F_NormBase.F_CaseForm.GIDToLocate := ID_Producer;
//F_NormBase.F_CaseForm.GViewKind := vkProducers;
//if F_NormBase.F_CaseForm.ShowModal = mrOK then
if F_NormBase.F_CaseForm.Execute(vkProducers, fmEdit) then
begin
ID_Producer := F_NormBase.DM.DataSet_PRODUCERS.FN(fnID).AsInteger;
FillComboBox(ComboBox_Producer, F_NormBase, false, tnProducers, fnID, fnName, '', ID_Producer);
GWasChanging := true;
end
else
FillComboBox(ComboBox_Producer, F_NormBase, false, tnProducers, fnID, fnName, '', ID_Producer);
end
else if TF_Main(GForm).GDBMode = bkProjectManager then
begin
if ShowCurrProjectProperties(vkProducers, GUIDProducer) then
if FProjSpravochnik.LastProducer <> nil then
GUIDProducer := FProjSpravochnik.LastProducer.GUID;
//FProjSpravochnik.LoadProducersToStrings(ComboBox_Producer.Properties.Items, true);
LoadProducersToForm;
SelectItemByGUIDinCombo(ComboBox_Producer, GUIDProducer);
end;
except
on E: Exception do
AddExceptionToLog('TF_AddComponent.Button_ProducerClick' + E.Message);
end;
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.Button_TypeComponentClick(Sender: TObject);
var
ID_TypeComponent: Integer;
begin
try
if TF_Main(GForm).GDBMode = bkNormBase then
begin
ID_TypeComponent := GetIDFromComboBox(ComboBox_ComponentType);
//SearchRecord(F_NormBase.DM.DataSet_COMPONENT_TYPES, 'ID', ID_TypeComponent);
F_NormBase.F_CaseForm.GIDNotDel := ID_TypeComponent;
F_NormBase.F_CaseForm.GIDToLocate := ID_TypeComponent;
//F_NormBase.F_CaseForm.GViewKind := vkComponentType;
//if F_NormBase.F_CaseForm.ShowModal = mrOK then
if F_NormBase.F_CaseForm.Execute(vkComponentType, fmEdit) then
begin
ID_TypeComponent := F_NormBase.DM.DataSet_COMPONENT_TYPES.FN(fnID).AsInteger;
FillComboBox(ComboBox_ComponentType, F_NormBase, false, tnComponentTypes, fnID, fnName, '', ID_TypeComponent);
if ID_TypeComponent <> 0 then
ComboBox_ComponentTypeExit(ComboBox_ComponentType);
GWasChanging := true;
end
else
FillComboBox(ComboBox_ComponentType, F_NormBase, false, tnComponentTypes, fnID, fnName, '', ID_TypeComponent);
end;
except
on E: Exception do
AddExceptionToLog('TF_AddComponent.Button_TypeComponentClick' + E.Message);
end;
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.Button_OpenCompIconsClick(Sender: TObject);
begin
LoadImageFromObjectIcons(GIDObjectIcon, GGUIDObjectIcon, Image_CompIcons);
{DataSetLocateByID(F_NormBase.DM.DataSet_OBJECT_ICONS, GID_OBJECT_ICON);
F_NormBase.F_CaseForm.GIDNotDel := GID_OBJECT_ICON;
F_NormBase.F_CaseForm.GViewKind := vkObjectIcons;
F_NormBase.F_CaseForm.GFormMode := fmEdit;
if F_NormBase.F_CaseForm.ShowModal = mrOK then
begin
GID_OBJECT_ICON := F_NormBase.DM.DataSet_OBJECT_ICONS.FN('ID').AsInteger;
LoadComponIcon(GID_OBJECT_ICON, Image_CompIcons);
GWasChanging := true;
end; }
end;
procedure TF_AddComponent.btOpenSymbolImageClick(Sender: TObject);
var
ComponentType: TComponentType;
DesignParams: TComponDesignWizardParams;
begin
ComponentType := GetComponentType;
if (ComponentType.SysName = ctsnCupBoard) and (Not FIsTemplate) then
begin
DesignParams.IDDesignIcon := GIDSymbolImage;
DesignParams.GUIDDesignIcon := GGUIDSymbolImage;
DesignParams.ObjectSignType := GetSignType;
DesignParams.Height := GetPropertyBySysNameAsFloat(pnHeight);
DesignParams.Width := GetPropertyBySysNameAsFloat(pnWidth);
DesignParams.BottomBound := GetPropertyBySysNameAsFloat(pnBottomBound);
DesignParams.LeftBound := GetPropertyBySysNameAsFloat(pnLeftBound);
DesignParams.RightBound := GetPropertyBySysNameAsFloat(pnRightBound);
DesignParams.TopBound := GetPropertyBySysNameAsFloat(pnTopBound);
if F_ComponDesignWizard.ExecuteWizard(DesignParams, GForm, FSpravochnik) then
begin
GIDSymbolImage := DesignParams.IDDesignIcon;
GGUIDSymbolImage := DesignParams.GUIDDesignIcon;
SetPropertyValueBySysNameAsFloat(pnHeight, DesignParams.Height);
SetPropertyValueBySysNameAsFloat(pnWidth, DesignParams.Width);
SetPropertyValueBySysNameAsFloat(pnBottomBound, DesignParams.BottomBound);
SetPropertyValueBySysNameAsFloat(pnLeftBound, DesignParams.LeftBound);
SetPropertyValueBySysNameAsFloat(pnRightBound, DesignParams.RightBound);
SetPropertyValueBySysNameAsFloat(pnTopBound, DesignParams.TopBound);
LoadComponIcon(GIDSymbolImage, GGUIDSymbolImage, Image_Symbol);
//LoadImageFromObjectIcons(GIDSymbolImage, Image_Symbol);
end;
end
else
LoadImageFromObjectIcons(GIDSymbolImage, GGUIDSymbolImage, Image_Symbol);
end;
procedure TF_AddComponent.Button_ClearComponIconClick(Sender: TObject);
begin
ClearcxImage(Image_CompIcons);
GIDObjectIcon := 0;
GGUIDObjectIcon := '';
end;
procedure TF_AddComponent.btClearSymbolImageClick(Sender: TObject);
begin
ClearcxImage(Image_Symbol);
GIDSymbolImage := 0;
GGUIDSymbolImage := '';
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.ColorEditChange(Sender: TObject);
//var ID_Property: Integer;
begin
{with TF_Main(GForm).DM.MemTable_PropertyEd do
begin
ID_Property := FieldByName('ID_Property').AsInteger;
SearchRecordMT(TF_Main(GForm).DM.MemTable_PropertyEd, 'PValue', 'COLOR');
Edit;
FieldByName('PValue').AsString := IntToStr(ColorEdit.SelectedColor);
Post;
SearchRecordMT(TF_Main(GForm).DM.MemTable_PropertyEd, 'ID_Property', ID_Property);
end; }
GWasChanging := true;
end;
// ############################# <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> OK <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ##############################
// #############################################################################
//
// ##### <20><><EFBFBD><EFBFBD><EFBFBD> OK #####
procedure TF_AddComponent.BitBtn_OKClick(Sender: TObject);
var
i: Integer;
//RecCount: Integer;
CanSave: Boolean;
MessgError: string;
Price: Double;
//PriceCalc: Double;
//OldPrice: Double;
//ObjectID: Integer;
CypherCount: Integer;
IDComponTemplate: Integer;
Stream: TStream;
AllComponents: TSCSComponents;
ComponentsForApply: TSCSComponents;
ComponentType: TComponentType;
ListIDs: TIntList;
ListIDsWithWholeCompon: TIntList;
SCSCompon: TSCSComponent;
PartCompon: TSCSComponent;
ProjComponent: TSCSComponent;
WasChangeCompTypeTemplate: Boolean;
NewIDCompTypeTemplate: Integer;
OldIDCompTypeTemplate: Integer;
NBComponentType: TNBComponentType;
NodeComponTemplate: TTreeNode;
CanApplyCompon: Boolean;
Prop: PProperty;
NBProp: TNBProperty;
//hFile: Cardinal;
{Procedure SavePicture(Blob: TFIBBlobField);
Var Stream: TStream;
begin
if GChangedPicture then
begin
Stream := TMemoryStream.Create;
Image.Picture.Bitmap.SaveToStream(Stream);
Blob.LoadFromStream(Stream);
Stream.Free;
end;
end; }
procedure SaveInterfaces(AIDComponent: Integer; AUpdateMT: Boolean);
begin
with TF_Main(GForm).DM do
SaveMTToDS(AIDComponent, GDeletedInterfRel, tkInterfRelED, AUpdateMT);
end;
procedure SavePorts(AIDComponent: Integer; AUpdateMT: Boolean);
begin
with TF_Main(GForm).DM do
SaveMTToDS(AIDComponent, GDeletedPort, tkPortEd, AUpdateMT);
end;
procedure SaveComponData(AIDComponent: Integer);
var
ComponentType: TComponentType;
Compon: TSCSComponent;
Interfaces: TSCSInterfaces;
Properties: TList;
NewProperties: TList;
PropOldIDs: TIntList;
PropNewIDs: TIntList;
CableCanalConnectors: TList;
CrossConnections: TSCSObjectList;
QueryMode: TQueryMode;
i, j, k: Integer;
Interf: TSCSInterface;
OldInterf: TSCSInterface;
ptrPortInterfRel: PPortInterfRel;
ptrProperty: PProperty;
ptrOldProperty: PProperty;
ptrCableCanalConnector: PCableCanalConnector;
ptrOldCableCanalConnector: PCableCanalConnector;
begin
try
QueryMode := GetQueryModeByGDBMode(TF_Main(GForm).GDBMode);
ComponentType := GetComponentType;
if QueryMode = qmPhisical then
with TF_Main(GForm).DM do
begin
DeleteRecordsByIDList(tnPortInterfaceRelation, GDeletedPortInterfRels, QueryMode);
DeleteRecordsByIDList(tnInterfaceRelation, GDeletedInterfRel, QueryMode);
DeleteRecordsByIDList(tnCompPropRelation, GDeletedPropRel, QueryMode);
DeleteRecordsByIDList(tnCableCanalConnectors, GDeletedCableCanalConnectors, QueryMode);
DeleteRecordsByIDList(tnCrossConnection, GDeletedCrossConnections, QueryMode);
end;
Interfaces := CreateFormInterfaces;
Properties := CreateFormProperties;
CableCanalConnectors := CreateFormCableCanalConnectors;
CrossConnections := CreateFormCrossConnections;
Compon := nil;
if Assigned(ProjComponent) then
begin
Compon := ProjComponent;
//*** <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for i := 0 to GDeletedPortInterfRels.Count - 1 do
for j := 0 to Compon.Interfaces.Count - 1 do
begin
Interf := Compon.Interfaces[j];
for k := 0 to Interf.PortInterfRels.Count - 1 do
begin
ptrPortInterfRel := Interf.PortInterfRels[k];
if ptrPortInterfRel.ID = GDeletedPortInterfRels[i] then
begin
Interf.PortInterfRels[k] := nil;
Interf.PortInterfaces.Remove(ptrPortInterfRel.Interf);
FreeMem(ptrPortInterfRel);
end;
end;
Interf.PortInterfRels.Pack;
end;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for i := 0 to GDeletedInterfRel.Count - 1 do
begin
Interf := Compon.GetInterfaceByID(GDeletedInterfRel[i]);
if Assigned(Interf) then
begin
Compon.Interfaces.Remove(Interf);
FreeAndNil(Interf);
end;
end;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for i := 0 to Interfaces.Count - 1 do
begin
Interf := Interfaces[i];
if Interf.IsNew or Interf.IsModified then
begin
if Interf.IsNew then
begin
Compon.Interfaces.Add(Interf);
Interfaces[i] := nil;
end
else if Interf.IsModified and not (Interf.IsNew) then
begin
OldInterf := Compon.GetInterfaceByID(Interf.ID);
if Assigned(OldInterf) then
begin
OldInterf.AssignOnlyInterface(Interf);
//if OldInterf.IsPort = biTrue then ##ISPORT
begin
OldInterf.PortInterfaces.Clear;
ClearList(OldInterf.PortInterfRels);
OldInterf.AssignPortInterfRel(Interf.PortInterfRels);
end;
end;
end;
end;
end;
Interfaces.Pack;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Compon.SetPortInterfRelInterfaces;
//for i := 0 to Compon.Interfaces.Count - 1 do
//begin
// Interf := Compon.Interfaces[i];
// if Interf.IsPort = biTrue then
// Interf.DefinePortInterfaces;
//end;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for i := 0 to GDeletedPropRel.Count - 1 do
begin
ptrProperty := Compon.GetPropertyByID(GDeletedPropRel[i]);
if ptrProperty <> nil then
begin
Compon.Properties.Remove(ptrProperty);
FreeMem(ptrProperty);
end;
end;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for i := 0 to Properties.Count - 1 do
begin
ptrProperty := Properties[i];
if ptrProperty.IsNew then
begin
Compon.Properties.Add(ptrProperty);
if Compon.IsLine = biTrue then
MakeEditPropertyForWholeComponent(meMake, Compon, ptrProperty);
Properties[i] := nil;
end
else if ptrProperty.IsModified then
begin
ptrOldProperty := Compon.GetPropertyByID(ptrProperty.ID);
if ptrOldProperty <> nil then
ptrOldProperty^ := ptrProperty^;
if Compon.IsLine = biTrue then
MakeEditPropertyForWholeComponent(meEdit, Compon, ptrProperty);
end;
end;
Properties.Pack;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ComponentType.SysName = ctsnCableChannel then
begin
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for i := 0 to GDeletedCableCanalConnectors.Count - 1 do
begin
ptrCableCanalConnector := Compon.GetCableCanalConnectorByID(GDeletedCableCanalConnectors[i]);
if ptrCableCanalConnector <> nil then
begin
Compon.CableCanalConnectors.Remove(ptrCableCanalConnector);
FreeMem(ptrCableCanalConnector);
end;
end;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for i := 0 to CableCanalConnectors.Count - 1 do
begin
ptrCableCanalConnector := CableCanalConnectors[i];
if ptrCableCanalConnector.IsNew then
begin
Compon.CableCanalConnectors.Add(ptrCableCanalConnector);
CableCanalConnectors[i] := nil;
end
else if ptrCableCanalConnector.IsModified then
begin
ptrOldCableCanalConnector := Compon.GetCableCanalConnectorByID(ptrCableCanalConnector.ID);
if ptrOldCableCanalConnector <> nil then
ptrOldCableCanalConnector^ := ptrCableCanalConnector^;
end;
end;
CableCanalConnectors.Pack;
end;
end
else
begin
Compon := TSCSComponent.Create(GForm);
Compon.ID := AIDComponent;
Compon.AssignOnlyComponent(TF_Main(GForm).GSCSBase.SCSComponent);
Compon.Interfaces.Assign(Interfaces);
Compon.AssignProperties(Properties);
if ComponentType.SysName = ctsnCableChannel then
Compon.AssignCableCanalConnectors(CableCanalConnectors);
if ComponentType.SysName = ctsnCupBoard then
Compon.AssignCrossConnections(CrossConnections);
end;
Interfaces.Free;
FreeAndDisposeList(Properties); //16.10.2007 FreeList(Properties);
FreeList(CableCanalConnectors);
FreeAndNil(CrossConnections); //FreeList(CrossConnections);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> ID
NewProperties := TList.Create;
PropOldIDs := TIntList.Create;
PropNewIDs := TIntList.Create;
for i := 0 to Compon.Properties.Count - 1 do
begin
ptrProperty := Compon.Properties[i];
if ptrProperty.IsNew then
begin
NewProperties.Add(ptrProperty);
PropOldIDs.Add(ptrProperty.ID);
end;
end;
Compon.SaveInterfacesByServFields;
Compon.SavePropertiesByServFields(Compon.ID);
if ComponentType.SysName = ctsnCableChannel then
Compon.SaveCableCanalConnectorsByServFields;
if ComponentType.SysName = ctsnCupBoard then
Compon.SaveCrossConnectionsByServFields;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> ID <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for i := 0 to NewProperties.Count - 1 do
PropNewIDs.Add(PProperty(NewProperties[i]).ID);
SetNewCompPropIDsToNormRes(PropOldIDs, PropNewIDs);
FreeAndNil(NewProperties);
FreeAndNil(PropOldIDs);
FreeAndNil(PropNewIDs);
if not Assigned(ProjComponent) then
Compon.Free;
except
on E: Exception do AddExceptionToLogEx('TF_AddComponent.SaveComponData', E.Message);
end;
end;
procedure SaveProperties(AIDComponent: Integer; AUpdateMT: Boolean);
//var
//Compon: TSCSComponent;
//Properties: TList;
begin
with TF_Main(GForm).DM do
SaveMTToDS(AIDComponent, GDeletedPropRel, tkCompPropRelED, AUpdateMT);
{Properties := CreateFormProperties;
Compon := nil;
if Assigned(ProjComponent) then
begin
Compon := ProjComponent;
end
else
Compon := TSCSComponent.Create(GForm);
if Assigned(Compon) then
begin
if Not Assigned(ProjComponent) then
Compon.Free;
end;
FreeList(Properties);}
end;
procedure SaveCableCanalConnectors(AIDComponent: Integer; AUpdateMT: Boolean);
begin
with TF_Main(GForm).DM do
SaveMTToDS(AIDComponent, GDeletedCableCanalConnectors, tkCableCanalConnectorsED, AUpdateMT);
end;
{procedure SaveComponIcons(AIDComponent: Integer; AUpdateMT: Boolean);
begin
with TF_Main(GForm).DM do
SaveMTToDS(AIDComponent, GDeletedComponIcons, tkComponIconsED, AUpdateMT);
end;}
procedure SaveComplects;
//var RecNoComp: Integer;
begin
end;
procedure AddErrorMessg(AErrorMessg: string);
begin
MessgError := MessgError + AErrorMessg;
CanSave := false;
end;
// Tolik
Procedure AddNewPropToCompon(aCompon: TSCSComponent; aProp: TNBProperty; aValue: Double);
var Prop: PProperty;
i: Integer;
val: String;
NBProp: TNBProperty;
begin
if aProp <> nil then
begin
Prop := aCompon.GetPropertyBySysName(aProp.PropertyData.SysName);
if Prop = nil then
begin
if ACompon.GetPropertyBySysName(aProp.PropertyData.SysName) = nil then
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><>
Val := FloatTostr(aValue);
NBProp := F_NormBase.GSCSBase.NBSpravochnik.GetPropertyBySysName(aProp.PropertyData.SysName);
if NBProp <> nil then
begin
ACompon.ProjectOwner.Spravochnik.GetPropertyWithAssign(NBProp.PropertyData.GUID, F_NormBase.GSCSBase.NBSpravochnik);
end;
AddPropertyToComponFromSprBySysName(ACompon, ACompon.ProjectOwner.Spravochnik, aProp.PropertyData.SysName, Val);
end;
end;
end;
end;
//
begin
try
SCSCompon := nil;
AllComponents := nil;
ComponentsForApply := nil;
Stream := nil;
if GFormMode = fmView then
begin
ModalResult := mrCancel;
Exit; ///// EXIT /////
end;
// Tolik 03/07/2017 -- <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> CashedCompon (<28><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
if Assigned(F_ProjMan) then
if TF_Main(F_ProjMan).CashedCompon <> nil then
TF_Main(F_ProjMan).CashedCompon.Clear;
if Assigned(F_NormBase) then
if TF_Main(F_NormBase).CashedCompon <> nil then
TF_Main(F_NormBase).CashedCompon.Clear;
//
// Tolik 05/03/2021 -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> )
if TF_Main(GForm).GDBMode = bkProjectManager then
//SCSCompon := TF_Main(F_ProjMan).GSCSBase.SCSComponent
SCSCompon := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(GIDComponent)
else
SCSCompon := TF_Main(F_NormBase).GSCSBase.SCSComponent;
if SCSCompon <> nil then
begin
//SCSCompon.LoadProperties;
Prop := SCSCompon.GetPropertyBySysName(pnNotUseUgoBounds);
if cbNotUseUgoBounds.Checked then
begin
if Prop = nil then
begin
NBProp := TF_Main(F_NormBase).GSCSBase.NBSpravochnik.GetPropertyBySysName(pnNotUseUgoBounds);
if NBProp <> nil then
begin
{ Prop := SCSCompon.GetPropertyAsNew;
Prop.IsDefault := 0;
Prop.TakeIntoConnect := 0;
prop.TakeIntoJoin := 0;
prop.IsTakeJoinforPoint := 0;
prop.IsCrossControl := 0;
prop.IsForWholeComponent := 1;
Prop.Guid := NBProp.PropertyData.GUID;
Prop.IDDataType := NbProp.PropertyData.IDDataType;
Prop.Name_ := NBProp.PropertyData.Name;
Prop.SysName := NBProp.PropertyData.SysName;
Prop.IDMaster := SCSCompon.ID;
//Prop.IsModified := True;
//Prop.IsNew := True;
Prop.Value := BoolToStr(cbNotUseUgoBounds.Checked, false);
//SCSCompon.SaveProperty(meMake, Prop);
//SCSCompon.SaveProperty(meMake, Prop);
SCSCompon.SaveProperty(meEdit, Prop);
AddPropertyToComponFromSprBySysName
}
if TF_Main(GForm).GDBMode = bkProjectManager then
AddNewPropToCompon(SCSCompon, NBProp, 1)
else
//AddPropertyToComponFromSprBySysName(SCSCompon, TF_Main(F_NormBase).GSCSBase.NBSpravochnik, NBProp.PropertyData.SysName, '1');
AddPropertyToNBCompon(NBProp, '1');
end;
end
else
begin
Prop.Value := '1';
SCSCompon.SaveProperty(meEdit, Prop);
end;
end
else
begin
if Prop <> nil then
Prop.Value := '0';//BoolToStr(cbNotUseUgoBounds.Checked);
SCSCompon.SaveProperty(meEdit, Prop);
end;
end;
SCSCompon := nil;
//
//if GFormMode = fmDisabled then
// Exit;
//if cePriceSupply.Focused then
//begin
// cePriceSupply.Hide;
// DefineParamsBySupply(false);
//end;
ProjComponent := nil;
if TF_Main(GForm).GDBMode = bkProjectmanager then
ProjComponent := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(GIDComponent);
{if CurrencyEdit_Price1.IsFocused then
CurrencyEdit_Price1.ValidateEdit(false);
if CurrencyEdit_Price2.IsFocused then
CurrencyEdit_Price2.ValidateEdit(false);}
ValidateActiveFormControl(Self);
CypherCount := 0;
CanSave := true;
MessgError := cNoDefinedParameters + ':' + #13 + #13;
if Edit_Name.Text = '' then
AddErrorMessg('- ' + cNamingComponent + ';' + #13);
//if GFormMode = fmMake then
if TF_Main(GForm).GDBMode = bkNormBase then
begin
if MaskEdit_Cyper.Text <> FComponBeforeEdit.Cypher then
if not F_NormBase.DM.CheckNBComponentCypher(MaskEdit_Cyper.Text, GIDComponent) then
AddErrorMessg('- ' + cCypher + ' "' + MaskEdit_Cyper.Text + '" ' + cNowExists + ';' + #13);
end;
//if RadioGroup_IsLine.ItemIndex = -1 then
// AddErrorMessg('- <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;' + #13);
{if Edit_ArticulDistributor.Text = '' then
AddErrorMessg('- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;' + #13);
if Edit_ArticulDistributor.Text = '' then
AddErrorMessg('- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;' + #13);}
if ComboBox_ComponentType.Text = '' then
AddErrorMessg('- ' + cComponentType + ';' + #13);
// Tolik 08/06/2021 --
if GetIDFromComboBox(ComboBox_NetType) = 0 then
AddErrorMessg('- ' + cNetType + ';' + #13);
//
//if ComboBox_NetType.Text = '' then
// AddErrorMessg('- ' + cNetType + ';' + #13);
//if ComboBox_Producer.Text = '' then
// AddErrorMessg('- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>;' + #13);
//if RadioGroup_HasNds.ItemIndex = -1 then
// AddErrorMessg('- <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> - <20> <20><><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>;' + #13);
//if RadioGroup_CanComplect.ItemIndex = -1 then
// AddErrorMessg('- <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";' + #13);
//if (RadioGroup_CanComplect.ItemIndex = 0) and
// if cbCanComplect.Visible and cbCanComplect.Checked and
// (TF_Main(GForm).DM.MemTable_InterfaceRelEd.RecordCount = 0) and
// (TF_Main(GForm).DM.MemTable_PortEd.RecordCount = 0) then
// AddErrorMessg('- ' + cbMessage6);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if TF_Main(GForm).GDBMode = bkNormBase then
if GUseLiteFunctional then
begin
if Not CheckRequiredProperties then
begin
ModalResult := mrNone;
Exit; ///// EXIT /////
end;
end
else
if (GFormMode = fmMake) and Not DelRequiredEmptyProps then
begin
ModalResult := mrNone;
Exit; ///// EXIT /////
end;
if CanSave then
begin
ModalResult := mrOk;
if TF_Main(GForm).GDBMode = bkProjectmanager then
begin
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ComponentsForApply := TSCSComponents.Create(false);
if CheckBox_ApplyForProject.Checked then
AllComponents := TF_Main(GForm).GSCSBase.CurrProject.ComponentReferences
else if CheckBox_ApplyForList.Checked and CheckBox_ApplyForList.Enabled then
if Assigned(TF_Main(GForm).GSCSBase.CurrProject.CurrList) then
AllComponents := TF_Main(GForm).GSCSBase.CurrProject.CurrList.ComponentReferences;
if Assigned(AllComponents) and (ProjComponent <> nil) then
for i := 0 to AllComponents.Count - 1 do
begin
SCSCompon := AllComponents[i];
if (SCSCompon.ID <> ProjComponent.ID) and (SCSCompon.GuidNB = ProjComponent.GuidNB) then
begin
CanApplyCompon := true;
if cbApplyForOnlySelected.Checked then
CanApplyCompon := IsSelectedComponFigure(SCSCompon);
if CanApplyCompon then
ComponentsForApply.Add(SCSCompon);
end;
end;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ListIDs := GetVariousListsIDsByCompons(ComponentsForApply);
if ProjComponent <> nil then
if ProjComponent.IsLine = biTrue then
begin
ListIDsWithWholeCompon := GetVariousListsIDsByWholeID(ProjComponent.ProjectOwner, ProjComponent.Whole_ID, ListIDs);
ListIDs.Assign(ListIDsWithWholeCompon, laOr);
FreeAndNil(ListIDsWithWholeCompon);
end;
if ListIDs.IndexOf(ProjComponent.ListID) = -1 then
ListIDs.Insert(0, ProjComponent.ListID);
SaveListsToUndoStack(ListIDs);
FreeAndNil(ListIDs);
end;
end
else
begin
MessageModal(MessgError, Caption, MB_OK or MB_ICONINFORMATION);
ModalResult := mrNone;
Exit; ///// EXIT /////
end;
MessgError := '';
if TF_Main(GForm).DM.MemTable_PortEd.RecordCount > 0 then
if Edit_NameShort.Text = '' then
if MessageModal('- ' + cbMessage1, ApplicationName, MB_ICONQUESTION or MB_YESNO) <> IDYES then
begin
Edit_NameShort.Show;
Edit_NameShort.SetFocus;
ModalResult := mrNone;
Exit; ///// EXIT /////
end;
Inc(GBaseBeginUpdateCount);
Screen.Cursor := crHourGlass;
BeginProgress;
try
//if ProjComponent <> nil then
//begin
// ProjComponent.GUIDComponentType := GetGUIDFromComboBox(ComboBox_ComponentType);
// ProjComponent.LoadComponentType;
// ComponentType := ProjComponent.ComponentType;
//end
//else
// ComponentType := TF_Main(GForm).FNormBase.DM.GetComponentType(GetIDFromComboBox(ComboBox_ComponentType));
ComponentType := GetComponentType;
with TF_Main(GForm).GSCSBase do
begin
//SCSComponent.ClearElements;
if GFormMode = fmMake then
SCSComponent.Clear;
if GFormMode = fmEdit then
SCSComponent.ID := GIDComponent;
SCSComponent.Name := Edit_Name.Text;
SCSComponent.NameShort := Edit_NameShort.Text;
SCSComponent.MarkID := Trunc(seIndex.Value);
SCSComponent.MarkStr := '';//Edit_MarkStr.Text;
SCSComponent.Cypher := MaskEdit_Cyper.Text;
SCSComponent.Izm := Edit_Izm.Text;
SCSComponent.Notice := Edit_Notice.Text;
SCSComponent.ArticulDistributor := Edit_ArticulDistributor.Text;
SCSComponent.ArticulProducer := Edit_ArticulProducer.Text;
//28.08.2013 if ComponentType.IsLine = biFalse then
//28.08.2013 SCSComponent.IsMarkInCaptions := BoolToint(cbIsMarkInCaptions.Checked)
//28.08.2013 else
//28.08.2013 SCSComponent.IsMarkInCaptions := biFalse;
SCSComponent.IsMarkInCaptions := BoolToint(cbIsMarkInCaptions.Checked); //28.08.2013
if SCSComponent.Description = nil then
SCSComponent.Description := TMemoryStream.Create;
SCSComponent.Description.Clear;
SCSComponent.Description.Position := 0;
meDescription.Lines.SaveToStream(SCSComponent.Description);
if SCSComponent.Picture = nil then
SCSComponent.Picture := TMemoryStream.Create;
SCSComponent.Picture.Clear;
SCSComponent.Picture.Position;
{SCSComponent.Picture := TMemoryStream.Create;
SCSComponent.Picture.Position := 0;
Image.Picture.Bitmap.SaveToStream(SCSComponent.Picture);
SCSComponent.Picture.Position := 0;
ShowMessage(IntTOStr(SCSComponent.Picture.Size));}
//hFile := CreateFile(PChar(ComponPictFileName), GENERIC_READ or GENERIC_WRITE, 0, nil, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, 0);
//CloseHandle(hFile);
try
Image.Picture.SaveToFile(ComponPictFileName);
if FileExists(ComponPictFileName) then
begin
Stream := TFileStream.Create(ComponPictFileName, fmOpenReadWrite);
Stream.Position := 0;
SCSComponent.Picture.Position := 0;
SCSComponent.Picture.CopyFrom(Stream, 0);
SCSComponent.Picture.Position := 0;
FreeAndNil(Stream);
DeleteFile(PChar(ComponPictFileName));
end;
except
on E: Exception do
ShowMessage(cAddComponent_Msg5);
end;
SCSComponent.ComponentType := ComponentType;
SCSComponent.IsLine := GetIsLineByComponType(ComponentType);
SCSComponent.ISComplect := BoolToInt(cbCanComplect.Checked); //1 - RadioGroup_CanComplect.ItemIndex;
SCSComponent.UserLength := FloatInUOM(SpinEdit_UserLength.Value, TF_Main(GForm).FUOM, umMetr);
SCSComponent.ObjectIconStep := 0;//SpinEdit_ObjectIconStep.Value;
SCSComponent.HASNDS := BoolToInt(CheckBox_HasNds.Checked); //1- RadioGroup_HasNds.ItemIndex;
Price := 0;
//case RadioGroup_HasNds.ItemIndex of
// 0: Price := CurrencyEdit_Price1.Value;
// 1: Price := PriceWithNDS(CurrencyEdit_Price1.Value, GNDS);
//end;
//CurrencyEdit_Price1.
case CheckBox_HasNds.Checked of
true: Price := CurrencyEdit_Price1.Value;
false: Price := PriceWithNDS(CurrencyEdit_Price1.Value, TF_Main(GForm).GNDS);
end;
if CheckPriceTransformToUOMByCompType(@FCurrComponentType) then
Price := FloatInUOM(Price, umMetr, TF_Main(GForm).FUOM);
case GFormMode of
fmMake:
SCSComponent.PRICE_CALC := Price;
fmEdit:
SCSComponent.PRICE_CALC := SCSComponent.PRICE_CALC - SCSComponent.PRICE + Price;
end;
SCSComponent.Price := Price;
SCSComponent.PriceSupply := cePriceSupply.Value;
SCSComponent.ID_CURRENCY := GID_CURRENCY;
SCSComponent.ID_Producer := GetIDFromComboBox(ComboBox_Producer);
SCSComponent.ID_ComponentType := GetIDFromComboBox(ComboBox_ComponentType);
SCSComponent.IDObjectIcon := GIDObjectIcon;
SCSComponent.IDSymbol := GIDSymbolImage;
SCSComponent.IDNetType := GetIDFromComboBox(ComboBox_NetType);
SCSComponent.IDCompSpecification := GetIDFromComboBox(cbSpecification);
SCSComponent.IDSuppliesKind := GetIDFromComboBox(cbSuppliesKind);
if SCSComponent.IDSuppliesKind < 0 then
SCSComponent.IDSuppliesKind := 0;
SCSComponent.GUIDProducer := GetGUIDFromComboBox(ComboBox_Producer);
SCSComponent.GUIDNetType := GetGUIDFromComboBox(ComboBox_NetType);
SCSComponent.GUIDComponentType := ComponentType.GUID;
SCSComponent.GUIDObjectIcon := GGUIDObjectIcon;
SCSComponent.GUIDSymbol := GGUIDSymbolImage;
SCSComponent.GUIDSuppliesKind := GetGUIDFromComboBox(cbSuppliesKind);
if TF_Main(GForm).GDBMode = bkProjectManager then
begin
SCSComponent.NameMark := Edit_NameMark.Text;
//SCSComponent.IsUserMark := CheckBox_IsUserMark.Checked);
SCSComponent.IsUserMark := BoolToInt(rbMarkByDefault.Checked);
SCSComponent.IsDismount := BoolToInt(cbDismount.Checked);
SCSComponent.IsUseDismounted := BoolToInt(cbUseDismounted.Checked);
end;
if GFormMode = fmMake then
begin
SCSComponent.KolComplect := 0;
SCSComponent.GuidNB := CreateGUID;
SCSComponent.IsTemplate := BoolToInt(FIsTemplate);
GIDComponent := SCSComponent.SaveComponentAsNew(false, false);
SCSComponent.ID := GIDComponent;
if Not FIsTemplate then
TF_Main(GForm).AppendToCatalRel(TF_Main(GForm).GSCSBase.SCSCatalog.ID, GIDComponent)
else
TF_Main(GForm).DM.AppendToTemplateRel(GIDComponent, TF_Main(GForm).FTemplateGrp.FID, biFalse);
//SaveComponIcons(GID_COMPONENT, true);
end
else
begin
SCSComponent.SaveComponent;
if (TF_Main(GForm).GDBMode = bkProjectManager) and (SCSComponent.IsLine = biTrue) then
begin
SCSComponent.LoadWholeComponent(false);
for i := 0 to SCSComponent.WholeComponent.Count - 1 do
if SCSComponent.WholeComponent[i] <> GIDComponent then
begin
PartCompon := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(SCSComponent.WholeComponent[i]);
if Assigned(PartCompon) then
begin
PartCompon.AssignOnlyComponentCommonData(SCSComponent, true);
PartCompon.SaveComponent;
TF_Main(GForm).OnUpdateComponent(FMakeEdit, nil, PartCompon, GChangedIndex, GChangedNameShort);
end;
end;
end;
end;
SaveComponData(GIDComponent);
SaveNormsResources;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if Not FIsTemplate then
if TF_Main(GForm).GDBMode = bkNormBase then
begin
NewIDCompTypeTemplate := 0;
//OldIDCompTypeTemplate := ComponentType.IDComponTemplate;
WasChangeCompTypeTemplate := false;
if cbComponentIsTemplate.Checked and cbComponentIsTemplate.Enabled and cbComponentIsTemplate.Visible then
begin
if ComponentType.IDComponTemplate <> GIDComponent then
begin
WasChangeCompTypeTemplate := true;
NewIDCompTypeTemplate := GIDComponent;
NodeComponTemplate := TF_Main(GForm).FindTreeNodeByDat(ComponentType.IDComponTemplate, [itComponLine, itComponCon]);
TF_Main(GForm).DM.RemoveIDComponTemplateFromComponTypes(GIDComponent);
TF_Main(GForm).DM.UpdateIntTableFieldByID(tnComponentTypes, fnIDComponTemplate, ComponentType.ID, GIDComponent, qmPhisical);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
NBComponentType := NBSpravochnik.GetComponentTypeByGUID(ComponentType.GUID);
if NBComponentType <> nil then
NBComponentType.ComponentType.IDComponTemplate := GIDComponent;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if NodeComponTemplate <> nil then
TF_Main(GForm).SetNodeState(NodeComponTemplate, -1, TF_Main(GForm).GEditKind);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//if FComponBeforeEdit.ComponentType.GUID <> ComponentType.GUID then
//begin
// NBComponentType := NBSpravochnik.GetComponentTypeByGUID(FComponBeforeEdit.ComponentType.GUID);
// if NBComponentType <> nil then
// if NBComponentType.ComponentType.IDComponTemplate = GIDComponent then
// NBComponentType.ComponentType.IDComponTemplate := 0;
//end;
end;
end
else
begin
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
IDComponTemplate := 0;
if (ComponentType.IDComponTemplate > 0) and (ComponentType.IDComponTemplate = GIDComponent) then
IDComponTemplate := ComponentType.ID
else
if (FComponBeforeEdit.ComponentType.IDComponTemplate > 0) and
(FComponBeforeEdit.ComponentType.IDComponTemplate = GIDComponent) then
IDComponTemplate := FComponBeforeEdit.ComponentType.ID;
if IDComponTemplate > 0 then
begin
WasChangeCompTypeTemplate := true;
NewIDCompTypeTemplate := 0;
TF_Main(GForm).DM.UpdateTableField(tnComponentTypes, fnIDComponTemplate, fnID, IDComponTemplate, null, qmPhisical);
NBComponentType := NBSpravochnik.GetComponentTypeObjByID(IDComponTemplate);
if NBComponentType <> nil then
NBComponentType.ComponentType.IDComponTemplate := 0;
end;
end;
if WasChangeCompTypeTemplate then
begin
SCSComponent.ComponentType.IDComponTemplate := NewIDCompTypeTemplate;
//NBComponentType := NBSpravochnik.GetComponentTypeByGUID(ComponentType.GUID);
//if NBComponentType <> nil then
// if (NBComponentType.ComponentType.IDComponTemplate = 0) or
// (NBComponentType.ComponentType.IDComponTemplate = GIDComponent) then
// NBComponentType.ComponentType.IDComponTemplate := NewIDCompTypeTemplate;
//if (SCSComponent.ComponentType.IDComponTemplate = 0) or
// (SCSComponent.ComponentType.IDComponTemplate = GIDComponent) then
// SCSComponent.ComponentType.IDComponTemplate := NewIDCompTypeTemplate;
//if FComponBeforeEdit.ComponentType.GUID <> ComponentType.GUID then
//begin
// NBComponentType := NBSpravochnik.GetComponentTypeByGUID(FComponBeforeEdit.ComponentType.GUID);
// if NBComponentType <> nil then
// if NBComponentType.ComponentType.IDComponTemplate = GIDComponent then
// NBComponentType.ComponentType.IDComponTemplate := 0;
//end;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//NodeComponTemplate := TF_Main(GForm).FindTreeNodeByDat(FComponBeforeEdit.ComponentType.ID, [itComponLine, itComponCon]);
//if NodeComponTemplate <> nil then
// TF_Main(GForm).SetNodeState(NodeComponTemplate, -1, TF_Main(GForm).GEditKind);
end;
end;
if GFormMode = fmEdit then
begin
//SCSComponent.LoadOwnerCatalog(false);
//TF_Main(GForm).F_ChoiceConnectSide.DefineObjectIcon(TSCSCatalog(SCSComponent.OwnerCatalog));
//RefreshAllLists;
if Not FIsTemplate then
begin
if TF_Main(GForm).GDBMode = bkProjectManager then
begin
SCSCompon := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(SCSComponent.ID);
if Assigned(SCSCompon) then
begin
SCSCompon.AssignOnlyComponent(SCSComponent);
//SCSCompon.LoadInterfaces;
//SCSCompon.LoadProperties;
//SCSCompon.NormsResources.LoadResources(true);
//if SCSCompon.ID_ComponentType = ctCableCanal then
// SCSCompon.LoadCableCanalConnectors;
//SCSCompon.RefreshInterfacesJoining;
TF_Main(GForm).OnUpdateComponent(FMakeEdit, FComponBeforeEdit, SCSCompon, GChangedIndex, GChangedNameShort);
SCSComponent.NameMark := SCSCompon.NameMark;
if GChangedUserLength then
SCSCompon.RefreshWholeLength;
end;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{if CheckBox_ApplyForProject.Checked then
AllComponents := TF_Main(GForm).GSCSBase.CurrProject.ComponentReferences
else if CheckBox_ApplyForList.Checked and CheckBox_ApplyForList.Enabled then
if Assigned(TF_Main(GForm).GSCSBase.CurrProject.CurrList) then
AllComponents := TF_Main(GForm).GSCSBase.CurrProject.CurrList.ComponentReferences;
if Assigned(AllComponents) and (ProjComponent <> nil) then}
if ComponentsForApply <> nil then
for i := 0 to ComponentsForApply.Count - 1 do
begin
SCSCompon := ComponentsForApply[i];
if Assigned(SCSCompon) then
if SCSCompon.ID <> ProjComponent.ID then
if SCSCompon.GuidNB = ProjComponent.GuidNB then
begin
if cbApplyName.Checked then
SCSCompon.Name := ProjComponent.Name;
if cbApplyNameShort.Checked then
SCSCompon.NameShort := ProjComponent.NameShort;
if cbApplyArticulProducer.Checked then
SCSCompon.ArticulProducer := ProjComponent.ArticulProducer;
if cbApplyArticulDistributor.Checked then
SCSCompon.ArticulDistributor := ProjComponent.ArticulDistributor;
if cbApplyIzm.Checked then
SCSCompon.Izm := ProjComponent.Izm;
if cbApplyUserLength.Checked then
SCSCompon.UserLength := ProjComponent.UserLength;
if cbApplyComponentType.Checked then
begin
SCSCompon.ID_ComponentType := ProjComponent.ID_ComponentType;
SCSCompon.GUIDComponentType := ProjComponent.GUIDComponentType;
end;
if cbApplyNetType.Checked then
begin
SCSCompon.IDNetType := ProjComponent.IDNetType;
SCSCompon.GUIDNetType := ProjComponent.GUIDNetType;
end;
if cbApplyProducer.Checked then
begin
SCSCompon.ID_Producer := ProjComponent.ID_Producer;
SCSCompon.GUIDProducer := ProjComponent.GUIDProducer;
end;
if cbApplyIsMarkInCaptions.Checked then
SCSCompon.IsMarkInCaptions := ProjComponent.IsMarkInCaptions;
if cbApplyNotice.Checked then
SCSCompon.Notice := ProjComponent.Notice;
if cbApplyCanComplect.Checked then
SCSCompon.ISComplect := ProjComponent.ISComplect;
if cbApplyPrice.Checked then
begin
SCSCompon.IDSuppliesKind := ProjComponent.IDSuppliesKind;
SCSCompon.PriceSupply := ProjComponent.PriceSupply;
SCSCompon.Price_Calc := SCSCompon.Price_Calc - SCSCompon.Price + ProjComponent.Price;
SCSCompon.Price := ProjComponent.Price;
SCSCompon.HasNDS := ProjComponent.HasNDS;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if SCSComponent.IDSuppliesKind > 0 then
//SCSCompon.Izm := TF_Main(GForm).FNormBase.DM.GetSuppliesKindByID(ProjComponent.IDSuppliesKind).Izm;
SCSCompon.Izm := TF_Main(GForm).DM.GetSuppliesKindByID(ProjComponent.IDSuppliesKind,
ProjComponent.GUIDComponentType).Izm;
end;
if cbApplyImage.Checked then
SCSCompon.AssignPicture(ProjComponent.Picture);
if cbApplySpecification.Checked then
SCSCompon.IDCompSpecification := ProjComponent.IDCompSpecification;
if cbApplyComponIcon.Checked then
begin
SCSCompon.IDObjectIcon := ProjComponent.IDObjectIcon;
SCSCompon.GUIDObjectIcon := ProjComponent.GUIDObjectIcon;
end;
if cbApplySymbol.Checked then
begin
SCSCompon.IDSymbol := ProjComponent.IDSymbol;
SCSCompon.GUIDSymbol := ProjComponent.GUIDSymbol;
end;
if cbApplyDescription.Checked then
SCSCompon.AssignDescription(ProjComponent.Description);
//--- <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if cbApplyNorms.Checked then
SCSCompon.NormsResources.AssignNorms(ProjComponent.NormsResources.Norms); //SCSCompon.NormsResources.Assign(ProjComponent.NormsResources);
if cbApplyResources.Checked then
SCSCompon.NormsResources.AssignResources(ProjComponent.NormsResources.Resources);
if CheckBox_ApplyIncludingMark.Checked then
begin
SCSCompon.NameMark := ProjComponent.NameMark;
SCSCompon.IsUserMark := ProjComponent.IsUserMark;
end;
SCSCompon.SaveComponent;
TF_Main(GForm).OnUpdateComponent(FMakeEdit, nil, SCSCompon, GChangedIndex, GChangedNameShort);
//SCSCompon.AssignOnlyComponentCommonData(SCSComponent, CheckBox_ApplyIncludingMark.Checked);
//SCSCompon.SaveComponent;
//TF_Main(GForm).OnUpdateComponent(SCSCompon, GChangedNameShort);
end;
end;
RefreshAllLists;
end
else
TF_Main(GForm).OnUpdateComponent(FMakeEdit, FComponBeforeEdit, SCSComponent, GChangedIndex, GChangedNameShort);
end;
with TF_Main(GForm) do
begin
if GDBMode = bkNormBase then
begin
GSCSBase.SCSComponent.LoadInterfaces;
GSCSBase.SCSComponent.LoadCableCanalConnectors;
end;
DM.SelectInterfaces(Tree_Catalog.Selected);
DM.LocateMTByOtherMT(DM.MemTable_InterfaceRel, DM.MemTable_InterfaceRelEd);
DM.LocateMTByOtherMT(DM.MemTable_Port, DM.MemTable_PortEd);
DM.SelectComponProperty(ProjComponent);
DM.LocateMTByOtherMT(DM.MemTable_Property, DM.MemTable_PropertyEd);
if ComponentType.SysName = ctsnCableChannel then
begin
DM.SelectCableChannelsConnectors(SCSComponent);
DM.LocateMTByOtherMT(DM.mtCableCanalConnectors, DM.MemTable_CableCanalConnectorsEd);
end;
if (GDBMode = bkNormBase) and
(ComponentType.SysName = ctsnCupBoard) then
begin
DM.SelectCrossConnections;
DM.LocateMTByOtherMT(DM.MemTable_CrossConnection, DM.mtCrossConnectionEd);
end;
// <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if GDBMode = bkNormBase then
begin
SCSComponent.NormsResources.LoadNorms(false, true);
SCSComponent.NormsResources.LoadResources(true);
DM.SelectNorms(SCSComponent.NormsResources);
end
else
DM.SelectNorms(ProjComponent.NormsResources);
DM.LocateMTByOtherMT(DM.mtNorms, DM.MemTable_NormsEd);
end;
end;
if Not FIsTemplate then
with TF_Main(GForm) do
if cbApplyForCurrentDir.Checked then
begin
if GDBMode = bkNormBase then
begin
GSCSBase.SCSComponent.LoadComponentByID(GSCSBase.SCSComponent.ID, true);
DM.ApplyComponentForDir(GSCSBase.SCSComponent, GSCSBase.SCSCatalog.ID, cbIncludingSubFolders.Checked);
end;
end;
//<#MemTableClar#>TF_Main(GForm).DM.CorrectInterfaceAdverseRelation(GIDComponent);
//if GChangedUserLength then
// if TF_Main(GForm).GDBMode = bkProjectManager then
// TF_Main(GForm).GSCSBase.SCSComponent.RefreshWholeLength;
//TF_Main(GForm).GSCSBase.SCSComponent.LoadComponentByID(GID_Component, false);
end;
finally
EndProgress;
Screen.Cursor := crDefault;
Dec(GBaseBeginUpdateCount);
end;
if ComponentsForApply <> nil then
FreeAndNil(ComponentsForApply);
except
on E: Exception do
AddExceptionToLog('TF_AddComponent.BitBtn_OKClick: ' + E.Message);
end;
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.BitBtn_CancelClick(Sender: TObject);
begin
if ComboBox_ComponentType.DroppedDown then
ComboBox_ComponentType.DroppedDown := false;
Close;
TF_Main(GForm).DM.MemTable_InterfaceRelEd.Active := false;
TF_Main(GForm).DM.MemTable_PropertyEd.Active := false;
end;
// #############################################################################
// ############################ <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ######################################
//
procedure TF_AddComponent.btCanComplectClick(Sender: TObject);
//var Hint: THintWindowClass;
begin
TF_Main(GForm).F_AnswerToQuast.GCaption := cAddComponent_Msg6_1;
TF_Main(GForm).F_AnswerToQuast.GAnswer := cAddComponent_Msg6_2;
TF_Main(GForm).F_AnswerToQuast.ShowContextHelp(TF_Main(GForm).F_AnswerToQuast.GCaption, TF_Main(GForm).F_AnswerToQuast.GAnswer);
end;
// #############################################################################
// ########################## ActionList_Component #############################
//
// ##### <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.Act_DefaultExecute(Sender: TObject);
procedure ClearMT(AMemTable: TkbmMemTable; ADeletedList: TIntList; AISInterface: Boolean);
begin
if AMemTable.Active = false then
Exit; //// EXIT ////
AMemTable.First;
while not AMemTable.Eof do
begin
if (AMemTable.FieldByName('isNew').AsBoolean = false) and
(not AISInterface or AMemTable.FieldByName(fnIsNative).AsBoolean) then
ADeletedList.Add(AMemTable.FieldByName(fnID).AsInteger);
AMemTable.Next;
end;
AMemTable.Active := false;
AMemTable.Active := true;
end;
begin
EnableControl(true);
if Edit_Name.Text = '' then
Edit_Name.Text := 'Default';
Edit_Name.SelectAll;
Edit_Name.SetFocus;
if Edit_ArticulDistributor.Text = '' then
Edit_ArticulDistributor.Text := cAddComponent_Msg7;
if Edit_ArticulProducer.Text = '' then
Edit_ArticulProducer.Text := cAddComponent_Msg7;
ComboBox_Producer.ItemIndex := 1;
//Image.Clear;
Image.Picture.Bitmap := nil;
Image_CompIcons.Clear;
//RadioGroup_CanComplect.ItemIndex := 1;
cbCanComplect.Checked := true;
CheckBox_HasNds.Checked := true; //RadioGroup_HasNds.ItemIndex := 0;
cbIsMarkInCaptions.Checked := false;
CurrencyEdit_Price1.Value := 0;
CurrencyEdit_Price2.Value := 0;
CurrencyEdit_NDS1.Visible := false;
CurrencyEdit_NDS2.Visible := false;
GID_Currency := TF_Main(GForm).GCurrencyM.ID;
ComboBox_NetType.ItemIndex := 0;
cbSpecification.ItemIndex := 0;
with TF_Main(GForm).DM do
begin
ClearMT(MemTable_InterfaceRelEd, GDeletedInterfRel, true);
ClearMT(MemTable_PropertyEd, GDeletedPropRel, false);
//ClearMT(F_NormBase.DM.MemTable_ComponentIcons, GDeletedComponIcons);
GChangedInterface := true;
GChangedProperty := true;
GChangedObjectIcons := true;
GChangedPicture := true;
end;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ComboBox_ComponentType.Text = '' then
ComboBox_ComponentType.ItemIndex := 1;
ComboBox_ComponentTypePropertiesChange(ComboBox_ComponentType);
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.Act_AddInterfaceExecute(Sender: TObject);
//var FieldsNames: TStringList;
//i: Integer;
//meInterfaceRel: TmeInterfaceRel;
//ComponentType: TComponentType;
begin
AddInterfacePort(biFalse);
{try
try
FieldsNames := nil;
if (GFormMode = fmView) or (GFormMode = fmDisabled) then
Exit;
if ComboBox_ComponentType.Text <> '' then
ComponentType := TF_Main(GForm).FNormBase.DM.GetComponentType(GetIDFromComboBox(ComboBox_ComponentType))
else
ComponentType.IsLine := biFalse;
meInterfaceRel.IsLineCompon := ComponentType.IsLine;
F_NormBase.F_CaseForm.GUseMemTable := TF_Main(GForm).DM.MemTable_InterfaceRelEd;
if TF_Main(GForm).F_AddInterface.GetInterfRel(meInterfaceRel, fmMake) then
begin
meInterfaceRel.NAME := TF_Main(GForm).F_AddInterface.ComboBox_Name.Text;
AddInterfaceToMT(meInterfaceRel);
end;
FieldsNames := TStringList.Create;
FieldsNames.Clear;
FieldsNames.Add('Name');
RefreshFields(TF_Main(GForm).DM.MemTable_InterfaceRelEd, 'INTERFACE', 'ID_Interface', 'ID', FieldsNames);
except
on E: Exception do AddExceptionToLog('TF_AddComponent.Act_AddInterfaceExecute: : '+E.Message);
end;
finally
if FieldsNames <> nil then
FieldsNames.Free;
end; }
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.Act_EditInterfaceExecute(Sender: TObject);
//var FieldsNames: TStringList;
//meInterfaceRel: TmeInterfaceRel;
//EditId: Integer;
//ID_Adverse: Integer;
//NumPair: Integer;
//RecNo: Integer;
//ComponentType: TComponentType;
begin
EditInterfacePort(biFalse);
(*try
try
FieldsNames := nil;
EditID := TF_Main(GForm).DM.MemTable_InterfaceRelEd.FieldByName('ID').AsInteger;
NumPair := TF_Main(GForm).DM.MemTable_InterfaceRelEd.FieldByName('Num_Pair').AsInteger;
RecNo := -1;
if (GFormMode = fmView) or (GFormMode = fmDisabled) then
Exit; ///// EXIT /////
if TF_Main(GForm).DM.MemTable_InterfaceRelEd.FieldByName('isNew').AsBoolean = false then
if isUseInterfRel(GForm, TF_Main(GForm).DM.MemTable_InterfaceRelEd, meEdit) then
Exit; ///// EXIT /////
if TF_Main(GForm).DM.MemTable_InterfaceRelEd.FieldByName('isBusy').AsInteger = biTrue then
begin
MessageModal(Self.Handle, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>', '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', MB_ICONINFORMATION or MB_OK);
Exit; ///// EXIT /////
end;
if ComboBox_ComponentType.Text <> '' then
ComponentType := TF_Main(GForm).FNormBase.DM.GetComponentType(GetIDFromComboBox(ComboBox_ComponentType))
else
ComponentType.IsLine := biFalse;
meInterfaceRel := TF_Main(GForm).DM.GetInterfaceRel(TF_Main(GForm).DM.DataSource_MT_INTERFACERelEd);
meInterfaceRel.IsLineCompon := ComponentType.IsLine;
F_NormBase.F_CaseForm.GUseMemTable := TF_Main(GForm).DM.MemTable_InterfaceRelEd;
if TF_Main(GForm).F_AddInterface.GetInterfRel(meInterfaceRel, fmEdit) then
begin
meInterfaceRel.ID_COMPONENT := TF_Main(GForm).GSCSBase.SCSComponent.ID;
RecNo := TF_Main(GForm).DM.MemTable_InterfaceRelEd.RecNo;
with TF_Main(GForm).DM.MemTable_InterfaceRelEd do
begin
Edit;
FieldByName('Name').AsString := meInterfaceRel.Name;
FieldByName('TypeI').AsInteger := meInterfaceRel.Typei;
FieldByName('Kind').AsInteger := meInterfaceRel.Kind;
FieldByName('Gender').AsInteger := meInterfaceRel.Gender;
FieldByName('Multiple').AsInteger := meInterfaceRel.Multiple;
FieldByName('ID_Interface').AsInteger := meInterfaceRel.ID_INTERFACE;
FieldByName('ValueI').AsFloat := meInterfaceRel.ValueI;
FieldByName('Color').AsFloat := meInterfaceRel.Color;
FieldByName('isModified').AsBoolean := true;
Post;
if meInterfaceRel.ID_Adverse <> 0 then
if SearchRecordMT(TF_Main(GForm).DM.MemTable_InterfaceRelEd, 'id', meInterfaceRel.ID_Adverse) then
begin
Edit;
FieldByName('Name').AsString := meInterfaceRel.Name;
FieldByName('TypeI').AsInteger := meInterfaceRel.Typei;
FieldByName('Kind').AsInteger := meInterfaceRel.Kind;
FieldByName('Gender').AsInteger := meInterfaceRel.Gender;
FieldByName('Multiple').AsInteger := meInterfaceRel.Multiple;
FieldByName('ID_Interface').AsInteger := meInterfaceRel.ID_INTERFACE;
FieldByName('ValueI').AsFloat := meInterfaceRel.ValueI;
FieldByName('Color').AsFloat := meInterfaceRel.Color;
FieldByName('isModified').AsBoolean := true;
Post;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
//SearchRecordMT(TF_Main(GForm).DM.MemTable_InterfaceRelEd, 'id', meInterfaceRel.ID);
end;
GChangedInterface := true;
end;
end;
{TF_Main(GForm).F_AddInterface.GFormMode := fmEdit;
TF_Main(GForm).F_AddInterface.GID_Interface := TF_Main(GForm).DM.MemTable_Interface.FieldByName('ID_Interface').AsInteger;
TF_Main(GForm).F_AddInterface.GKolvo := TF_Main(GForm).DM.MemTable_Interface.FieldByName('Kolvo').AsInteger;
TF_Main(GForm).F_AddInterface.GTypeInterface := TF_Main(GForm).DM.MemTable_Interface.FieldByName('TypeI').AsInteger;
with TF_Main(GForm).DM.MemTable_Interface do
begin
if TF_Main(GForm).F_AddInterface.ShowModal = mrOK then
begin
Edit;
FieldByName('Name').AsString := TF_Main(GForm).F_AddInterface.ComboBox_Name.Text;
FieldByName('TypeI').AsInteger := TF_Main(GForm).F_AddInterface.ComboBox_Type_I.ItemIndex;
FieldByName('Gender').AsInteger := 1 - TF_Main(GForm).F_AddInterface.RadioGroup_Gender.ItemIndex;
FieldByName('ID_Interface').AsInteger := TF_Main(GForm).F_AddInterface.GID_INTERFACE;
FieldByName('Kolvo').AsInteger := TF_Main(GForm).F_AddInterface.SpinEdit_Kolvo.Value;
FieldByName('isModified').AsBoolean := true;
Post;
end;
GChangedInterface := true;
end; }
//GT_Interface.DataController.DataSource := TF_Main(GForm).DM.DataSource_MT_INTERFACE;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FieldsNames := TStringList.Create;
FieldsNames.Clear;
FieldsNames.Add('Name');
RefreshFields(TF_Main(GForm).DM.MemTable_InterfaceRelEd, 'INTERFACE', 'ID_Interface', 'ID', FieldsNames);
except
on E: Exception do AddExceptionToLog('TF_AddComponent.Act_EditInterfaceExecute: : '+E.Message);
end;
finally
if FieldsNames <> nil then
FieldsNames.Free;
if RecNo <> -1 then
begin
TF_Main(GForm).DM.MemTable_InterfaceRelEd.First;
TF_Main(GForm).DM.MemTable_InterfaceRelEd.RecNo := RecNo;
end;
end; *)
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.Act_DelInterfaceExecute(Sender: TObject);
//var InterfName: String;
//DelID: Integer;
//ID_Adverse: Integer;
//NumPair: Integer;
begin
DelInterfacePort(biFalse);
(*try
DelID := TF_Main(GForm).DM.MemTable_InterfaceRelEd.FieldByName('ID').AsInteger;
NumPair := TF_Main(GForm).DM.MemTable_InterfaceRelEd.FieldByName('Num_Pair').AsInteger;
if (GFormMode = fmView) or (GFormMode = fmDisabled) then
Exit; ///// EXIT /////
if TF_Main(GForm).DM.MemTable_InterfaceRelEd.FieldByName('isNew').AsBoolean = false then
if isUseInterfRel(GForm, TF_Main(GForm).DM.MemTable_InterfaceRelEd, meDel) then
Exit; ///// EXIT /////
if TF_Main(GForm).DM.MemTable_InterfaceRelEd.FieldByName('isBusy').AsInteger = biTrue then
begin
MessageModal(Self.Handle, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>', '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', MB_ICONINFORMATION or MB_OK);
Exit; ///// EXIT /////
end;
InterfName := TF_Main(GForm).DM.MemTable_InterfaceRelEd.FieldByName('Name').AsString;
if MessageModal(Self.Handle, PAnsiChar('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "'+ InterfName + '" ?'),
'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', MB_YESNO or MB_ICONQUESTION) = mrYES then
begin
ID_Adverse := TF_Main(GForm).DM.MemTable_InterfaceRelEd.FieldByName('id_Adverse').AsInteger;
NumPair := TF_Main(GForm).DM.MemTable_InterfaceRelEd.FieldByName('Num_Pair').AsInteger;
if TF_Main(GForm).DM.MemTable_InterfaceRelEd.FieldByName('isNew').AsBoolean = false then
GDeletedInterfRel.Add(IntToStr(DelID))
else
GGenLastInterfID := GGenLastInterfID - 1;
TF_Main(GForm).DM.MemTable_InterfaceRelEd.Delete;
if NumPair <> 0 then
with TF_Main(GForm).DM do
begin
MemTable_InterfaceRelEd.Last;
while Not MemTable_InterfaceRelEd.Bof do
begin
if MemTable_InterfaceRelEd.FieldByName('Num_Pair').AsInteger = NumPair then
begin
if MemTable_InterfaceRelEd.FieldByName('isNew').AsBoolean = false then
GDeletedInterfRel.Add(IntToStr(MemTable_InterfaceRelEd.FieldByName('ID').AsInteger))
else
GGenLastInterfID := GGenLastInterfID - 1;
TF_Main(GForm).DM.MemTable_InterfaceRelEd.Delete;
end
else
MemTable_InterfaceRelEd.Prior;
end;
{if SearchRecordMT(TF_Main(GForm).DM.MemTable_InterfaceRelEd, 'id', ID_Adverse) then
begin
if TF_Main(GForm).DM.MemTable_InterfaceRelEd.FieldByName('isNew').AsBoolean = false then
GDeletedInterfRel.Add(IntToStr(ID_Adverse))
else
GGenLastInterfID := GGenLastInterfID - 1;
TF_Main(GForm).DM.MemTable_InterfaceRelEd.Delete;
end; }
end;
GChangedInterface := true;
EnableButtons;
end;
except
on E: Exception do AddExceptionToLog('TF_AddComponent.Act_DelInterfaceExecute: : '+E.Message);
end; *)
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.Act_AddPortExecute(Sender: TObject);
begin
AddInterfacePort(biTrue);
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.Act_EditPortExecute(Sender: TObject);
begin
EditInterfacePort(biTrue);
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.Act_DelPortExecute(Sender: TObject);
begin
DelInterfacePort(biTrue);
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.Act_AddPropertyExecute(Sender: TObject);
//var FieldsNames: TStringList;
//ID_DataType: Integer;
// ComponentType: TComponentType;
begin
AddEditProperty(meMake);
{try
ComponentType := GetComponentType;
FieldsNames := nil;
//F_NormBase.F_CaseForm.GViewKind := vkProperty;
//F_NormBase.F_CaseForm.GFormMode := fmMake;
if ComponentType.IsLine = biTrue then
F_NormBase.F_CaseForm.GItemType := itComponLine
else
F_NormBase.F_CaseForm.GItemType := itComponCon;
F_NormBase.F_CaseForm.GUseMemTable := TF_Main(GForm).DM.MemTable_PropertyEd;
//if F_NormBase.F_CaseForm.ShowModal = mrOk then
if F_NormBase.F_CaseForm.Execute(vkProperty, fmMake) then
with TF_Main(GForm).DM.MemTable_PropertyEd do
begin
with TF_Main(GForm) do
if Not DM.CheckNoRepeatPropertyMT(DM.MemTable_PropertyEd, F_NormBase.DM.DataSet_PROPERTIES.FN('ID').AsInteger, Edit_Name.Text) then
Exit; ///// EXIT /////
last;
Append;
FieldByName('ID').AsInteger := GenNewID(tkCompPropRelED);
FieldByName('Name').AsString := F_NormBase.DM.DataSet_PROPERTIES.FN('Name').AsString;
FieldByName('SysName').AsString := F_NormBase.DM.DataSet_PROPERTIES.FN('SysName').AsString;
FieldByName('ID_PROPERTY').AsInteger := F_NormBase.DM.DataSet_PROPERTIES.FN('ID').AsInteger;
FieldByName('PVALUE').AsString := F_NormBase.F_CaseForm.GValue;
FieldByName('Izm').AsString := F_NormBase.DM.DataSet_PROPERTIES.FN('Izm').AsString;
FieldByName('TAKE_INTO_CONNECT').AsInteger := F_NormBase.F_CaseForm.GTakeIntoConnect;
FieldByName('TAKE_INTO_JOIN').AsInteger := F_NormBase.F_CaseForm.GTakeIntoJoin;
FieldByName('Description').AsString := F_NormBase.DM.DataSet_PROPERTIES.FN('Description').AsString;
FieldByName('IsStandart').AsInteger := F_NormBase.DM.DataSet_PROPERTIES.FN('IsStandart').AsInteger;
FieldByName(fnIsDefault).AsInteger := biFalse;
FieldByName('isNew').AsBoolean := true;
FieldByName('isModified').AsBoolean := false;
Post;
GChangedProperty := true;
EnableButtons;
end;
FieldsNames := TStringList.Create;
try
FieldsNames.Clear;
FieldsNames.Add('Name');
FieldsNames.Add('SysName');
FieldsNames.Add('Name');
FieldsNames.Add('Izm');
FieldsNames.Add('Description');
FieldsNames.Add('ID_Data_Type');
RefreshFields(TF_Main(GForm).DM.MemTable_PropertyEd, 'PROPERTIES', 'ID_Property', 'ID', FieldsNames);
finally
FreeAndNil(FieldsNames);
end;
except
on E: Exception do AddExceptionToLog('TF_AddComponent.Act_AddPropertyExecute: '+E.Message);
end;}
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.Act_EditPropertyExecute(Sender: TObject);
{var FieldsNames: TStringList;
ComponentType: TComponentType;
procedure SendToMT_Prop;
begin
with TF_Main(GForm).DM.MemTable_PropertyEd do
begin
FieldByName('Name').AsString := F_NormBase.DM.DataSet_PROPERTIES.FN('Name').AsString;
FieldByName('SysName').AsString := F_NormBase.DM.DataSet_PROPERTIES.FN('SysName').AsString;
FieldByName('ID_PROPERTY').AsInteger := F_NormBase.DM.DataSet_PROPERTIES.FN('ID').AsInteger;
FieldByName('Izm').AsString := F_NormBase.DM.DataSet_PROPERTIES.FN('Izm').AsString;
FieldByName('Description').AsString := F_NormBase.DM.DataSet_PROPERTIES.FN('Description').AsString;
end;
end;}
begin
AddEditProperty(meEdit);
{try
Exit; //// EXIT /////
ComponentType := GetComponentType;
//GT_Property.DataController.DataSource := nil;
FieldsNames := nil;
//F_NormBase.F_CaseForm.GViewKind := vkProperty;
//F_NormBase.F_CaseForm.GFormMode := fmEdit;
if ComponentType.IsLine = biTrue then
F_NormBase.F_CaseForm.GItemType := itComponLine
else
F_NormBase.F_CaseForm.GItemType := itComponCon;
F_NormBase.F_CaseForm.GIDToLocate := TF_Main(GForm).DM.MemTable_PropertyEd.FieldByName('ID_PROPERTY').AsInteger;
F_NormBase.F_CaseForm.GValue := TF_Main(GForm).DM.MemTable_PropertyEd.FieldByName('PValue').AsString;
F_NormBase.F_CaseForm.GTakeIntoConnect := TF_Main(GForm).DM.MemTable_PropertyEd.FieldByName('TAKE_INTO_CONNECT').AsInteger;
F_NormBase.F_CaseForm.GTakeIntoJoin := TF_Main(GForm).DM.MemTable_PropertyEd.FieldByName('TAKE_INTO_JOIN').AsInteger;
F_NormBase.F_CaseForm.GUseMemTable := TF_Main(GForm).DM.MemTable_PropertyEd;
with TF_Main(GForm).DM.MemTable_PropertyEd do
begin
//if F_NormBase.F_CaseForm.ShowModal = mrOK then
if F_NormBase.F_CaseForm.Execute(vkProperty, fmEdit) then
begin
Edit;
SendToMT_Prop;
FieldByName('PVALUE').AsString := F_NormBase.F_CaseForm.GValue;
FieldByName('TAKE_INTO_CONNECT').AsInteger := F_NormBase.F_CaseForm.GTakeIntoConnect;
FieldByName('TAKE_INTO_JOIN').AsInteger := F_NormBase.F_CaseForm.GTakeIntoJoin;
FieldByName('isModified').AsBoolean := true;
Post;
end;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if FieldByName('ID_Data_Type').AsInteger = dtCompStateType then
begin
LoadComponIcon(GIDObjectIcon, Image_CompIcons); //RefreshCompIcons(StrToInt(F_NormBase.F_CaseForm.GValue));
LoadComponIcon(GIDSymbolImage, Image_Symbol);
end;
GChangedProperty := true;
end;
//GT_Property.DataController.DataSource := TF_Main(GForm).DM.DataSource_MT_Property;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
FieldsNames := TStringList.Create;
try
FieldsNames.Clear;
FieldsNames.Add('Name');
FieldsNames.Add('SysName');
FieldsNames.Add('Name');
FieldsNames.Add('Izm');
FieldsNames.Add('Description');
FieldsNames.Add('ID_Data_Type');
RefreshFields(TF_Main(GForm).DM.MemTable_PropertyEd, 'PROPERTIES', 'ID_Property', 'ID', FieldsNames);
finally
FreeAndNil(FieldsNames);
end;
except
on E: Exception do AddExceptionToLog('TF_AddComponent.Act_EditPropertyExecute: '+E.Message);
end;}
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.Act_DelPropertyExecute(Sender: TObject);
var
PropName: string;
PropSysName: string;
DelID: Integer;
CanDel: Boolean;
begin
PropName := TF_Main(GForm).DM.MemTable_PropertyEd.FieldByName(fnName).AsString;
PropSysName := TF_Main(GForm).DM.MemTable_PropertyEd.FieldByName(fnSysName).AsString;
if TF_Main(GForm).DM.MemTable_PropertyEd.FieldByName(fnIsDefault).AsInteger = biTrue then
begin
{$IF Defined (FINAL_SCS)}
MessageModal(cImpossibleDelProperty + ' "' + PropName + '", ' + cSinceItUse + '.', cDeletingProperty, MB_ICONINFORMATION or MB_OK);
Exit; //// EXIT ////
{$ELSE}
if MessageQuastYN(cImpossibleDelProperty + ' "' + PropName + '", ' + cSinceItUse + '. Delete it ?') <> IDYES then
Exit; //// EXIT ////
{$IFEND}
end;
////*** <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//if TF_Main(GForm).DM.MemTable_PropertyEd.FieldByName('isStandart').AsInteger = 1 then
// begin
// MessageModal(Self.Handle, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.', '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', MB_ICONINFORMATION or MB_OK);
// Exit;
// end;
{//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD>"
if RadioGroup_IsLine.ItemIndex = 0 then
if PropSysName = 'LENGTH' then
begin
MessageModal(Self.Handle, '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD>" <20>.<2E>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.',
'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ', MB_OK or MB_ICONINFORMATION);
Exit;
end;}
if MessageModal(cQuastDelProperty + ' "' + PropName + '" ?', cDeletingProperty,
MB_YESNO or MB_ICONQUESTION) = mrYES then
begin
DelID := TF_Main(GForm).DM.MemTable_PropertyEd.FieldByName(fnID).AsInteger;
CanDel := true;
if GetNormResourcesCountByCompPropRelID(DelID) > 0 then
begin
case MessageModal(cMain_Msg177, ApplicationName, MB_YESNOCANCEL or MB_ICONQUESTION) of
IDYES:
DeleteNormResByIDCompPropRel(DelID);
IDCANCEL:
CanDel := false;
end;
end;
if CanDel then
begin
if TF_Main(GForm).DM.MemTable_PropertyEd.FieldByName(fnIsNew).AsBoolean = false then
GDeletedPropRel.Add(DelID);
TF_Main(GForm).DM.MemTable_PropertyEd.Delete;
GChangedProperty := true;
EnableButtons;
end;
end;
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.Act_AddComplectEdExecute(Sender: TObject);
begin
{EnableMakeEditCompon(False);
TF_Main(GForm).AddEditComplect(cmAdd, true);
EnableMakeEditCompon(True);
SetCalcPrice;
ChangedComplect := true;
EnableButtons; }
MessageModal(cbMessage2 + ' "' + GetMainformName + '"',
cAddingComplect, MB_ICONINFORMATION or MB_OK);
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.Act_DelComplectEdExecute(Sender: TObject);
//var ComplectName : String;
//DelID: Integer;
begin
MessageModal(cbMessage3 + ' "' + GetMainformName + '"',
cDeletingComplect, MB_ICONINFORMATION or MB_OK);
{
ComplectName := TF_Main(GForm).DM.MemTable_ComplectsEd.FieldByName('Name').AsString;
if MessageModal(Self.Handle, PAnsiChar('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "' + ComplectName +'" ?'),
'<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', MB_YESNO or MB_ICONQUESTION) = mrYES then
begin
DelID := TF_Main(GForm).DM.MemTable_ComplectsEd.FieldByName('ID').AsInteger;
GDeletedComplects.Add(IntToStr(DelID));
TF_Main(GForm).DM.MemTable_ComplectsEd.Delete;
SetCalcPrice;
GChangedComplect := true;
EnableButtons;
end; }
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.Act_EditComplectEdExecute(Sender: TObject);
begin
{EnableMakeEditCompon(False);
TF_Main(GForm).AddEditComplect(cmEdit, true);
EnableMakeEditCompon(True);
SetCalcPrice;
ChangedComplect := true;
EnableButtons;}
MessageModal(cbMessage4 + ' "' + GetMainformName + '"',
cEditingComplect, MB_ICONINFORMATION or MB_OK);
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.Act_AddCableCanalConnectorExecute(
Sender: TObject);
begin
AddEditCableCanalConnector(meMake);
EnableButtons;
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.Act_EditCableCanalConnectorExecute(
Sender: TObject);
begin
AddEditCableCanalConnector(meEdit);
end;
procedure TF_AddComponent.Act_DelCableCanalConnectorExecute(
Sender: TObject);
var
DelName: string;
DelID: Integer;
begin
with TF_Main(GForm).DM do
begin
DelName := MemTable_CableCanalConnectorsEd.FieldByName(fnName).AsString;
if MessageModal(cQuastDelCableChannelElement + ' "' + DelName + '"?',
Application.Title, MB_YESNO or MB_ICONQUESTION) = IDYES then
begin
if MemTable_CableCanalConnectorsEd.FieldByName(fnIsNew).AsBoolean = false then
begin
DelID := MemTable_CableCanalConnectorsEd.FieldByName(fnID).AsInteger;
GDeletedCableCanalConnectors.Add(DelID);
end;
MemTable_CableCanalConnectorsEd.Delete;
end;
end;
EnableButtons;
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.GT_InterfaceTypeGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: string);
begin
if AText = '0' then
AText := cAddComponent_Msg8_1;
if AText = '1' then
AText := cAddComponent_Msg8_2;
end;
procedure TF_AddComponent.GT_InterfaceKindGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: string);
begin
if AText = '0' then
AText := cAddComponent_Msg9_1;
if AText = '1' then
AText := cAddComponent_Msg9_2;
end;
procedure TF_AddComponent.GT_InterfaceValueIGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: string);
begin
if AText = '0' then
AText := cAddComponent_Msg10
else
AText := GetDisplayTextInFLoatUOMMin2(AText, TF_Main(GForm).FUOM);
end;
procedure TF_AddComponent.GT_InterfaceNumPairsStrGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: string);
begin
if AText = '0' then
AText := cAddComponent_Msg10;
end;
procedure TF_AddComponent.GT_InterfaceSideGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: string);
begin
if AText = '0' then
AText := cAddComponent_Msg10;
end;
procedure TF_AddComponent.ComboBox_NetTypeKeyPress(Sender: TObject;
var Key: Char);
begin
Key := #0;
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> 1 #####
procedure TF_AddComponent.CurrencyEdit_Price1_KeyUp(Sender: TObject;
var Key: Word; Shift: TShiftState);
var
NewValue: Double;
RoundValue: Double;
begin
try
NewValue := 0;
//if StrCanBeFloat(CurrencyEdit_Price1.Text) then
begin
NewValue := StrToFloatU(CorrectStrToFloat(CurrencyEdit_Price1.Text));
DefineComponSecondPrice(NewValue);
ShowNDSPrice;
GWasChanging := true;
DefineSupplyPriceByComponActualPrice; //DefineSupplyPriceByComponPrice(NewValue);
end;
{if Key in [188, 190, 191, 110] then
Exit;
if CurrencyEdit_Price1.Text <> '' then
NewValue := StrToFloat_My(CurrencyEdit_Price1.Text)
else
NewValue := 0;
if Not (CurrencyEdit_Price1.Text[Length(CurrencyEdit_Price1.Text)] in ['0', ',', '.']) and
Not (CurrencyEdit_Price1.Text[1] in ['0', ',', '.']) then
CurrencyEdit_Price1.Value := NewValue;
RoundValue := RoundX(NewValue * (TF_Main(GForm).GCurrencyM.Ratio / TF_Main(GForm).GCurrencyS.Ratio),2);
CurrencyEdit_Price2.Value := RoundValue;
ShowNDSPrice;
GWasChanging := true;}
except
end;
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> 2 #####
procedure TF_AddComponent.CurrencyEdit_Price2KeyUp(Sender: TObject;
var Key: Word; Shift: TShiftState);
var
NewValue: Double;
RoundValue: Double;
begin
try
NewValue := 0;
//if StrCanBeFloat(CurrencyEdit_Price2.Text) then
begin
NewValue := StrToFloatU(CorrectStrToFloat(CurrencyEdit_Price2.Text));
//RoundValue := Round3(NewValue * (TF_Main(GForm).GLocalCurrencyS.Data.Ratio / TF_Main(GForm).GLocalCurrencyM.Data.Ratio));
RoundValue := Round3(GetPriceAfterChangeCurrency(NewValue, TF_Main(GForm).GLocalCurrencyS.Data, TF_Main(GForm).GLocalCurrencyM.Data, valEpsilonCurrency));
CurrencyEdit_Price1.Value := RoundValue;
ShowNDSPrice;
GWasChanging := true;
DefineSupplyPriceByComponActualPrice; //DefineSupplyPriceByComponPrice(RoundValue);
end;
{
if Key in [188, 190, 191, 110] then
Exit;
if CurrencyEdit_Price2.Text <> '' then
NewValue := StrToFloat_My( CurrencyEdit_Price2.Text)
else
NewValue := 0;
if Not(CurrencyEdit_Price2.Text[Length(CurrencyEdit_Price2.Text)] in ['0', ',', '.']) and
Not(CurrencyEdit_Price2.Text[1] in ['0', ',', '.']) then
CurrencyEdit_Price2.Value := NewValue;
RoundValue := RoundX(NewValue * (TF_Main(GForm).GCurrencyS.Ratio / TF_Main(GForm).GCurrencyM.Ratio), 2);
CurrencyEdit_Price1.Value := RoundValue;
ShowNDSPrice;
GWasChanging := true; }
except
end;
end;
procedure TF_AddComponent.cePriceSupplyKeyUp(Sender: TObject;
var Key: Word; Shift: TShiftState);
var
NewValue: Double;
begin
NewValue := StrToFloatU(CorrectStrToFloat(cePriceSupply.Text));
DefineParamsBySupply(NewValue, false);
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.Act_AddExecute(Sender: TObject);
begin
{ if GFormMode = fmView then
Exit;}
if ReadOnly then
Exit; ///// EXIT /////
case Grid.ActiveLevel.Index of
liInterface:
Act_AddInterface.Execute;
liPort:
Act_AddPort.Execute;
liProperty:
Act_AddProperty.Execute;
liCableCanalConnectors:
Act_AddCableCanalConnector.Execute;
liComplects:
Act_AddComplectEd.Execute;
liCrossConnections:
Act_AddCrossConnection.Execute;
end;
GWasChanging := true;
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.Act_DelExecute(Sender: TObject);
begin
{if GFormMode = fmView then
Exit;}
if ReadOnly then
Exit; ///// EXIT /////
case Grid.ActiveLevel.Index of
liInterface:
Act_DelInterface.Execute;
liPort:
Act_DelPort.Execute;
liProperty:
Act_DelProperty.Execute;
liCableCanalConnectors:
Act_DelCableCanalConnector.Execute;
liComplects:
Act_DelComplectEd.Execute;
liCrossConnections:
Act_DelCrossConnection.Execute;
end;
GWasChanging := true;
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.Act_EditExecute(Sender: TObject);
begin
try
//if TF_Main(GForm).GDBMode = bkProjectManager then
// Exit; ///// EXIT /////
if ReadOnly then
Exit; ///// EXIT /////
case Grid.ActiveLevel.Index of
liInterface:
if TF_Main(GForm).DM.MemTable_InterfaceRelEd.RecordCount > 0 then
Act_EditInterface.Execute;
liPort:
if TF_Main(GForm).DM.MemTable_PortEd.RecordCount > 0 then
Act_EditPort.Execute;
liProperty:
if TF_Main(GForm).DM.MemTable_PropertyEd.RecordCount > 0 then
Act_EditProperty.Execute;
liCableCanalConnectors:
if TF_Main(GForm).DM.MemTable_CableCanalConnectorsEd.RecordCount > 0 then
Act_EditCableCanalConnector.Execute;
liComplects:
if TF_Main(GForm).DM.MemTable_ComplectsEd.RecordCount > 0 then
Act_EditComplectEd.Execute;
liCrossConnections:
Act_EditCrossConnection.Execute;
end;
GWasChanging := true;
except
on E: Exception do
AddExceptionToLog('TF_AddComponent.Act_EditExecute: ' + E.Message);
end;
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Tab #####
procedure TF_AddComponent.GridActiveTabChanged(Sender: TcxCustomGrid;
ALevel: TcxGridLevel);
begin
EnableButtons;
DefinecbApplyCompData;
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Edit-<2D> <20> Grid #####
procedure TF_AddComponent.GT_PropertyPValueGetProperties(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AProperties: TcxCustomEditProperties);
begin
if ARecord.Values[6] <> null then
with TF_Main(GForm).DM do
begin
case ARecord.Values[6] of
dtBoolean:
AProperties := EditRepositoryCheckBoxItem.Properties;
//dtFloat : AProperties := EditRepositorySpinItem.Properties;
//dtInteger: AProperties := EditRepositorySpinItem.Properties;
//dtDate:
// AProperties := EditRepositoryDateItem.Properties;
dtCompStateType:
AProperties := EditRepositoryLookupCompSateType.Properties;
dtColor:
AProperties := EditRepositoryColorComboBox.Properties;
dtCableCanalElementType:
AProperties := EditRepositoryLookupCableCanalElementType.Properties;
//dtSectionSide:
// AProperties := EditRepositoryMaskItemSectionSide.Properties;
end;
end;
end;
procedure TF_AddComponent.GT_PropertyPValueGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: String);
//var
// CurrFloat: Double;
var DoSetDisplay: boolean; // IGOR 04/07/2019 --
begin
// IGOR 04/07/2019 --
DoSetDisplay := True;
if ARecord.Values[6] <> null then
begin
if (ARecord.Values[6] = dtBoolean) or (ARecord.Values[6] = dtCompStateType)
or (ARecord.Values[6] = dtColor) or (ARecord.Values[6] = dtCableCanalElementType) then
DoSetDisplay := False;
end;
if DoSetDisplay then
//
SetDisplayTextToGridTablePropValue(AText, ARecord, 6, 7, TF_Main(GForm).FUOM);
{if ARecord.Values[6] <> null then
case ARecord.Values[6] of
dtFloat:
try
CurrFloat := StrToFloatU(AText);
if GPropSysNameInUOM.IndexOf(ARecord.Values[7]) <> -1 then
CurrFloat := RoundCP(FloatInUOM(CurrFloat, umMetr, TF_Main(GForm).FUOM));
AText := FloatToStr(CurrFloat);
except
end;
dtDate:
try
AText := DateToStr(StrToDateU(AText));
except
end;
end;}
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.SetCalcPrice;
var
CurrRecNo: Integer;
PriceWithNDS: Double; // <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
function GetPriceFromStr(StrPrice: string): Double;
var
Str: string;
Len: Integer;
i: Integer;
begin
Result := 0;
Str := StrPrice;
Len := Length(StrPrice);
for i := 1 to Len do
if StrPrice[i] = ' ' then
begin
SetLength(Str, i);
Break;
end;
Result := Round3(StrToFloatU(Str));
end;
begin
if TF_Main(GForm).DM.MemTable_ComplectsEd.RecordCount > 0 then // Tolik 28/12/2019 --
begin
with TF_Main(GForm).DM.MemTable_ComplectsEd do
begin
CurrRecNo := RecNo;
PriceWithNDS := 0;
First;
while not Eof do
begin
PriceWithNDS := PriceWithNDS +
GetPriceFromStr(FieldByName('Cost1').AsString);
TF_Main(GForm).DM.MemTable_ComplectsEd.Next;
end;
RecNo := CurrRecNo;
end;
end;
//case RadioGroup_HasNds.ItemIndex of
// // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> - <20><>
// 0 : CurrencyEdit_Price1.Value := RoundX(PriceWithNDS, 2);
// // <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> - <20><>
// 1 : CurrencyEdit_Price1.Value := RoundX(
// PriceWithoutNDS(PriceWithNDS, GNDS), 2);
//end;
case CheckBox_HasNds.Checked of
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> - <20><>
true: CurrencyEdit_Price1.Value := Round3(PriceWithNDS);
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> - <20><>
false: CurrencyEdit_Price1.Value := Round3(PriceWithoutNDS(PriceWithNDS, TF_Main(GForm).GNDS));
end;
//CurrencyEdit_Price2.Value := Round3(CurrencyEdit_Price1.Value * (TF_Main(GForm).GLocalCurrencyM.Data.Ratio / TF_Main(GForm).GLocalCurrencyS.Data.Ratio));
CurrencyEdit_Price2.Value := Round3(GetPriceAfterChangeCurrency(CurrencyEdit_Price1.Value,
TF_Main(GForm).GLocalCurrencyM.Data, TF_Main(GForm).GLocalCurrencyS.Data));
//ShowNDSPrice;
end;
procedure TF_AddComponent.RefreshFields(ATarget: TkbmMemTable;
ASTableName, ATargetKeyName, ASourceKeyName: string; AFieldsNames: TStringList);
var
TRecNo: Integer;
FNamesCount: Integer;
i: Integer;
begin
try
if ATarget.Active = false then
Exit; //// EXIT ////
if TF_Main(GForm).FNormBase = GForm then
begin
FNamesCount := AFieldsNames.Count;
if ATarget.RecordCount > 0 then // Tolik 28/12/2019 --
begin
TRecNo := ATarget.RecNo;
try
ATarget.First;
while not ATarget.Eof do
begin
SetSQLToQuery(F_NormBase.DM.scsQ, ' SELECT * FROM ' + ASTableName +
' WHERE ' + ASourceKeyName + ' = ' + IntToStr(ATarget.FieldByName(ATargetKeyName).AsInteger));
ATarget.Edit;
for i := 0 to FNamesCount - 1 do
ATarget.FieldByName(AFieldsNames.Strings[i]).Value := F_NormBase.DM.scsQ.GetFNAsVariant(AFieldsNames.Strings[i]);
ATarget.Post;
ATarget.Next;
end;
finally
ATarget.RecNo := TRecNo;
if ATarget.RecNo <> TRecNo then
ATarget.RecNo := TRecNo;
end;
end;
end;
except
on E: Exception do
AddExceptionToLog('TF_AddComponent.RefreshFields: ' + E.Message);
end;
end;
procedure TF_AddComponent.GridEnter(Sender: TObject);
begin
//Act_Del.ShortCut := ShortCut(VK_DELETE, []);
end;
procedure TF_AddComponent.GridExit(Sender: TObject);
begin
//Act_Del.ShortCut := ShortCut(VK_NONAME, []);
end;
procedure TF_AddComponent.FormHide(Sender: TObject);
begin
// ##### <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>s<EFBFBD><73><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
//Position := poMainFormCenter;
end;
constructor TF_AddComponent.Create(AOwner: TComponent; AForm: TForm);
begin
//inherited;
GForm := AForm;
inherited Create(AOwner);
end;
function TF_AddComponent.GetMainformName: string;
begin
case TF_Main(GForm).GDBMode of
bkNormBase: Result := cAddComponent_Msg11_1;
bkProjectManager: Result := cAddComponent_Msg11_2;
end;
end;
procedure TF_AddComponent.GT_InterfaceGenderGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: string);
begin
if AText = '0' then
AText := cAddComponent_Msg12_1;
if AText = '1' then
AText := cAddComponent_Msg12_2;
end;
procedure TF_AddComponent.EnableControl(AEnable: Boolean);
begin
{GroupBox_MainData.Enabled := AEnable;
GroupBox_NetType.Enabled := AEnable;
GroupBox_Price.Enabled := AEnable;
RadioGroup_CanComplect.Enabled := AEnable;
ColorEdit.Enabled := AEnable;
Label_CanComplect.Enabled := AEnable;}
{Panel_MainData.Enabled := AEnable;
ToolBar_OtherData.Enabled := AEnable;
Label_Default.Visible := AEnable;}
//Label_ArticulDistributor.Enabled := AEnable;
//Edit_ArticulDistributor.Enabled := AEnable;
//Label_ArticulProducer.Enabled := AEnable;
//Edit_ArticulProducer.Enabled := AEnable;
//Label_ComponentType.Enabled := AEnable;
ComboBox_ComponentType.Enabled := AEnable;
Button_TypeComponent.Enabled := AEnable;
//Label_Producer.Enabled := AEnable;
//ComboBox_Producer.Enabled := AEnable;
//Label_NetType.Enabled := AEnable;
//ComboBox_NetType.Enabled := AEnable;
//Button_ChangeNetType.Enabled := AEnable;
//Button_OpenCompIcons.Enabled := AEnable;
//RadioGroup_CanComplect.Enabled := AEnable;
cbCanComplect.Enabled := AEnable;
//Act_EditProperty.Enabled := AEnable;
//Act_DelProperty.Enabled := AEnable;
end;
procedure TF_AddComponent.SetVisibleByIsLine(AIsLineType: Integer);
var
ShowUserLength: Boolean;
begin
ShowUserLength := false;
if AIsLineType = biTrue then
if TF_Main(GForm).GDBMode = bkProjectManager then
ShowUserLength := true;
Label_UserLength.Visible := ShowUserLength;
SpinEdit_UserLength.Visible := ShowUserLength;
{//14.05.2009
case AIsLineType of
biFalse:
begin
//Label_ObjectIconStep.Visible := false;
//SpinEdit_ObjectIconStep.Visible := false;
GL_PORT.Visible := true;
end;
biTrue:
begin
//Label_ObjectIconStep.Visible := true;
//SpinEdit_ObjectIconStep.Visible := true;
GL_PORT.Visible := false;
end;
end;}
GL_PORT.Visible := (GUseVisibleInterfaces) and (AIsLineType = biFalse);
end;
procedure TF_AddComponent.VisibleInterfaceColumns(AVisible: Boolean);
begin
//GT_INTERFACEMultiple.Visible := AVisible;
//GT_InterfaceValueI.Visible := AVisible;
GT_InterfaceNumPairsStr.Visible := AVisible;
//GT_InterfaceColor.Visible := AVisible;
GT_InterfaceSide.Visible := AVisible;
GT_NORMSExpenseForLength.Visible := AVisible;
GT_NORMSCountForPoint.Visible := AVisible;
GT_NORMSStepOfPoint.Visible := AVisible;
GT_NORMSTotalKolvo.Visible := AVisible;
end;
function TF_AddComponent.GetPropertyBySysName(ASysyName: string): string;
var
RecNo: Integer;
i: Integer;
begin
Result := '';
// Tolik 28/12/2019 --
if TF_Main(GForm).DM.MemTable_PropertyEd.RecordCount = 0 then
exit;
//
with TF_Main(GForm).DM do
begin
RecNo := MemTable_PropertyEd.RecNo;
MemTable_PropertyEd.DisableControls;
try
for i := 0 to MemTable_PropertyEd.RecordCount - 1 do
begin
MemTable_PropertyEd.RecNo := i + 1;
if MemTable_PropertyEd.FieldByName(fnSysName).AsString = ASysyName then
begin
Result := MemTable_PropertyEd.FieldByName(fnPValue).AsString;
Break; ///// BREAK /////
end;
end;
finally
MemTable_PropertyEd.RecNo := RecNo;
MemTable_PropertyEd.EnableControls;
end;
end;
end;
function TF_AddComponent.GetPropertyBySysNameAsFloat(ASysyName: string): Double;
var
StrRes: string;
begin
Result := 0;
StrRes := GetPropertyBySysName(ASysyName);
if StrRes <> '' then
Result := StrToFloatU(StrRes);
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
function TF_AddComponent.isBusyInterface: Boolean;
begin
result := false;
with TF_Main(GForm).DM.MemTable_InterfOfInterf_RelEd do
begin
First;
while not Eof do
begin
if FieldByName('isBusy').AsBoolean = true then
begin
Result := true;
First;
Break;
end;
Next;
end;
end;
end;
procedure TF_AddComponent.SetPropertyValueBySysName(ASysyName, AValue: string);
var
RecNo: Integer;
i: Integer;
begin
// Tolik 28/12/2019 --
if TF_Main(GForm).DM.MemTable_PropertyEd.RecordCount = 0 then
exit;
//
with TF_Main(GForm).DM do
begin
RecNo := MemTable_PropertyEd.RecNo;
MemTable_PropertyEd.DisableControls;
try
for i := 0 to MemTable_PropertyEd.RecordCount - 1 do
begin
MemTable_PropertyEd.RecNo := i + 1;
if MemTable_PropertyEd.FieldByName(fnSysName).AsString = ASysyName then
begin
MemTable_PropertyEd.Edit;
MemTable_PropertyEd.FieldByName(fnPValue).AsString := AValue;
MemTable_PropertyEd.FieldByName(fnIsModified).AsBoolean := true;
MemTable_PropertyEd.Post;
Break; ///// BREAK /////
end;
end;
finally
MemTable_PropertyEd.RecNo := RecNo;
MemTable_PropertyEd.EnableControls;
end;
end;
end;
procedure TF_AddComponent.SetPropertyValueBySysNameAsFloat(ASysyName: string; AValue: Double);
begin
SetPropertyValueBySysName(ASysyName, FloatToStrU(AValue));
end;
//Procedure AddPropertyToNBCompon(aProp: PProperty); // Tolik 05/03/2021 --
Procedure TF_AddComponent.AddPropertyToNBCompon(aProp: TNBProperty; aValue: string); // Tolik 05/03/2021 --
var FieldsNames: TStringList;
Prop: TProperty;
begin
//if TF_Main(GForm).GDBMode = bkNormBase then
ZeroMemory(@Prop, sizeof(TProperty));
begin
if F_NormBase.GSCSBase.SCSComponent <> nil then
begin
F_NormBase.DM.MemTable_PropertyEd.DisableControls;
Prop.Guid := aProp.PropertyData.GUID;
Prop.IDMaster := F_NormBase.GSCSBase.SCSComponent.ID;
Prop.ID_Property := aProp.PropertyData.ID;
Prop.IDDataType := aProp.PropertyData.IDDataType;
Prop.SysName := aProp.PropertyData.SysName;
Prop.Value := aValue;
Prop.Name_ := aProp.PropertyData.Name;
Prop.IsForWholeComponent := 1;
Prop.IsNew := True;
F_NormBase.DM.MemTable_PropertyEd.Append;
Prop.ID := GenNewID(tkCompPropRelED);
if F_NormBase.DM.MemTable_PropertyEd.State <> dsBrowse then
begin
F_NormBase.DM.SetPropertyToTable(F_NormBase.DM.DataSource_MT_PropertyEd, Prop);
F_NormBase.DM.MemTable_PropertyEd.Post;
end;
{F_NormBase.DM.MemTable_PropertyEd.Edit;
F_NormBase.DM.MemTable_PropertyEd.Last;
F_NormBase.DM.MemTable_PropertyEd.Append;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnIDMaster).AsInteger := F_NormBase.GSCSBase.SCSComponent.ID;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnGuidProperty).AsString := aProp.PropertyData.GUID;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnIDProperty).AsInteger := aProp.PropertyData.ID;
//F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnTakeIntoConnect).AsInteger := aProp.PropertyData.
//F_NormBase.DM.MemTable_PropertyEdd.FieldByName(fnTakeIntoJoin, ftInteger);
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnIDDataType).asinteger := aProp.PropertyData.IDDataType;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnName).AsString := aProp.PropertyData.Name;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnSysName).AsString := aProp.PropertyData.SysName;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnPValue).AsString := aValue;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnIzm).AsString := aProp.PropertyData.Izm;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnDescription).AsString := aProp.PropertyData.Description;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnisStandart).AsInteger := aProp.PropertyData.IsStandart;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnIsTakeJoinForPoints).AsInteger := 0;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnIsCrossControl).AsInteger := 0;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnGuidCrossProperty).AsString := '';
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnIDCrossProperty).AsInteger := 0;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnIsForWholeComponent).AsInteger := 1;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnIsDefault).AsInteger := 0;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnisModified).AsBoolean := False;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnisNew).AsBoolean := False;
{F_NormBase.DM.MemTable_PropertyEd.DisableControls;
F_NormBase.DM.MemTable_PropertyEd.Edit;
F_NormBase.DM.MemTable_PropertyEd.Last;
F_NormBase.DM.MemTable_PropertyEd.Append;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnIDMaster).AsInteger := F_NormBase.GSCSBase.SCSComponent.ID;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnGuidProperty).AsString := aProp.PropertyData.GUID;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnIDProperty).AsInteger := aProp.PropertyData.ID;
//F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnTakeIntoConnect).AsInteger := aProp.PropertyData.
//F_NormBase.DM.MemTable_PropertyEdd.FieldByName(fnTakeIntoJoin, ftInteger);
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnIDDataType).asinteger := aProp.PropertyData.IDDataType;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnName).AsString := aProp.PropertyData.Name;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnSysName).AsString := aProp.PropertyData.SysName;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnPValue).AsString := aValue;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnIzm).AsString := aProp.PropertyData.Izm;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnDescription).AsString := aProp.PropertyData.Description;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnisStandart).AsInteger := aProp.PropertyData.IsStandart;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnIsTakeJoinForPoints).AsInteger := 0;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnIsCrossControl).AsInteger := 0;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnGuidCrossProperty).AsString := '';
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnIDCrossProperty).AsInteger := 0;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnIsForWholeComponent).AsInteger := 1;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnIsDefault).AsInteger := 0;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnisModified).AsBoolean := False;
F_NormBase.DM.MemTable_PropertyEd.FieldByName(fnisNew).AsBoolean := False;
F_NormBase.DM.MemTable_PropertyEd.Post;
F_NormBase.DM.MemTable_PropertyEd.Refresh;
}
FieldsNames := TStringList.Create;
try
FieldsNames.Clear;
FieldsNames.Add(fnName);
FieldsNames.Add(fnSysName);
FieldsNames.Add(fnName);
FieldsNames.Add(fnIzm);
FieldsNames.Add(fnDescription);
FieldsNames.Add(fnIDDataType);
RefreshFields(F_NormBase.DM.MemTable_PropertyEd, tnProperties, fnIDProperty, fnID, FieldsNames);
finally
FreeAndNil(FieldsNames);
F_NormBase.DM.MemTable_PropertyEd.EnableControls;
end;
end;
end;
end;
procedure TF_AddComponent.SdvigNppPortAfterDel(ADelNPPPort: Integer);
var
RecNo: Integer;
MemTable_PortED: TkbmMemTable;
CurrNppPort: Integer;
begin
try
MemTable_PortED := nil;
RecNo := -1;
if TF_Main(GForm).GDBMode <> bkProjectManager then
Exit; //// EXIT ////
MemTable_PortED := TF_Main(GForm).DM.MemTable_PortEd;
if MemTable_PortED <> nil then
begin
RecNo := MemTable_PortED.RecNo;
MemTable_PortED.DisableControls;
//GT_PORT.BeginUpdate;
if MemTable_PortED.RecordCount > 0 then // Tolik 28/12/2019 --
begin
try
MemTable_PortED.First;
while not MemTable_PortED.Eof do
begin
CurrNppPort := MemTable_PortED.FieldByName('Npp_Port').AsInteger;
if MemTable_PortED.FieldByName('isUser_Port').AsInteger = biFalse then
//if MemTable_PortED.FieldByName('isNew').AsBoolean = True then
if CurrNppPort > ADelNPPPort then
begin
MemTable_PortED.Edit;
MemTable_PortED.FieldByName('Npp_Port').AsInteger := CurrNppPort - 1;
MemTable_PortED.Post;
end;
MemTable_PortED.Next;
end;
finally
MemTable_PortED.RecNo := RecNo;
MemTable_PortED.EnableControls;
//GT_PORT.EndUpdate;
end;
end;
end;
except
on E: Exception do
AddExceptionToLog('TF_AddComponent.SdvigNppPortAfterDel: ' + E.Message);
end;
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.AddInterfacePort(AIsPort: Integer);
var
MemTable_InterfOrPort: TkbmMemTable;
FieldsNames: TStringList;
//i: Integer;
meInterfaceRel: TmeInterfaceRel;
ComponentType: TComponentType;
begin
try
FieldsNames := nil;
MemTable_InterfOrPort := nil;
if (GFormMode = fmView) or (GFormMode = fmDisabled) then
Exit; //// EXIT ////
ZeroMemory(@meInterfaceRel, SizeOf(TmeInterfaceRel));
case AIsPort of
biTrue:
MemTable_InterfOrPort := TF_Main(GForm).DM.MemTable_PortEd;
biFalse:
MemTable_InterfOrPort := TF_Main(GForm).DM.MemTable_InterfaceRelEd;
end;
if MemTable_InterfOrPort <> nil then
begin
//if ComboBox_ComponentType.Text <> '' then
// ComponentType := TF_Main(GForm).FNormBase.DM.GetComponentType(GetIDFromComboBox(ComboBox_ComponentType))
//else
// ComponentType.IsLine := biFalse;
ComponentType := GetComponentType;
meInterfaceRel.ID := GGenLastInterfID + 1;
meInterfaceRel.ID_COMPONENT := GIDComponent;
meInterfaceRel.IsLineCompon := ComponentType.IsLine;
meInterfaceRel.IsPort := AIsPort;
//if meInterfaceRel.IsPort = biTrue then
begin
meInterfaceRel.mtInterfaces := TF_Main(GForm).DM.MemTable_InterfaceRelEd;
meInterfaceRel.mtPorts := TF_Main(GForm).DM.MemTable_PortEd;
meInterfaceRel.mtPortInterfRel := TF_Main(GForm).DM.MemTable_PortInterfRelEd;
meInterfaceRel.ServiceShowApplyForAllNoRelPorts := true;
end;
meInterfaceRel.mtInterfInternalConnect := TF_Main(GForm).DM.mtInterfInternalConnEd;
F_NormBase.F_CaseForm.GUseMemTable := MemTable_InterfOrPort; //TF_Main(GForm).DM.MemTable_InterfaceRelEd;
if TF_Main(GForm).CreateFAddInterface.GetInterfRel(meInterfaceRel, fmMake) then
begin
meInterfaceRel.NAME := TF_Main(GForm).F_AddInterface.ComboBox_Name.Text;
AddInterfaceToMT(meInterfaceRel);
if meInterfaceRel.ServiceApplyForAllNoRelPorts then
DefineAllPortInterfRelNames;
end;
F_NormBase.F_CaseForm.GUseMemTable := nil;
if (AIsPort = biTrue) and (not meInterfaceRel.ServiceApplyForAllNoRelPorts) then
DefineCurrPortInterfRelNames(true);
FieldsNames := TStringList.Create;
try
FieldsNames.Clear;
FieldsNames.Add('Name');
TF_Main(GForm).DM.MemTable_InterfaceRelEd.DisableControls;
TF_Main(GForm).DM.MemTable_PortEd.DisableControls;
try
RefreshFields(TF_Main(GForm).DM.MemTable_InterfaceRelEd, 'INTERFACE', 'ID_Interface', 'ID', FieldsNames);
RefreshFields(TF_Main(GForm).DM.MemTable_PortEd, 'INTERFACE', 'ID_Interface', 'ID', FieldsNames);
finally
TF_Main(GForm).DM.MemTable_InterfaceRelEd.EnableControls;
TF_Main(GForm).DM.MemTable_PortEd.EnableControls;
end;
finally
FreeAndNil(FieldsNames);
end;
end;
except
on E: Exception do
AddExceptionToLog('TF_AddComponent.AddInterfacePort: ' + E.Message);
end;
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.EditInterfacePort(AIsPort: Integer);
var
MemTable_InterfOrPort: TkbmMemTable;
DataSource_InterfOrPort: TDataSource;
FieldsNames: TStringList;
meInterfaceRel: TmeInterfaceRel;
EditId: Integer;
//ID_Adverse: Integer;
NumPair: Integer;
RecNo: Integer;
//BookmarkStr: String;
BookmarkStr: TBookMark;
ComponentType: TComponentType;
ReadOnlyMode: Boolean;
begin
try
FieldsNames := nil;
MemTable_InterfOrPort := nil;
DataSource_InterfOrPort := nil;
case AIsPort of
biTrue:
begin
MemTable_InterfOrPort := TF_Main(GForm).DM.MemTable_PortEd;
DataSource_InterfOrPort := TF_Main(GForm).DM.DataSource_MT_PortEd;
end;
biFalse:
begin
MemTable_InterfOrPort := TF_Main(GForm).DM.MemTable_InterfaceRelEd;
DataSource_InterfOrPort := TF_Main(GForm).DM.DataSource_MT_INTERFACERelEd;
end;
end;
if (MemTable_InterfOrPort <> nil) and (DataSource_InterfOrPort <> nil) then
begin
EditID := MemTable_InterfOrPort.FieldByName('ID').AsInteger;
NumPair := 0;
if AIsPort = biFalse then
NumPair := MemTable_InterfOrPort.FieldByName('Num_Pair').AsInteger;
RecNo := -1;
//BookmarkStr := '';
BookmarkStr := nil;
if (GFormMode = fmView) or (GFormMode = fmDisabled) then
Exit; ///// EXIT /////
ReadOnlyMode := false;
if MemTable_InterfOrPort.FieldByName('isNew').AsBoolean = false then
if IsUseInterfRelInMemTable(GForm, MemTable_InterfOrPort, meEdit, false) then
ReadOnlyMode := true; //Exit; ///// EXIT /////
if MemTable_InterfOrPort.FieldByName('isBusy').AsInteger = biTrue then
begin
//MessageModal('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>', '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', MB_ICONINFORMATION or MB_OK);
ReadOnlyMode := true; //Exit; ///// EXIT /////
end;
//*** <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if AIsPort = biFalse then
if IsUseInterfRelInPortInterfRels(TF_Main(GForm).DM.MemTable_InterfaceRelEd, TF_Main(GForm).DM.MemTable_PortInterfRelEd, meEdit, false) then
ReadOnlyMode := true; //Exit; ///// EXIT /////
if ReadOnlyMode then
MessageModal(CReadOnlyInterface, ApplicationName, MB_ICONINFORMATION or MB_OK);
//if ComboBox_ComponentType.Text <> '' then
// ComponentType := TF_Main(GForm).FNormBase.DM.GetComponentType(GetIDFromComboBox(ComboBox_ComponentType))
//else
// ComponentType.IsLine := biFalse;
ComponentType := GetComponentType;
meInterfaceRel := TF_Main(GForm).DM.GetInterfaceRel(DataSource_InterfOrPort, nil);
meInterfaceRel.IsPort := AIsPort;
meInterfaceRel.IsLineCompon := ComponentType.IsLine;
if meInterfaceRel.IsPort = biTrue then
begin
meInterfaceRel.mtPorts := TF_Main(GForm).DM.MemTable_PortEd;
meInterfaceRel.mtPortInterfRel := TF_Main(GForm).DM.MemTable_PortInterfRelEd;
meInterfaceRel.ServiceShowApplyForAllNoRelPorts := true;
end;
meInterfaceRel.mtInterfaces := TF_Main(GForm).DM.MemTable_InterfaceRelEd;
meInterfaceRel.mtInterfInternalConnect := TF_Main(GForm).DM.mtInterfInternalConnEd;
F_NormBase.F_CaseForm.GUseMemTable := MemTable_InterfOrPort;
if TF_Main(GForm).CreateFAddInterface.GetInterfRel(meInterfaceRel, fmEdit, ReadOnlyMode) then
begin
meInterfaceRel.ID_COMPONENT := GIDComponent; //TF_Main(GForm).GSCSBase.SCSComponent.ID;
RecNo := MemTable_InterfOrPort.RecNo;
//BookmarkStr := MemTable_InterfOrPort.Bookmark;
BookmarkStr := MemTable_InterfOrPort.GetBookmark;
with MemTable_InterfOrPort do
begin
Edit;
FieldByName('Name').AsString := meInterfaceRel.Name;
FieldByName('TypeI').AsInteger := meInterfaceRel.Typei;
FieldByName('Kind').AsInteger := meInterfaceRel.Kind;
FieldByName('Gender').AsInteger := meInterfaceRel.Gender;
FieldByName('Multiple').AsInteger := meInterfaceRel.Multiple;
FieldByName('ID_Interface').AsInteger := meInterfaceRel.ID_INTERFACE;
FieldByName(fnGuidInterface).AsString := meInterfaceRel.GUIDInterface;
FieldByName(fnNpp).AsInteger := meInterfaceRel.Npp;
if AIsPort = biFalse then
begin
FieldByName('ValueI').AsFloat := meInterfaceRel.ValueI;
if meInterfaceRel.ID_Adverse = 0 then
FieldByName(fnSide).AsInteger := meInterfaceRel.Side;
end
else
begin
FieldByName(fnNppPort).AsInteger := meInterfaceRel.NppPort;
FieldByName(fnIsUserPort).AsInteger := meInterfaceRel.IsUserPort;
end;
FieldByName('Color').AsFloat := meInterfaceRel.Color;
FieldByName(fnNotice).AsString := meInterfaceRel.Notice;
FieldByName(fnKolvo).AsInteger := meInterfaceRel.Kolvo;
FieldByName(fnSignType).AsInteger := meInterfaceRel.SignType;
FieldByName(fnConnToAnyGender).AsInteger := meInterfaceRel.ConnToAnyGender;
FieldByName(fnSideSection).AsString := meInterfaceRel.SideSection;
FieldByName('isModified').AsBoolean := true;
Post;
if meInterfaceRel.ID_Adverse <> 0 then
if ComponentType.IsLine = biTrue then
if SearchRecordMT(MemTable_InterfOrPort, 'id', meInterfaceRel.ID_Adverse) then
begin
Edit;
FieldByName('Name').AsString := meInterfaceRel.Name;
FieldByName('TypeI').AsInteger := meInterfaceRel.Typei;
FieldByName('Kind').AsInteger := meInterfaceRel.Kind;
FieldByName('Gender').AsInteger := meInterfaceRel.Gender;
FieldByName('Multiple').AsInteger := meInterfaceRel.Multiple;
FieldByName('ID_Interface').AsInteger := meInterfaceRel.ID_INTERFACE;
FieldByName(fnGuidInterface).AsString := meInterfaceRel.GUIDInterface;
FieldByName(fnNpp).AsInteger := meInterfaceRel.Npp;
FieldByName('ValueI').AsFloat := meInterfaceRel.ValueI;
if AIsPort = biFalse then
if meInterfaceRel.ID_Adverse = 0 then
FieldByName(fnSide).AsInteger := meInterfaceRel.Side;
FieldByName('Color').AsFloat := meInterfaceRel.Color;
FieldByName(fnNotice).AsString := meInterfaceRel.Notice;
FieldByName(fnKolvo).AsInteger := meInterfaceRel.Kolvo;
FieldByName(fnSignType).AsInteger := meInterfaceRel.SignType;
FieldByName(fnConnToAnyGender).AsInteger := meInterfaceRel.ConnToAnyGender;
FieldByName(fnSideSection).AsString := meInterfaceRel.SideSection;
FieldByName('isModified').AsBoolean := true;
Post;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
//SearchRecordMT(TF_Main(GForm).DM.MemTable_InterfaceRelEd, 'id', meInterfaceRel.ID);
end;
GChangedInterface := true;
end;
//if AIsPort = biTrue then ##ISPORT
//GDeletedPortInterfRels.AddStrings(TF_Main(GForm).F_AddInterface.GDeletedPortInterfRels);
GDeletedPortInterfRels.Assign(TF_Main(GForm).F_AddInterface.GDeletedPortInterfRelIDs, laOR);
if meInterfaceRel.ServiceApplyForAllNoRelPorts then
DefineAllPortInterfRelNames;
if meInterfaceRel.TYPEI = itFunctional then
ShowMessageAboutCheckCableCanalElemnts(Edit_Name.Text, TF_MAIN(GForm).DM.MemTable_CableCanalConnectorsEd.RecordCount);
end;
F_NormBase.F_CaseForm.GUseMemTable := nil;
if (AIsPort = biTrue) and (meInterfaceRel.ServiceApplyForAllNoRelPorts = false) then
DefineCurrPortInterfRelNames(true);
{TF_Main(GForm).F_AddInterface.GFormMode := fmEdit;
TF_Main(GForm).F_AddInterface.GID_Interface := TF_Main(GForm).DM.MemTable_Interface.FieldByName('ID_Interface').AsInteger;
TF_Main(GForm).F_AddInterface.GKolvo := TF_Main(GForm).DM.MemTable_Interface.FieldByName('Kolvo').AsInteger;
TF_Main(GForm).F_AddInterface.GTypeInterface := TF_Main(GForm).DM.MemTable_Interface.FieldByName('TypeI').AsInteger;
with TF_Main(GForm).DM.MemTable_Interface do
begin
if TF_Main(GForm).F_AddInterface.ShowModal = mrOK then
begin
Edit;
FieldByName('Name').AsString := TF_Main(GForm).F_AddInterface.ComboBox_Name.Text;
FieldByName('TypeI').AsInteger := TF_Main(GForm).F_AddInterface.ComboBox_Type_I.ItemIndex;
FieldByName('Gender').AsInteger := 1 - TF_Main(GForm).F_AddInterface.RadioGroup_Gender.ItemIndex;
FieldByName('ID_Interface').AsInteger := TF_Main(GForm).F_AddInterface.GID_INTERFACE;
FieldByName('Kolvo').AsInteger := TF_Main(GForm).F_AddInterface.SpinEdit_Kolvo.Value;
FieldByName('isModified').AsBoolean := true;
Post;
end;
GChangedInterface := true;
end; }
//GT_Interface.DataController.DataSource := TF_Main(GForm).DM.DataSource_MT_INTERFACE;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FieldsNames := TStringList.Create;
try
FieldsNames.Clear;
FieldsNames.Add('Name');
TF_Main(GForm).DM.MemTable_InterfaceRelEd.DisableControls;
TF_Main(GForm).DM.MemTable_PortEd.DisableControls;
try
RefreshFields(TF_Main(GForm).DM.MemTable_InterfaceRelEd, 'INTERFACE', 'ID_Interface', 'ID', FieldsNames);
RefreshFields(TF_Main(GForm).DM.MemTable_PortEd, 'INTERFACE', 'ID_Interface', 'ID', FieldsNames);
finally
TF_Main(GForm).DM.MemTable_InterfaceRelEd.EnableControls;
TF_Main(GForm).DM.MemTable_PortEd.EnableControls;
end;
finally
FreeAndNil(FieldsNames);
//if RecNo <> -1 then
//begin
// MemTable_InterfOrPort.First;
// MemTable_InterfOrPort.RecNo := RecNo;
//end;
{if BookmarkStr <> '' then
MemTable_InterfOrPort.Bookmark := BookmarkStr;}
if BookmarkStr <>nil then
begin
MemTable_InterfOrPort.GotoBookmark(BookmarkStr);
MemTable_InterfOrPort.FreeBookmark(BookmarkStr);
end;
end;
end;
except
on E: Exception do
AddExceptionToLog('TF_AddComponent.Act_EditInterfaceExecute: ' + E.Message);
end;
end;
procedure TF_AddComponent.DelAllInterfacesPorts(AIsPort: Boolean);
var
MemTable: TkbmMemTable;
strQuast: String;
begin
try
MemTable := nil;
strQuast := '';
if AIsPort then
begin
MemTable := TF_Main(GForm).DM.MemTable_PortEd;
strQuast := cAddComponent_Msg19_1;
end
else
begin
MemTable := TF_Main(GForm).DM.MemTable_InterfaceRelEd;
strQuast := cAddComponent_Msg19_2;
end;
if MessageModal(strQuast, ApplicationName, MB_ICONQUESTION or MB_YESNO) = IDYES then
begin
ClearPortInterfaceMemTable(MemTable, AIsPort);
end;
except
on E: Exception do AddExceptionToLogEx('TF_AddComponent.DelAllInterfacesPorts', E.Message);
end;
end;
procedure TF_AddComponent.DelAllProperties;
begin
try
if MessageModal(cAddComponent_Msg19_3, ApplicationName, MB_ICONQUESTION or MB_YESNO) = IDYES then
begin
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SetAsDeletedMTRecords(TF_Main(GForm).DM.MemTable_PropertyEd, nil, GDeletedPropRel, nil);
TF_Main(GForm).DM.MemTable_PropertyEd.Active := false;
TF_Main(GForm).DM.MemTable_PropertyEd.Active := true;
end;
except
on E: Exception do AddExceptionToLogEx('TF_AddComponent.DelAllProperties', E.Message);
end;
end;
procedure TF_AddComponent.DelAllCableCanalConnectors;
begin
try
if MessageModal(cAddComponent_Msg19_4, ApplicationName, MB_ICONQUESTION or MB_YESNO) = IDYES then
begin
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SetAsDeletedMTRecords(TF_Main(GForm).DM.MemTable_CableCanalConnectorsEd, nil, GDeletedCableCanalConnectors, nil);
TF_Main(GForm).DM.MemTable_CableCanalConnectorsEd.Active := false;
TF_Main(GForm).DM.MemTable_CableCanalConnectorsEd.Active := true;
end;
except
on E: Exception do AddExceptionToLogEx('TF_AddComponent.DelAllCableCanalConnectors', E.Message);
end;
end;
procedure TF_AddComponent.DelAllCrossConnections;
begin
try
if MessageModal(cAddComponent_Msg19_5, ApplicationName, MB_ICONQUESTION or MB_YESNO) = IDYES then
begin
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SetAsDeletedMTRecords(TF_Main(GForm).DM.mtCrossConnectionEd, nil, GDeletedCrossConnections, nil);
TF_Main(GForm).DM.mtCrossConnectionEd.Active := false;
TF_Main(GForm).DM.mtCrossConnectionEd.Active := true;
end;
except
on E: Exception do AddExceptionToLogEx('TF_AddComponent.DelAllCrossConnections', E.Message);
end;
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.DelInterfacePort(AIsPort: Integer);
var
MemTable_InterfOrPort: TkbmMemTable;
SubstanceName: string;
//DeletedInterfOrPort: TIntList;
InterfName: string;
InterfType: Integer;
DelID: Integer;
ID_Adverse: Integer;
NumPair: Integer;
NppPort: Integer;
ComponentType: TComponentType;
DeletedInterfIDs: TIntList;
InterfRelIDsForKolvo: TIntList;
InterfRelKolvosForKolvo: TIntList;
begin
try
ComponentType := GetComponentType;
MemTable_InterfOrPort := nil;
//DeletedInterfOrPort := nil;
InterfRelIDsForKolvo := nil;
InterfRelKolvosForKolvo := nil;
NppPort := -1;
case AIsPort of
biTrue:
begin
MemTable_InterfOrPort := TF_Main(GForm).DM.MemTable_PortEd;
SubstanceName := cNamePort;
//DeletedInterfOrPort := GDeletedPort;
end;
biFalse:
begin
MemTable_InterfOrPort := TF_Main(GForm).DM.MemTable_InterfaceRelEd;
SubstanceName := cNameInterface;
//DeletedInterfOrPort := GDeletedInterfRel;
end;
end;
if (MemTable_InterfOrPort <> nil) {and (DeletedInterfOrPort <> nil)} then
begin
DelID := MemTable_InterfOrPort.FieldByName('ID').AsInteger;
InterfType := MemTable_InterfOrPort.FieldByName(fnTypeI).AsInteger;
NumPair := 0;
if AIsPort = biFalse then
NumPair := MemTable_InterfOrPort.FieldByName('Num_Pair').AsInteger
else
NppPort := MemTable_InterfOrPort.FieldByName('Npp_Port').AsInteger;
if (GFormMode = fmView) or (GFormMode = fmDisabled) then
Exit; ///// EXIT /////
if MemTable_InterfOrPort.FieldByName('isNew').AsBoolean = false then
if IsUseInterfRelInMemTable(GForm, MemTable_InterfOrPort, meDel, true) then
Exit; ///// EXIT /////
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if AIsPort = biFalse then
if IsUseInterfRelInPortInterfRels(TF_Main(GForm).DM.MemTable_InterfaceRelEd, TF_Main(GForm).DM.MemTable_PortInterfRelEd, meDel, true) then
Exit; ///// EXIT /////
if MemTable_InterfOrPort.FieldByName('isBusy').AsInteger = biTrue then
begin
MessageModal(SubstanceName + ' ' + cBusy, cDeleting + ' ' + SubstanceName + cSufixA, MB_ICONINFORMATION or MB_OK);
Exit; ///// EXIT /////
end;
InterfName := MemTable_InterfOrPort.FieldByName('Name').AsString;
if MessageModal(cQuastDel + ' ' + SubstanceName + ' "' + InterfName + '" ?',
cDeleting + ' ' + SubstanceName + cSufixA, MB_YESNO or MB_ICONQUESTION) = mrYES then
begin
DeletedInterfIDs := TIntList.Create;
if AIsPort = biTrue then
begin
InterfRelIDsForKolvo := TIntList.Create;
InterfRelKolvosForKolvo := TIntList.Create;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
TF_Main(GForm).DM.DefineInterfRelIDsForKolvo(false, InterfRelIDsForKolvo, InterfRelKolvosForKolvo, TF_Main(GForm).DM.MemTable_PortInterfRelEd);
TF_Main(GForm).DM.DefineInterfacesKolvoByPortKolvo(0,
TF_Main(GForm).DM.MemTable_PortInterfRelEd, TF_Main(GForm).DM.MemTable_InterfaceRelEd, InterfRelIDsForKolvo, InterfRelKolvosForKolvo);
end;
if AIsPort = biFalse then
begin
ID_Adverse := MemTable_InterfOrPort.FieldByName('id_Adverse').AsInteger;
NumPair := MemTable_InterfOrPort.FieldByName('Num_Pair').AsInteger;
end;
if MemTable_InterfOrPort.FieldByName(fnIsNative).AsBoolean = true then
begin
DeletedInterfIDs.Add(DelID);
if MemTable_InterfOrPort.FieldByName(fnIsNew).AsBoolean = false then
GDeletedInterfRel.Add(DelID);
end;
MemTable_InterfOrPort.Delete;
if TF_Main(GForm).GDBMode = bkProjectManager then
if NppPort <> -1 then
SdvigNppPortAfterDel(NppPort);
if NumPair <> 0 then
if ComponentType.IsLine = biTrue then
with TF_Main(GForm).DM do
begin
MemTable_InterfOrPort.Last;
while not MemTable_InterfOrPort.Bof do
begin
if MemTable_InterfOrPort.FieldByName(fnNumPair).AsInteger = NumPair then
begin
if MemTable_InterfOrPort.FieldByName(fnIsNative).AsBoolean = true then
begin
DeletedInterfIDs.Add(MemTable_InterfOrPort.FieldByName(fnID).AsInteger);
if MemTable_InterfOrPort.FieldByName(fnisNew).AsBoolean = false then
GDeletedInterfRel.Add(MemTable_InterfOrPort.FieldByName(fnID).AsInteger);
end;
//else
// GGenLastInterfID := GGenLastInterfID - 1;
MemTable_InterfOrPort.Delete;
end
else
MemTable_InterfOrPort.Prior;
end;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
TF_Main(GForm).DM.DefineInterfaceNumPairs(MemTable_InterfOrPort, nil);
{if SearchRecordMT(TF_Main(GForm).DM.MemTable_InterfaceRelEd, 'id', ID_Adverse) then
begin
if TF_Main(GForm).DM.MemTable_InterfaceRelEd.FieldByName('isNew').AsBoolean = false then
GDeletedInterfRel.Add(IntToStr(ID_Adverse))
else
GGenLastInterfID := GGenLastInterfID - 1;
TF_Main(GForm).DM.MemTable_InterfaceRelEd.Delete;
end; }
end;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
TF_Main(GForm).DM.DeleteInterfInternalConnFromMTByInterfIDs(TF_Main(GForm).DM.mtInterfInternalConnEd, DeletedInterfIDs);
GChangedInterface := true;
EnableButtons;
if InterfType = itFunctional then
ShowMessageAboutCheckCableCanalElemnts(Edit_Name.Text, TF_MAIN(GForm).DM.MemTable_CableCanalConnectorsEd.RecordCount);
FreeAndNil(DeletedInterfIDs);
if InterfRelIDsForKolvo <> nil then
FreeAndNil(InterfRelIDsForKolvo);
if InterfRelKolvosForKolvo <> nil then
FreeAndNil(InterfRelKolvosForKolvo);
end;
end;
except
on E: Exception do
AddExceptionToLog('TF_AddComponent.DelInterfacePort: ' + E.Message);
end;
end;
procedure TF_AddComponent.DelPropsBySysNames(ASysNames: TStringList);
var
//MemTableBookmark: string;
MemTableBookmark: TBookMark;
MemTable: TkbmMemTable;
i: integer;
begin
try
MemTable := TF_Main(GForm).DM.MemTable_PropertyEd;
//MemTableBookmark := MemTable.Bookmark;
MemTableBookmark := MemTable.GetBookmark;
MemTable.DisableControls;
try
for i := 0 to ASysNames.Count - 1 do
if MemTable.Locate(fnSysName, ASysNames[i], []) then
begin
// if MemTableBookmark = MemTable.Bookmark then
// MemTableBookmark := '';
if Not MemTable.FieldByName(fnIsNew).AsBoolean then
GDeletedPropRel.Add(MemTable.FieldByName(fnID).AsInteger);
MemTable.Delete;
end;
finally
MemTable.EnableControls;
{if MemTableBookmark <> '' then
MemTable.Bookmark := MemTableBookmark;}
if MemTableBookmark <> nil then
begin
MemTable.GotoBookmark(MemTableBookmark);
MemTable.FreeBookmark(MemTableBookmark);
end;
end;
except
on E: Exception do AddExceptionToLogExt(ClassName, 'DelPropsBySysNames', E.Message);
end;
end;
procedure TF_AddComponent.DefineAllPortInterfRelNames;
var
PortRecNo: Integer;
begin
with TF_Main(GForm).DM do
begin
if MemTable_PortEd.RecordCount > 0 then // Tolik 28/12/2019 --
begin
MemTable_InterfaceRelEd.DisableControls;
PortRecNo := MemTable_PortEd.RecNo;
GT_PORT.BeginUpdate;
try
MemTable_PortEd.First;
while not MemTable_PortEd.Eof do
begin
DefineCurrPortInterfRelNames(true);
MemTable_PortEd.Next;
end;
MemTable_PortEd.First;
finally
GT_PORT.EndUpdate;
MemTable_PortEd.RecNo := PortRecNo;
MemTable_InterfaceRelEd.EnableControls;
end;
end;
end;
end;
// #### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ####
procedure TF_AddComponent.DefineCurrPortInterfRelNames(AAutoEditPost: Boolean);
var
IDInterfaces: TIntList;
CountInterfaces: TIntList;
IndexID: Integer;
CurrCount: Integer;
NewInterfRelNames: string;
IDInterface: Integer;
InterfKolvo: Integer;
i: Integer;
InterfRecNo: Integer;
begin
if TF_Main(GForm).DM.MemTable_InterfaceRelEd.RecordCount = 0 then // Tolik 28/12/2019 --
exit;
IDInterfaces := TIntList.Create;
CountInterfaces := TIntList.Create;
InterfRecNo := TF_Main(GForm).DM.MemTable_InterfaceRelEd.RecNo;
TF_Main(GForm).DM.MemTable_InterfaceRelEd.DisableControls;
try
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
with TF_Main(GForm).DM do
begin
MemTable_PortInterfRelEd.First;
while not MemTable_PortInterfRelEd.Eof do
begin
IDInterface := GetIDInterfaceByIDInterfRelFromMemTable(
MemTable_PortInterfRelEd.FieldByName(fnIDInterfRel).AsInteger,
MemTable_InterfaceRelEd, @InterfKolvo);
if IDInterface > 0 then
begin
IndexID := IDInterfaces.IndexOf(IDInterface);
if IndexID = -1 then
begin
IDInterfaces.Add(IDInterface);
//CountInterfaces.Add(1);
CountInterfaces.Add(InterfKolvo);
end
else
begin
CurrCount := CountInterfaces[IndexID];
//Inc(CurrCount);
CurrCount := CurrCount + InterfKolvo;
CountInterfaces[IndexID] := CurrCount;
end;
end;
MemTable_PortInterfRelEd.Next;
end;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
NewInterfRelNames := '';
for i := 0 to IDInterfaces.Count - 1 do
begin
if NewInterfRelNames <> '' then
NewInterfRelNames := NewInterfRelNames + '; ';
NewInterfRelNames := NewInterfRelNames + F_NormBase.GSCSBase.NBSpravochnik.GetInterfaceNameByID(IDInterfaces[i]);
if CountInterfaces[i] > 1 then
NewInterfRelNames := NewInterfRelNames + ' x' + IntToStr(CountInterfaces[i]);
end;
if NewInterfRelNames <> MemTable_PortEd.FieldByName(fnInterfRelNames).AsString then
begin
if AAutoEditPost then
MemTable_PortEd.Edit;
if MemTable_PortEd.State <> dsBrowse then
begin
MemTable_PortEd.FieldByName(fnInterfRelNames).AsString := NewInterfRelNames;
if AAutoEditPost then
MemTable_PortEd.Post;
end;
end;
end;
finally
TF_Main(GForm).DM.MemTable_InterfaceRelEd.RecNo := InterfRecNo;
TF_Main(GForm).DM.MemTable_InterfaceRelEd.EnableControls;
IDInterfaces.Free;
CountInterfaces.Free;
end;
end;
function TF_AddComponent.GetInterfPortMemTable: TkbmMemTable;
begin
Result := nil;
case Grid.ActiveLevel.Index of
liInterface:
Result := TF_Main(GForm).DM.MemTable_InterfaceRelEd;
liPort:
Result := TF_Main(GForm).DM.MemTable_PortEd;
end;
end;
procedure TF_AddComponent.AddEditCableCanalConnector(AMakeEdit: TMakeEdit);
var
FormComponent: TSCSComponent;
NBComponent: TSCSComponent;
//InterfCount: Integer;
ConnectorType: Integer;
IDCurrConnector: Integer;
begin
FormComponent := CreateFormComponent;
if Assigned(FormComponent) then
begin
//if FormComponent.ID_Producer < 1 then
// ShowMessageByType(Self.Handle, smtDisplay, '<27><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', Application.Title, MB_OK or MB_ICONINFORMATION)
//else
begin
IDCurrConnector := 0;
if AMakeEdit = meEdit then
IDCurrConnector := TF_Main(GForm).DM.MemTable_CableCanalConnectorsEd.FieldByName(fnIDNBConnector).AsInteger;
NBComponent := TF_Main(GForm).CreateFConnectComplWith.DefineCableCanalConnector(FormComponent, IDCurrConnector);
if Assigned(NBComponent) then
with TF_Main(GForm).DM do
begin
ConnectorType := -1;
//InterfCount := NBComponent.GetInterfcesCountByTypeIsBusySide(itFunctional, biFalse, biNone);
//if InterfCount = 1 then
// ConnectorType := contCork;
//if InterfCount = 2 then
// ConnectorType := contAnglePlane;
//if InterfCount = 3 then
// ConnectorType := contTjoin;
if NBComponent.Properties.Count = 0 then
NBComponent.LoadProperties;
ConnectorType := NBComponent.GetPropertyValueAsInteger(pnCableCanalElemetType);
if ConnectorType <> -1 then
begin
if AMakeEdit = meMake then
begin
MemTable_CableCanalConnectorsEd.Append;
MemTable_CableCanalConnectorsEd.FieldByName(fnID).AsInteger := GenNewID(tkCableCanalConnectorsED);
MemTable_CableCanalConnectorsEd.FieldByName(fnIsNew).AsBoolean := true;
MemTable_CableCanalConnectorsEd.FieldByName(fnIsModified).AsBoolean := false;
end;
if AMakeEdit = meEdit then
begin
MemTable_CableCanalConnectorsEd.Edit;
MemTable_CableCanalConnectorsEd.FieldByName(fnIsModified).AsBoolean := true;
end;
MemTable_CableCanalConnectorsEd.FieldByName(fnIDComponent).AsInteger := GIDComponent;
MemTable_CableCanalConnectorsEd.FieldByName(fnIDNBConnector).AsInteger := NBComponent.ID;
MemTable_CableCanalConnectorsEd.FieldByName(fnGuidNBConnector).AsString := NBComponent.GuidNB;
MemTable_CableCanalConnectorsEd.FieldByName(fnConnectorType).AsInteger := ConnectorType;
MemTable_CableCanalConnectorsEd.FieldByName(fnName).AsString := NBComponent.Name;
MemTable_CableCanalConnectorsEd.Post;
FreeAndNil(NBComponent);
end;
end;
end;
FreeAndNil(FormComponent);
end;
end;
procedure TF_AddComponent.AddEditCrossConnection(AMakeEdit: TMakeEdit);
var
CrossConnection: TSCSCrossConnection;
FormComponent: TSCSComponent;
MemTable: TkbmMemTable;
begin
try
MemTable := TF_Main(GForm).DM.mtCrossConnectionEd;
CrossConnection := nil;
if AMakeEdit = meMake then
CrossConnection := TSCSCrossConnection.Create(GForm) //ZeroMemory(@CrossConnection, SizeOf(TCrossConnection))
else
begin
CrossConnection := TSCSCrossConnection.Create(GForm);
TF_Main(GForm).DM.LoadCrossConnectionFromMemTable(MemTable, CrossConnection);
end;
CrossConnection.IDComponent := GIDComponent;
FormComponent := CreateFormComponent;
FormComponent.LoadChildComplectsQuick(true, true, true);
if TF_Main(GForm).CreateFMakeEditCrossConnection.Execute(AMakeEdit, FormComponent, CrossConnection) then
begin
TF_Main(GForm).DM.LoadCrossConnectionToMemTable(AMakeEdit, MemTable, CrossConnection);
end;
FreeAndNil(FormComponent);
FreeAndNil(CrossConnection);
except
on E: Exception do
AddExceptionToLog('TF_AddComponent.AddEditCrossConnection: ' + E.Message);
end;
end;
procedure TF_AddComponent.AddEditProperty(AMakeEdit: TMakeEdit);
var
OldValue: String;
PropFromMT, OldPropFromMT: TProperty;
FieldsNames: TStringList;
ComponentType: TComponentType;
ItemType: Integer;
begin
ZeroMemory(@PropFromMT, sizeof(TProperty));
ComponentType := GetComponentType;
ItemType := itNone;
ItemType := GetItemTypeByIsLine(GetIsLineByComponType(ComponentType));
with TF_Main(GForm) do
begin
if AMakeEDit = meEdit then
begin
PropFromMT := DM.GetPropertyFromTable(DM.DataSource_MT_PropertyEd);
if GDBMode = bkProjectManager then
//if not DM.CanEditProperty(DM.MemTable_PropertyEd) then
//begin
// MessageModal(cImpossibleChangeProperty + ' "' + PropFromMT.Name_ + '" ' + cBecauseItUse,
// ApplicationName, MB_ICONINFORMATION or MB_OK);
// Exit; ///// EXIT /////
//end;
if IsReadOnlyProp(ItemType, @PropFromMT) then
begin
MessageInfo(cMain_Msg182);
Exit; ///// EXIT /////
end;
end;
OldValue := PropFromMT.Value;
OldPropFromMT := PropFromMT;
if CreateFMakeEditPropRel.Execute(AMakeEdit, tkComponent, @PropFromMT, DM.MemTable_PropertyEd, ItemType, nil, FSpravochnik, TF_Main(GForm).OnCheckPropRelFormValue) then
begin
case AMakeEdit of
meMake:
begin
DM.MemTable_PropertyEd.Append;
PropFromMT.ID := GenNewID(tkCompPropRelED);
PropFromMT.IsNew := True;
end;
meEdit:
begin
DM.MemTable_PropertyEd.Edit;
PropFromMT.IsModified := True;
end;
end;
DM.MemTable_PropertyEd.DisableControls;
if DM.MemTable_PropertyEd.State <> dsBrowse then
begin
DM.SetPropertyToTable(DM.DataSource_MT_PropertyEd, PropFromMT);
DM.MemTable_PropertyEd.Post;
end;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//if AMakeEdit = meEdit then
if DM.MemTable_PropertyEd.FieldByName(fnIDDataType).AsInteger = dtCompStateType then
begin
LoadComponIcon(GIDObjectIcon, GGUIDObjectIcon, Image_CompIcons); //RefreshCompIcons(StrToInt(F_NormBase.F_CaseForm.GValue));
LoadComponIcon(GIDSymbolImage, GGUIDSymbolImage, Image_Symbol);
end;
if OldValue <> PropFromMT.Value then
DefineNormResByProperty(@PropFromMT);
GChangedProperty := true;
if GUseLiteFunctional then
if AMakeEdit = meEdit then
Self.DefineUniversalInterfacesByProperty(@PropFromMT, ComponentType.SysName); //Self.DefineUniversalInterfacesByProperty(@PropFromMT, '');
Self.OnSetComponPropertyVal(AMakeEdit, @PropFromMT, @OldPropFromMT);
FieldsNames := TStringList.Create;
try
FieldsNames.Clear;
FieldsNames.Add(fnName);
FieldsNames.Add(fnSysName);
FieldsNames.Add(fnName);
FieldsNames.Add(fnIzm);
FieldsNames.Add(fnDescription);
FieldsNames.Add(fnIDDataType);
RefreshFields(TF_Main(GForm).DM.MemTable_PropertyEd, tnProperties, fnIDProperty, fnID, FieldsNames);
finally
FreeAndNil(FieldsNames);
DM.MemTable_PropertyEd.EnableControls;
end;
end;
end;
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.LoadComponIcon(AIDObjectIcon: Integer; AGUIDObjectIcon: string; ATrgImage: TcxImage);
var
Stream: TMemoryStream;
IconType: Integer;
// RecNo: Integer;
begin
Stream := nil;
if not Assigned(ATrgImage) then
Exit; ///// EXIT /////
ClearcxImage(ATrgImage);
if (AIDObjectIcon < 1) and (AGUIDObjectIcon = '') then
Exit; ///// EXIT /////
try
//*** <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
IconType := GetSignType;
if TF_Main(GForm).GDBMode = bkNormBase then
Stream := F_NormBase.DM.GetComponIconByIconType(AIDObjectIcon, IconType, ieBMP)
else
Stream := FSpravochnik.GetObjectIconByIconType(AGUIDObjectIcon, IconType, ieBMP);
if Assigned(Stream) then
begin
Stream.Position := 0;
ATrgImage.Picture.Bitmap.LoadFromStream(Stream);
FreeAndNil(Stream);
end;
except
on E: Exception do
AddExceptionToLog('TF_AddComponent.LoadComponIcon: ' + E.Message);
end;
end;
procedure TF_AddComponent.LoadImageFromObjectIcons(var AIDIcon: Integer; var AGUIDObjectIcon: string; AImage: TcxImage);
begin
try
//DataSetLocateByID(F_NormBase.DM.DataSet_OBJECT_ICONS, AIDIcon);
if TF_Main(GForm).GDBMode = bkNormBase then
begin
F_NormBase.F_CaseForm.GIDNotDel := AIDIcon;
F_NormBase.F_CaseForm.GIDToLocate := AIDIcon;
//F_NormBase.F_CaseForm.GViewKind := vkObjectIcons;
//F_NormBase.F_CaseForm.GFormMode := fmEdit;
//if F_NormBase.F_CaseForm.ShowModal = mrOK then
if F_NormBase.F_CaseForm.Execute(vkObjectIcons, fmEdit) then
begin
AIDIcon := F_NormBase.DM.DataSet_OBJECT_ICONS.FN('ID').AsInteger;
AGUIDObjectIcon := F_NormBase.DM.DataSet_OBJECT_ICONS.FN(fnGUID).AsString;
LoadComponIcon(AIDIcon, AGUIDObjectIcon, AImage);
GWasChanging := true;
end;
end
else if TF_Main(GForm).GDBMode = bkProjectManager then
begin
if ShowCurrProjectProperties(vkObjectIcons, AGUIDObjectIcon) then
if FProjSpravochnik.LastObjectIcon <> nil then
begin
AIDIcon := FProjSpravochnik.LastObjectIcon.ID;
AGUIDObjectIcon := FProjSpravochnik.LastObjectIcon.GUID;
LoadComponIcon(FProjSpravochnik.LastObjectIcon.ID, FProjSpravochnik.LastObjectIcon.GUID, AImage);
GWasChanging := true;
end;
end;
except
on E: Exception do
AddExceptionToLog('TF_AddComponent.LoadImageFromObjectIcons: ' + E.Message);
end;
end;
procedure TF_AddComponent.RefreshCompIcons(AID_CompStateType: Integer);
//var NPP_ID: Integer;
begin
{with F_NormBase.DM do
if MemTable_ComponentIcons.RecordCount > 0 then
begin
NPP_ID := MemTable_ComponentIcons.FieldByName('NPP_ID_OBJECT_ICON').AsInteger;
SelectCompIconsByNPP(NPP_ID);
SearchRecordMT(MemTable_ComponentIcons, 'ID_COMP_STATE_TYPE', AID_CompStateType);
LoadComponIcon;
end; }
end;
procedure TF_AddComponent.AddInterfaceToMT(AmeInterfaceRel: TmeInterfaceRel);
var
IsPort: Integer;
MemTable_InterfOrPort: TkbmMemTable;
i: Integer;
NewIDList: TList;
NumPair: Integer;
Side: Integer;
ptrNewID: ^Integer;
ID1: Integer;
ID2: Integer;
Npp: Integer;
NppPort: Integer;
{function GetMaxNumPair: Integer;
var
CurrMaxNumPair: Integer;
begin
Result := 0;
CurrMaxNumPair := 0;
with MemTable_InterfOrPort do
begin
First;
while Not Eof do
begin
if FieldByName('num_pair').AsInteger > CurrMaxNumPair then
CurrMaxNumPair := FieldByName('num_pair').AsInteger;
Next;
end;
end;
result := CurrMaxNumPair;
end;}
function GetInterfCountByNumPair(ANumPair: Integer): Integer;
var
CurrCount: Integer;
begin
Result := 0;
CurrCount := 0;
with MemTable_InterfOrPort do
begin
First;
while not Eof do
begin
if FieldByName('num_pair').AsInteger = ANumPair then
CurrCount := CurrCount + 1;
Next;
end;
end;
Result := CurrCount;
end;
function GetNewNumPair: Integer;
var
LastNumPair: Integer;
CountInterfPair: Integer;
i: Integer;
begin
{Result := 0;
with MemTable_InterfOrPort do
begin
//*** <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
LastNumPair := GetMaxNumPair(MemTable_InterfOrPort);
if LastNumPair > 0 then
begin
for i := 0 to LastNumPair - 1 do
begin
CountInterfPair := GetInterfCountByNumPair(i+1);
if (CountInterfPair mod 2 <> 0) or (CountInterfPair = 0) then
begin
Result := i+1;
Exit; ///// EXIT /////
end;
end;
Result := LastNumPair + 1;
end
else
Result := 1;
end;}
Result := TF_Main(GForm).DM.GetInterfaceNewNumPairFromMT(MemTable_InterfOrPort);
end;
function GetMaxInterfNppFromMT(AMemTable: TkbmmemTable): Integer;
var
i: Integer;
RecordNo: Integer;
MaxNpp: Integer;
begin
Result := 0;
RecordNo := AMemTable.RecNo;
MaxNpp := 0;
if AMemTable.RecordCount > 0 then // Tolik 28/12/2019 --
begin
try
for i := 0 to AMemTable.RecordCount - 1 do
begin
AMemTable.RecNo := i + 1;
if AMemTable.FieldByName(fnNpp).AsInteger > MaxNpp then
if AMemTable.FieldByName(fnIDInterface).AsInteger = AmeInterfaceRel.ID_INTERFACE then
MaxNpp := AMemTable.FieldByName(fnNpp).AsInteger;
end;
Result := MaxNpp;
finally
AMemTable.RecNo := RecordNo;
end;
end;
end;
function GetLastNpp: Integer;
var //i: Integer;
// RecordNo: Integer;
MaxNpp: Integer;
begin
Result := 0;
MaxNpp := GetMaxInterfNppFromMT(TF_Main(GForm).DM.MemTable_InterfaceRelEd);
Result := MaxNpp;
MaxNpp := GetMaxInterfNppFromMT(TF_Main(GForm).DM.MemTable_PortEd);
if MaxNpp > Result then
Result := MaxNpp;
{MaxNpp := 0;
with TF_Main(GForm).DM.MemTable_InterfaceRelEd do
try
RecordNo := RecNo;
for i := 0 to RecordCount - 1 do
begin
RecNo := i+1;
if FieldByName(fnNpp).AsInteger > MaxNpp then
MaxNpp := FieldByName(fnNpp).AsInteger;
end;
finally
RecNo := RecordNo;
end;
with TF_Main(GForm).DM.MemTable_PortEd do
try
RecordNo := RecNo;
for i := 0 to RecordCount - 1 do
begin
RecNo := i+1;
if FieldByName(fnNpp).AsInteger > MaxNpp then
MaxNpp := FieldByName(fnNpp).AsInteger;
end;
finally
RecNo := RecordNo;
end;
Result := MaxNpp;}
end;
procedure SetIDAdverse(AIDInterface, AIDAdverse: Integer);
begin
with MemTable_InterfOrPort do
if SearchRecordMT(MemTable_InterfOrPort, 'ID', AIDInterface) then
begin
Edit;
FieldByName('id_adverse').AsInteger := AIDAdverse;
Post;
end;
end;
begin
NewIDList := nil;
MemTable_InterfOrPort := nil;
Side := 0;
try
try
//GT_Interface.BeginUpdate;
Npp := 0;
NppPort := 0;
IsPort := AmeInterfaceRel.IsPort;
case IsPort of
biTrue:
MemTable_InterfOrPort := TF_Main(GForm).DM.MemTable_PortEd;
biFalse:
begin
MemTable_InterfOrPort := TF_Main(GForm).DM.MemTable_InterfaceRelEd;
NppPort := 0;
end;
end;
if Assigned(MemTable_InterfOrPort) then
begin
MemTable_InterfOrPort.DisableControls;
try
if TF_Main(GForm).GDBMode = bkProjectManager then
NppPort := GLastPort;
if (AmeInterfaceRel.IsLineCompon = biTrue) and
(AmeInterfaceRel.TYPEI = itFunctional) and
(AmeInterfaceRel.ServiceIsPair = true) then
begin
NewIDList := TList.Create;
NumPair := 1;
end
else
NumPair := 0;
//if AmeInterfaceRel.TYPEI = itFunctional then
Npp := GetLastNpp;
with MemTable_InterfOrPort do
begin
for i := 0 to AmeInterfaceRel.Count - 1 do
begin
if (AmeInterfaceRel.IsLineCompon = biTrue) and
(AmeInterfaceRel.TYPEI = itFunctional) and
(AmeInterfaceRel.ServiceIsPair = true) then
begin
//NumPair := GetNewNumPair;
Side := (i mod 2) + 1;
if i mod 2 = 0 then
begin
Npp := Npp + 1;
NumPair := GetNewNumPair;
end;
end
else
begin
Npp := Npp + 1;
if AmeInterfaceRel.TYPEI = itFunctional then
begin
if AmeInterfaceRel.IsLineCompon = biTrue then
Side := AmeInterfaceRel.Side;
end
else
Side := stNoneSide;
NumPair := 0;
end;
Last;
Append;
FieldByName('id').AsInteger := GenNewID(tkInterfRelED);
FieldByName(fnIDComponent).AsInteger := GIDComponent;
FieldByName(fnNpp).AsInteger := Npp;
FieldByName('Name').AsString := AmeInterfaceRel.Name;
FieldByName('TypeI').AsInteger := AmeInterfaceRel.TYPEI;
FieldByName('Kind').AsInteger := AmeInterfaceRel.Kind;
FieldByName('IsPort').AsInteger := AmeInterfaceRel.IsPort;
FieldByName('Gender').AsInteger := AmeInterfaceRel.GENDER;
FieldByName('ID_Interface').AsInteger := AmeInterfaceRel.ID_INTERFACE;
FieldByName(fnGuidInterface).AsString := AmeInterfaceRel.GUIDInterface;
FieldByName('Multiple').AsInteger := AmeInterfaceRel.Multiple;
FieldByName('IsBusy').AsInteger := 0;
FieldByName('Color').AsInteger := AmeInterfaceRel.Color;
FieldByName(fnNotice).AsString := AmeInterfaceRel.Notice;
FieldByName(fnKolvo).AsInteger := AmeInterfaceRel.Kolvo;
FieldByName(fnKolvoBusy).AsInteger := 0;
FieldByName(fnSignType).AsInteger := AmeInterfaceRel.SignType;
FieldByName(fnConnToAnyGender).AsInteger := AmeInterfaceRel.ConnToAnyGender;
FieldByName(fnSideSection).AsString := AmeInterfaceRel.SideSection;
FieldByName('isNative').AsBoolean := True;
case IsPort of
biTrue:
if TF_Main(GForm).GDBMode = bkProjectManager then
begin
//NppPort := NppPort + 1;
//GLastPort := GLastPort + 1;
NppPort := NppPort + 1;
FieldByName('npp_port').AsInteger := NppPort;
NppPort := NppPort + AmeInterfaceRel.Kolvo - 1;
GLastPort := NppPort;
end;
biFalse:
begin
FieldByName('ValueI').AsFloat := AmeInterfaceRel.ValueI;
FieldByName('Num_Pair').AsInteger := NumPair;
FieldByName('Side').AsInteger := Side;
TF_Main(GForm).DM.DefineInterfaceNumPairsStr(MemTable_InterfOrPort, NumPair, AmeInterfaceRel.Kolvo);
end;
end;
FieldByName('isNew').AsBoolean := true;
FieldByName('isModified').AsBoolean := false;
Post;
if FieldByName('ID').AsInteger <= 1 then
with TF_Main(GForm).DM do
begin
//SetSQLToQuery(scsQSelect, ' select * from GET_LAST_INTERF_REL_ID ');
//Edit;
//FieldByName('ID').AsInteger := scsQSelect.GetFNAsInteger('LASTID') + 1;
//Post;
Edit;
FieldByName('ID').AsInteger := GetLastInterfRelID(TF_Main(GForm).GDBMode) + 1;
Post;
end;
if NewIDList <> nil then
begin
New(ptrNewID);
ptrNewID^ := FieldByName('ID').AsInteger;
NewIDList.Add(ptrNewID);
end;
GChangedInterface := true;
EnableButtons;
end;
if NewIDList <> nil then
begin
i := 0;
while i < NewIDList.Count do
begin
ID1 := Integer(NewIDList.Items[i]^);
ID2 := Integer(NewIDList.Items[i + 1]^);
SetIDAdverse(ID1, ID2);
SetIDAdverse(ID2, ID1);
i := i + 2;
end;
end;
end;
finally
MemTable_InterfOrPort.EnableControls;
end;
end;
except
on E: Exception do
AddExceptionToLog('TF_AddComponent.AddInterfaceToMT: ' + E.Message);
end;
finally
//GT_Interface.EndUpdate;
if NewIDList <> nil then
// Tolik 03/10/2017 --
// FreeAndNil(NewIDList);
FreeAndDisposeList(NewIDList); // <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>
//
end;
end;
procedure TF_AddComponent.CalcNormCost;
var
SCSNorm: TSCSNorm;
ResourceRel: TSCSResourceRel;
RecNoResource: Integer;
i: Integer;
begin
with TF_Main(GForm).DM do
begin
RecNoResource := MemTable_ResourcesRelEd.RecNo;
SCSNorm := TSCSNorm.Create(GForm, ntProj);
SCSNorm.Kolvo := -1;
SCSNorm.Price := -1;
try
try
RecNoResource := MemTable_ResourcesRelEd.RecNo;
//GT_Resources.DataController.BeginUpdate;
if MemTable_NormsEd.RecordCount > 0 then // Tolik 28/12/2019 --
begin
SCSNorm.Kolvo := MemTable_NormsEd.FieldByName(fnKolvo).AsFloat;
SCSNorm.Price := MemTable_NormsEd.FieldByName(fnPrice).AsFloat;
end;
{MemTable_ResourcesRelEd.First;
while Not MemTable_ResourcesRelEd.Eof do
begin
if MemTable_ResourcesRelEd.FieldByName('IsOn').AsInteger = biTrue then
begin
New(ptrResource);
ptrResource.IsOn := MemTable_ResourcesRelEd.FieldByName('IsOn').AsInteger;
ptrResource.Cost := MemTable_ResourcesRelEd.FieldByName('Cost').AsFloat;
SCSNorm.Resources.Add(ptrResource);
end;
MemTable_ResourcesRelEd.Next;
end; }
if GT_Resources.DataController.RecordCount > 0 then // Tolik 28/12/2019 --
begin
for i := 0 to GT_Resources.DataController.RecordCount - 1 do
begin
if GT_Resources.DataController.Values[i, fiResourceIsOn] = biTrue then
begin
ResourceRel := TSCSResourceRel.Create(GForm, ntProj);
ResourceRel.IsOn := GT_Resources.DataController.Values[i, fiResourceIsOn];
ResourceRel.Price := GT_Resources.DataController.Values[i, fiResourcePrice];
ResourceRel.AdditionalPrice := GT_Resources.DataController.Values[i, fiResourceAdditionalPrice];
ResourceRel.Kolvo := GT_Resources.DataController.Values[i, fiResourceKolvo];
ResourceRel.Cost := GT_Resources.DataController.Values[i, fiResourceCost];
SCSNorm.Resources.Add(ResourceRel);
end;
end;
end;
if SCSNorm.Kolvo > 0 then // Tolik 28/12/2019 --
begin
SCSNorm.CalcTotalCost(true);
MemTable_NormsEd.Edit;
MemTable_NormsEd.FieldByName(fnCost).AsFloat := SCSNorm.Cost;
MemTable_NormsEd.FieldByName('total_cost').AsFloat := SCSNorm.TotalCost;
MemTable_NormsEd.FieldByName('isModified').AsBoolean := true;
MemTable_NormsEd.Post;
end;
CalcWorkCost;
except
on E: Exception do
AddExceptionToLog('TF_AddComponent.CalcNormCost: ' + E.Message);
end;
finally
SCSNorm.Free;
if RecNoResource > -1 then // Tolik 28/12/2019 --
MemTable_ResourcesRelEd.RecNo := RecNoResource;
//GT_Resources.DataController.EndUpdate;
end;
end;
end;
procedure TF_AddComponent.CalcWorkCost;
var
SCSNorms: TSCSNormsResources;
SCSNorm: TSCSNorm;
i: Integer;
begin
SCSNorms := TSCSNormsResources.Create(GForm, ctkComponent {GMasterTableKind});
try
try
SCSNorms.IDMaster := GIDComponent; //FIDMaster;
if GT_NORMS.DataController.RecordCount > 0 then // Tolik 28/12/2019 --
begin
for i := 0 to GT_NORMS.DataController.RecordCount - 1 do
begin
if GT_NORMS.DataController.Values[i, 1] = biTrue then //*** <20><><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
begin
SCSNorm := TSCSNorm.Create(GForm, ntProj);
SCSNorm.IsOn := GT_NORMS.DataController.Values[i, fiNormIsOn];
SCSNorm.TotalCost := GT_NORMS.DataController.Values[i, fiNormTotalCost];
SCSNorms.Norms.Add(SCSNorm);
end;
end;
end;
SCSNorms.CalcResourcesCost(false, false);
CurrencyEdit_ResourcesCost.Value := SCSNorms.TotalCost;
except
on E: Exception do
AddExceptionToLog('TF_AddComponent.CalcWorkCost: ' + E.Message);
end;
finally
SCSNorms.Free;
end;
end;
procedure TF_AddComponent.ApplyChangedComponentType;
const
IDConstrInterf = 97;
var //*** <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MemTable_Prop: TkbmMemTable;
PrevComponType: TComponentType;
NewComponentType: TComponentType;
KeepIDList: TList;
IDComponType: Integer;
IDProperty: Integer;
IDCompPropRel: Integer;
ptrID: ^Integer;
ComponTypePropCount: Integer;
//*** <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HaveConstructive: Boolean;
HaveIDConstrInterf: Boolean;
RecNomber: Integer;
meInterfaceRel: TmeInterfaceRel;
TemplateComponent: TSCSComponent;
LoadedFromTemplate: Boolean;
begin
try
IDComponType := GetIDFromComboBox(ComboBox_ComponentType);
if IDComponType < 1 then
Exit; ///// EXIT /////
LoadedFromTemplate := false;
PrevComponType := FCurrComponentType;
NewComponentType := TF_Main(GForm).FNormBase.DM.GetComponentType(IDComponType);
if FCurrComponentType.GUID <> NewComponentType.GUID then
begin
if Edit_Name.Text = '' then
Edit_Name.Text := NewComponentType.Name;
//18.04.2013 if (GUseLiteFunctional or (GUseComponTemplates and cbImportFromTemplate.Checked)) and
if (GLiteVersion or (GUseComponTemplates and cbImportFromTemplate.Checked)) and
(TF_Main(GForm).GDBMode = bkNormBase) then
begin
ProcessMessagesEx;
TemplateComponent := TSCSComponent.Create(GForm);
try
if GUseComponTemplates and (NewComponentType.IDComponTemplate > 0) and cbImportFromTemplate.Checked then
begin
{//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
with TF_Main(GForm).DM do
begin
//*** <20><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RemoveNoNativeInterfacesFromMemTable(MemTable_PortEd);
RemoveNoNativeInterfacesFromMemTable(MemTable_InterfaceRelEd);
SetAsDeletedMTRecords(MemTable_PortEd, MemTable_PortInterfRelEd, GDeletedInterfRel, GDeletedPortInterfRels);
SetAsDeletedMTRecords(MemTable_InterfaceRelEd, nil, GDeletedInterfRel, nil);
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SetAsDeletedMTRecords(MemTable_CableCanalConnectorsEd, nil, GDeletedCableCanalConnectors, nil);
//*** <20><><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SetAsDeletedMTRecords(mtCrossConnectionEd, nil, GDeletedCrossConnections, nil);
end;
TemplateComponent.LoadComponentByID(NewComponentType.IDComponTemplate, false);
TemplateComponent.LoadComponentData([cdCableCanalConnectors,
//cdConections,
cdCrossConnections,
cdProperties,
cdInterfaces,
cdComponentType,
cdNorms,
cdResources]);
TemplateComponent.SetPortInterfRelInterfaces;
TemplateComponent.SetInterfacesParallel;
SendComponentToForm(TemplateComponent, true);
LoadedFromTemplate := true; }
ImportComponentByID(NewComponentType.IDComponTemplate);
LoadedFromTemplate := true;
end
else
begin
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
with TF_Main(GForm).DM do
SetAsDeletedMTRecords(MemTable_PropertyEd, nil, GDeletedPropRel, nil);
TemplateComponent.ComponentType := NewComponentType;
TemplateComponent.ID_ComponentType := NewComponentType.ID;
TemplateComponent.GUIDComponentType := NewComponentType.GUID;
TemplateComponent.LoadPropertyesFromComponentType;
TF_Main(GForm).DM.FillMemTablePropFromList(TF_Main(GForm).DM.MemTable_PropertyEd, TemplateComponent.Properties, true);
if NewComponentType.IDDesignIcon > 0 then
begin
GIDObjectIcon := NewComponentType.IDDesignIcon;
LoadComponIcon(NewComponentType.IDDesignIcon, '', Image_CompIcons);
end;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
if GUseLiteFunctional then
begin
DeleteAllPortsAndInterf;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
DefineUniversalInterfacesByProperty(nil, NewComponentType.SysName);
end;
end;
finally
TemplateComponent.Free;
end;
end
else
begin
//GT_NORMSExpenseForLength.Visible := NewComponentType.IsLine = biTrue;
//VisibleInterfaceColumns(NewComponentType.IsLine = biTrue);
//SetVisibleByIsLine(NewComponentType.IsLine);
end;
if not LoadedFromTemplate then
begin
//*** <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD>-<2D><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD>-<2D><> <20><><EFBFBD>-<2D>
if (NewComponentType.IsLine = biTrue) and (FCurrComponentType.IsLine = biFalse) then
begin
//*** <20><><EFBFBD><EFBFBD><EFBFBD>
TF_Main(GForm).DM.RemoveNoNativeInterfacesFromMemTable(TF_Main(GForm).DM.MemTable_PortEd);
SetAsDeletedMTRecords(TF_Main(GForm).DM.MemTable_PortEd, TF_Main(GForm).DM.MemTable_PortInterfRelEd, GDeletedInterfRel, GDeletedPortInterfRels);
TF_Main(GForm).DM.MemTable_PortEd.Active := false;
TF_Main(GForm).DM.MemTable_PortEd.Active := True;
TF_Main(GForm).DM.MemTable_PortInterfRelEd.Active := false;
TF_Main(GForm).DM.MemTable_PortInterfRelEd.Active := True;
//*** <20><><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SetAsDeletedMTRecords(TF_Main(GForm).DM.mtCrossConnectionEd, nil, GDeletedCrossConnections, nil);
TF_Main(GForm).DM.mtCrossConnectionEd.Active := false;
TF_Main(GForm).DM.mtCrossConnectionEd.Active := True;
end;
// <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (NewComponentType.SysName <> ctsnCableChannel) and (FCurrComponentType.SysName = ctsnCableChannel) then
begin
SetAsDeletedMTRecords(TF_Main(GForm).DM.MemTable_CableCanalConnectorsEd, nil, GDeletedCableCanalConnectors, nil);
TF_Main(GForm).DM.MemTable_CableCanalConnectorsEd.Active := false;
TF_Main(GForm).DM.MemTable_CableCanalConnectorsEd.Active := true;
end;
VisibleInterfaceColumns(NewComponentType.IsLine = biTrue);
SetVisibleByIsLine(NewComponentType.IsLine);
end;
FCurrComponentType := NewComponentType;
DefineSupplyPriceByComponActualPrice;
//21.08.2012 - <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><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> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if pcApplyForAll.ActivePage = tsApplyInNB then
begin
if cbApplyForCurrentDir.Checked then
cbApplyForCurrentDirPropertiesChange(cbApplyForCurrentDir);
end
else
if pcApplyForAll.ActivePage = tsApplyInPM then
begin
if CheckBox_ApplyForProject.Checked then
CheckBox_ApplyForProjectPropertiesChange(CheckBox_ApplyForProject)
else
if CheckBox_ApplyForList.Checked then
CheckBox_ApplyForListPropertiesChange(CheckBox_ApplyForList);
end;
EnableButtons;
SetControls(@PrevComponType);
end;
(*
IDComponType := GetIDFromComboBox(ComboBox_ComponentType);
if IDComponType < 1 then
Exit; ///// EXIT /////
NewComponentType := TF_Main(GForm).FNormBase.DM.GetComponentType(IDComponType);
if Edit_Name.Text = '' then
Edit_Name.Text := NewComponentType.NAME;
//GT_NORMSExpenseForLength.Visible := NewComponentType.IsLine = biTrue;
VisibleInterfaceColumns(NewComponentType.IsLine = biTrue);
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KeepIDList := TList.Create;
TF_Main(GForm).DM.MemTable_PropertyEd.DisableControls;
try
with TF_Main(GForm).DM do
begin
MemTable_PropertyEd.Last;
while Not MemTable_PropertyEd.Bof do
begin
IDProperty := MemTable_PropertyEd.FieldByName('ID_PROPERTY').AsInteger;
IDCompPropRel := MemTable_PropertyEd.FieldByName('ID').AsInteger;
ComponTypePropCount := 0;
with TF_Main(GForm).FNormBase.DM do
begin
SetSQLToQuery(scsQSelect, ' select count(id) from comp_type_prop_relation '+
' where (id_component_type = '''+IntToStr(IDComponType)+''') and '+
' (id_property = '''+IntToStr(IDProperty)+''') ');
ComponTypePropCount := scsQSelect.GetFNAsInteger('count');
end;
if ComponTypePropCount = 0 then
begin
if MemTable_PropertyEd.FieldByName(fnIsNew).AsBoolean = false then
GDeletedPropRel.Add(IntToStr(MemTable_PropertyEd.FieldByName('ID').AsInteger));
MemTable_PropertyEd.Delete;
end
else
begin
New(ptrID);
ptrID^ := IDProperty;
KeepIDList.Add(ptrID);
MemTable_PropertyEd.Prior;
end;
end;
MemTable_Prop := MemTable_PropertyEd;
end;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
with TF_Main(GForm).FNormBase.DM do
begin
SetSQLToQuery(scsQSelect, ' SELECT ID_PROPERTY, PVALUE, TAKE_INTO_CONNECT, TAKE_INTO_JOIN, '+
' NAME, SYSNAME, IZM, DESCRIPTION, ID_DATA_TYPE '+
' FROM COMP_TYPE_PROP_RELATION, PROPERTIES '+
' WHERE (ID_COMPONENT_TYPE = '''+IntToStr(IDComponType)+''') AND (PROPERTIES.ID = ID_PROPERTY) ');
while Not scsQSelect.Eof do
begin
if CheckNoIDinList(scsQSelect.GetFNAsInteger('ID_PROPERTY'), KeepIDList) then
begin
MemTable_Prop.Append;
MemTable_Prop.FieldByName('Name').AsString := scsQSelect.GetFNAsString('Name');
MemTable_Prop.FieldByName('SysName').AsString := scsQSelect.GetFNAsString('SysName');
MemTable_Prop.FieldByName('ID_PROPERTY').AsInteger := scsQSelect.GetFNAsInteger('ID_PROPERTY');
MemTable_Prop.FieldByName('PVALUE').AsString := scsQSelect.GetFNAsString('PVALUE');
MemTable_Prop.FieldByName('Izm').AsString := scsQSelect.GetFNAsString('Izm');
MemTable_Prop.FieldByName('TAKE_INTO_CONNECT').AsInteger := scsQSelect.GetFNAsInteger('TAKE_INTO_CONNECT');
MemTable_Prop.FieldByName('TAKE_INTO_JOIN').AsInteger := scsQSelect.GetFNAsInteger('TAKE_INTO_JOIN');
MemTable_Prop.FieldByName('Description').AsString := scsQSelect.GetFNAsString('Description');
MemTable_Prop.FieldByName('ID_Data_Type').AsInteger := scsQSelect.GetFNAsInteger('ID_Data_Type');
MemTable_Prop.FieldByName(fnIsDefault).AsInteger := biTrue;
MemTable_Prop.FieldByName('IsNew').AsBoolean := True;
MemTable_Prop.Post;
end;
scsQSelect.Next;
end;
MemTable_Prop.First;
end;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
HaveIDConstrInterf := false;
HaveConstructive := false;
with TF_Main(GForm).DM do
begin
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RecNomber := MemTable_InterfaceRelEd.RecNo;
MemTable_InterfaceRelEd.Last;
while Not MemTable_InterfaceRelEd.Bof do
begin
if (NewComponentType.IsLine = biFalse) and
(MemTable_InterfaceRelEd.FieldByName('ID_INTERFACE').AsInteger = IDConstrInterf) then
begin
if MemTable_InterfaceRelEd.FieldByName('isNew').AsBoolean = false then
GDeletedInterfRel.Add(IntToStr(MemTable_InterfaceRelEd.FieldByName('ID').AsInteger));
MemTable_InterfaceRelEd.Delete;
Break;
end
else
begin
if NewComponentType.IsLine = biTrue then
if MemTable_InterfaceRelEd.FieldByName('TypeI').AsInteger = itConstructive then
begin
HaveConstructive := true;
Break;
end;
MemTable_InterfaceRelEd.Prior;
end;
end;
MemTable_InterfaceRelEd.RecNo := RecNomber;
if (NewComponentType.IsLine = biTrue) and Not(HaveConstructive) then
begin
with F_NormBase.DM do
begin
SetSQLToQuery(scsQSelect, ' select name from interface where id = '''+IntToStr(IDConstrInterf)+''' ');
meInterfaceRel.NAME := scsQSelect.GetFNAsString('name');
end;
if meInterfaceRel.NAME <> '' then
begin
meInterfaceRel.IsLineCompon := biTrue;
meInterfaceRel.TypeI := itConstructive;
meInterfaceRel.Gender := gtMale;
meInterfaceRel.ID_Interface := IDConstrInterf;
meInterfaceRel.Kolvo := 1;
meInterfaceRel.Multiple := biFalse;
meInterfaceRel.IsBusy := biFalse;
meInterfaceRel.ValueI := 10;
AddInterfaceToMT(meInterfaceRel);
end;
end;
end;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
LoadComponIcon(NewComponentType.IDDesignIcon, Image_Symbol);
GIDSymbolImage := NewComponentType.IDDesignIcon;
SetControls;
SetVisibleByIsLine(NewComponentType.IsLine);
{case NewComponentType.IsLine of
biFalse:
begin
Label_MaxLength.Visible := false;
SpinEdit_MaxLength.Visible := false;
Label_UserLength.Visible := False;
SpinEdit_UserLength.Visible := false;
end;
biTrue:
begin
Label_MaxLength.Visible := true;
SpinEdit_MaxLength.Visible := true;
Label_UserLength.Visible := True;
SpinEdit_UserLength.Visible := True;
end;
end;}
EnableButtons;
GWasChanging := true;
finally
TF_Main(GForm).DM.MemTable_PropertyEd.EnableControls;
FreeList(KeepIDList);
//GT_Property.EndUpdate;
end; *)
except
on E: Exception do
AddExceptionToLog('TF_AddComponent.ApplyChangedComponentType: ' + E.Message);
end;
end;
function TF_AddComponent.ReadOnly: Boolean;
begin
Result := false;
if GFormMode = fmView then
begin
Result := true;
MessageModal(cAddComponent_Msg21, ApplicationName, MB_OK or MB_ICONINFORMATION);
end;
end;
procedure TF_AddComponent.LoadNormsResources(AAsNew: Boolean);
var //qSQL: String;
SCSComponent: TSCSComponent;
OutNormsResources: TSCSNormsResources;
NormsResources: TSCSNormsResources;
//ObjectLength: Double;
//LevelCatalogID: Integer;
ptrObjectCurrency: PObjectCurrencyRel;
i, j: Integer;
SCSNorm: TSCSNorm;
ResourceRel: TSCSResourceRel;
RecCount: Integer;
NppFinded: Boolean;
//SavedMasterSource: TDataSource;
begin
DefineComponCurrencies;
//if TF_MAIN(GForm).GDBMode = bkNormBase then
//begin
// IDCatalog := 0;
// if GFormMode = fmMake then
// IDCatalog := TF_Main(GForm).GSCSBase.SCSCatalog.ID
// else
// IDCatalog := TF_Main(GForm).DM.GetComponCatalogOwnerID(GIDComponent);
// FNBCurrency := TF_Main(GForm).FNormBase.GCurrencyM;
// //LevelCatalogID := TF_Main(GForm).DM.GetParentCatalogIDByLevel(IDCatalog, dirCurrencyLevel);
// //ptrObjectCurrency := TF_Main(GForm).DM.GetObjectCurrencyByIDCurrency(LevelCatalogID, FNBCurrency.ID);
// ptrObjectCurrency := TF_Main(GForm).DM.GetCatalogCurrencyByCurrencyID(IDCatalog, TF_Main(GForm).FNormBase.GCurrencyM.ID);
// if ptrObjectCurrency <> nil then
// begin
// FNBCurrency := ptrObjectCurrency.Data;
// FreeMem(ptrObjectCurrency);
// end;
// //FNBCurrency := TF_Main(GForm).FNormBase.DM.get GCurrencyM;
//end
//else
//// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD>.
//if TF_MAIN(GForm).GDBMode = bkProjectManager then
// FNBCurrency := TF_Main(GForm).FNormBase.GCurrencyM;
OutNormsResources := nil;
SCSComponent := nil;
if TF_Main(GForm).GDBMode = bkProjectManager then
begin
SCSComponent := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(GIDComponent);
if Assigned(SCSComponent) then
OutNormsResources := SCSComponent.NormsResources;
end;
GT_NORMS.OnFocusedRecordChanged := nil;
with TF_Main(GForm).DM do
begin
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
//GT_NORMSCost.Properties.
{
SavedMasterSource := MemTable_ResourcesRelEd.MasterSource;
MemTable_ResourcesRelEd.MasterSource := nil;
MemTable_ResourcesRelEd.Active := false;
MemTable_ResourcesRelEd.Active := true;
MemTable_NormsEd.Active := false;
MemTable_NormsEd.Active := true;
MemTable_ResourcesRelEd.MasterSource := SavedMasterSource;
}
{MemTable_NormsEd.Active := false;
MemTable_NormsEd.Active := true;
MemTable_ResourcesRelEd.Active := false;
MemTable_ResourcesRelEd.Active := true;}
MemTable_ResourcesRelEd.Active := false;
MemTable_NormsEd.Active := false;
MemTable_NormsEd.Active := true;
MemTable_ResourcesRelEd.Active := true;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
NormsResources := nil;
FOutNormsResources := OutNormsResources;
if not Assigned(OutNormsResources) then
begin
NormsResources := TSCSNormsResources.Create(GForm, ctkComponent);
NormsResources.IDMaster := GIDComponent;
NormsResources.LoadNorms(true, true);
NormsResources.LoadResources(True);
end
else
NormsResources := OutNormsResources;
if Assigned(NormsResources) then
begin
NormsResources.IDMaster := GIDComponent;
//NormsResources.Length := ObjectLength;
NormsResources.CalcResourcesCost(true, true);
{MemTable_NormsEd.Active := false;
MemTable_NormsEd.Active := true;
MemTable_ResourcesRelEd.Active := false;
MemTable_ResourcesRelEd.Active := true; }
for j := 0 to NormsResources.Norms.Count - 1 do
begin
SCSNorm := NormsResources.Norms.Items[j];
SCSNorm.IsNew := AAsNew;
LoadFromNormToMT(SCSNorm, MemTable_NormsEd, meNone, -1, FTraccaLength, nil); //Self.LoadFromNormToMT(SCSNorm, meNone, -1);
end;
for j := 0 to NormsResources.Resources.Count - 1 do
begin
ResourceRel := NormsResources.Resources.Items[j];
ResourceRel.IsNew := AAsNew;
LoadFromResourceToMT(ResourceRel, MemTable_NormsEd, meNone, tkNormEd, FTraccaLength, nil); //Self.LoadFromResourceToMT(ResourceRel, meNone, tkNormEd);
end;
{RecCount := NormsResources.Norms.Count + NormsResources.Resources.Count;
for i := 0 to RecCount - 1 do
begin
NppFinded := false;
for j := 0 to NormsResources.Norms.Count - 1 do
begin
SCSNorm := NormsResources.Norms.Items[j];
//if SCSNorm.NPP = i + 1 then
begin
LoadFromNormToMT(SCSNorm, meNone, -1);
NppFinded := true;
Break;
end;
end;
if Not NppFinded then
for j := 0 to NormsResources.Resources.Count - 1 do
begin
ResourceRel := NormsResources.Resources.Items[j];
//if ResourceRel.NPP = i + 1 then
begin
LoadFromResourceToMT(ResourceRel, meNone, tkNormEd);
Break;
end;
end;
end;}
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//GComponPrice := 0;
//if NormsResources.Resources.Count > 0 then
// GComponPrice := TSCSResourceRel(NormsResources.Resources[0]).Price;
//MemTable_NormsEd.First;
if not Assigned(OutNormsResources) then
NormsResources.Free;
end;
CalcWorkCost;
end;
GT_NORMS.OnFocusedRecordChanged := GT_NORMSFocusedRecordChanged;
TF_Main(GForm).DM.MemTable_NormsEd.First;
EnableEditDelNorm;
GDeletedNormID.Clear;
GDeletedResourceID.Clear;
end;
procedure TF_AddComponent.SaveNormsResources;
var
i: Integer;
//qSQL: String;
//MakeEdit: TMakeEdit;
//NormsFields: TStringList;
//ResourcesFields: TStringList;
//NormResourceRelFields: TStringList;
//CurrIDNorm: Integer;
//CurrIDResource: Integer;
NormResources: TSCSNormsResources;
SCSNorm: TSCSNorm;
ResourceRel: TSCSResourceRel;
//SCSComponent: TSCSComponent;
begin
with TF_Main(GForm).DM do
begin
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for i := 0 to GDeletedResourceID.Count - 1 do
begin
if TF_Main(GForm).GDBMode = bkNormBase then
DelResourceRelByID(GDeletedResourceID[i]);
if Assigned(FOutNormsResources) then
begin
ResourceRel := FOutNormsResources.Resources.GetResourceByID(GDeletedResourceID[i]);
if Assigned(ResourceRel) then
begin
FOutNormsResources.Resources.Remove(ResourceRel);
FreeAndNil(ResourceRel);
end;
end;
end;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
for i := 0 to GDeletedNormID.Count - 1 do
begin
if TF_Main(GForm).GDBMode = bkNormBase then
DelNormByID(GDeletedNormID[i]);
if Assigned(FOutNormsResources) then
begin
SCSNorm := FOutNormsResources.Norms.GetNormByID(GDeletedNormID[i]);
if Assigned(SCSNorm) then
begin
FOutNormsResources.Norms.Remove(SCSNorm);
FreeAndNil(SCSNorm);
end;
end;
end;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
NormResources := nil;
if not Assigned(FOutNormsResources) then
NormResources := TSCSNormsResources.Create(GForm, ctkComponent)
else
begin
NormResources := FOutNormsResources;
NormResources.Norms.Clear;
NormResources.Resources.Clear;
end;
if Assigned(NormResources) then
begin
MemTable_NormsEd.First;
while not MemTable_NormsEd.Eof do
begin
case TF_Main(GForm).DM.MemTable_NormsEd.FieldByName(fnIsResource).AsBoolean of
true: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
begin
ResourceRel := TSCSResourceRel.Create(GForm, ntProj);
LoadFromMTToResource(TF_Main(GForm).DM.MemTable_NormsEd, ResourceRel, tkNormEd); //LoadFromMTToResource(tkNormEd, ResourceRel);
NormResources.IDMaster := GIDComponent;
NormResources.Resources.Add(ResourceRel);
end;
false: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
begin
SCSNorm := TSCSNorm.Create(GForm, ntProj);
LoadFromMTToNorm(TF_Main(GForm).DM.MemTable_NormsEd, SCSNorm); //LoadFromMTToNorm(SCSNorm);
NormResources.Norms.Add(SCSNorm);
SCSNorm.IDMaster := GIDComponent;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MemTable_ResourcesRelEd.First;
while not MemTable_ResourcesRelEd.Eof do
begin
ResourceRel := TSCSResourceRel.Create(GForm, ntProj);
LoadFromMTToResource(MemTable_ResourcesRelEd, ResourceRel, tkResourceRelEd); //LoadFromMTToResource(tkResourceRelEd, ResourceRel);
SCSNorm.Resources.Add(ResourceRel);
MemTable_ResourcesRelEd.Next;
end;
end;
end;
MemTable_NormsEd.Next;
end;
NormResources.SaveByServiceFields(GIDComponent);
if not Assigned(FOutNormsResources) then
NormResources.Free;
end;
end;
end;
procedure TF_AddComponent.DelResourcesFromCurrNorm;
var
IDResource: Integer;
begin
with TF_Main(GForm).DM do
begin
MemTable_ResourcesRelEd.Last;
while not MemTable_ResourcesRelEd.Bof do
begin
IDResource := MemTable_ResourcesRelEd.FieldByName('id').AsInteger;
if MemTable_ResourcesRelEd.FieldByName('isNew').AsBoolean = false then
GDeletedResourceID.Add(IDResource);
MemTable_ResourcesRelEd.Delete;
end;
end;
end;
procedure TF_AddComponent.EnableEditDelNorm;
begin
if not TF_Main(GForm).DM.MemTable_NormsEd.Active or (TF_Main(GForm).DM.MemTable_NormsEd.RecordCount = 0) then
begin
Act_EditNormResource.Enabled := false;
Act_DeleteNormResource.Enabled := false;
end
else
begin
Act_EditNormResource.Enabled := true;
Act_DeleteNormResource.Enabled := true;
end;
EnableEditDelResource;
end;
procedure TF_AddComponent.EnableEditDelResource;
begin
if not TF_Main(GForm).DM.MemTable_NormsEd.Active or (TF_Main(GForm).DM.MemTable_NormsEd.RecordCount = 0) then
begin
Act_AddResource.Enabled := false;
Act_EditResource.Enabled := false;
Act_DelResource.Enabled := false;
end
else
begin
if TF_Main(GForm).DM.MemTable_NormsEd.FieldByName(fnIsResource).AsBoolean = true {TF_Main(GForm).DM.MemTable_NormsEd.RecNo = 1} {FieldByName('npp').AsInteger = 1} then
Act_AddResource.Enabled := false
else
Act_AddResource.Enabled := true;
if not TF_Main(GForm).DM.MemTable_ResourcesRelEd.Active or (TF_Main(GForm).DM.MemTable_ResourcesRelEd.RecordCount = 0) then
begin
Act_EditResource.Enabled := false;
Act_DelResource.Enabled := false;
end
else
begin
Act_EditResource.Enabled := true;
Act_DelResource.Enabled := true;
end;
end;
end;
function TF_AddComponent.GetExistsResourcesIDsFromCurrNorm: TIntList;
var
IDResource: Integer;
begin
Result := TIntList.Create;
with TF_Main(GForm).DM do
begin
MemTable_ResourcesRelEd.Last;
while not MemTable_ResourcesRelEd.Bof do
begin
IDResource := MemTable_ResourcesRelEd.FieldByName('id').AsInteger;
if MemTable_ResourcesRelEd.FieldByName('isNew').AsBoolean = false then
Result.Add(IDResource);
MemTable_ResourcesRelEd.Prior;
end;
end;
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> / <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.AddEditNorm(AMakeEdit: TMakeEdit);
var
ExistsResourcesIDsFromCurrNorm: TIntList;
ID_Norm: Integer;
//ID_ResourceRel: Integer;
//ModRes: TModalResult;
//NewNpp: Integer;
GUIDNorm: string;
SCSNorm: TSCSNorm;
FormMode: TFormMode;
begin
SCSNorm := nil;
ExistsResourcesIDsFromCurrNorm := nil;
if TF_Main(GForm).GDBMode = bkNormBase then
ExistsResourcesIDsFromCurrNorm := GetExistsResourcesIDsFromCurrNorm;
SCSNorm := TF_Main(GForm).DM.AddEditNormWithMemTable(AMakeEdit, GIDComponent,
TF_Main(GForm).DM.MemTable_NormsEd, FNBCurrency, FCurrency, false);
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if SCSNorm <> nil then
begin
if AMakeEdit = meMake then
begin
SCSNorm.ID := GenNewID(tkNormEd);
TF_Main(GForm).DM.MemTable_NormsEd.Edit;
TF_Main(GForm).DM.MemTable_NormsEd.FieldByName(fnID).AsInteger := SCSNorm.ID;
//added by Tolik
TF_Main(GForm).DM.MemTable_NormsEd.FieldByName(fnKolvo).AsFloat := TF_Main(GForm).DM.GetExpenceFromIzm(SCSNorm.Izm_);
//
TF_Main(GForm).DM.MemTable_NormsEd.Post;
end;
TF_Main(GForm).DM.CalcNormTatalCostInMT(TF_Main(GForm).DM.MemTable_NormsEd, FTraccaLength);
if ExistsResourcesIDsFromCurrNorm <> nil then
GDeletedResourceID.Assign(ExistsResourcesIDsFromCurrNorm, laOr);
SCSNorm.Free;
CalcNormCost;
end;
if ExistsResourcesIDsFromCurrNorm <> nil then
FreeAndNil(ExistsResourcesIDsFromCurrNorm);
{
FormMode := fmNone;
case AMakeEdit of
meMake:
FormMode := fmMake;
meEdit:
FormMode := fmEdit;
end;
//case AMakeEdit of
// meMake:
// begin
// FormMode := fmMake;
// F_NormBase.F_CaseForm.SpinEdit_Kolvo.Value := 1;
// end;
// meEdit:
// begin
// FormMode := fmEdit;
// //if GLength = 0 then
// F_NormBase.F_CaseForm.SpinEdit_Kolvo.Value := TF_Main(GForm).DM.MemTable_NormsEd.FieldByName('Kolvo').AsFloat
// end;
//end;
//if GLength > 0 then
// begin
// F_NormBase.F_CaseForm.SpinEdit_Kolvo.Value := GLength;
// F_NormBase.F_CaseForm.SpinEdit_Kolvo.Properties.ReadOnly := true;
// //F_NormBase.F_CaseForm.Label_CaptLength.Visible := true;
// end
//else
begin
F_NormBase.F_CaseForm.SpinEdit_Kolvo.Properties.ReadOnly := false;
//F_NormBase.F_CaseForm.Label_CaptLength.Visible := false;
end;
//F_NormBase.F_CaseForm.GViewKind := vkNorm;
//ModRes := F_NormBase.F_CaseForm.ShowModal;
SCSNorm := nil;
GUIDNorm := TF_Main(GForm).DM.MemTable_NormsEd.FieldByName(fnGuidNB).AsString;
if TF_Main(GForm).GDBMode = bkNormBase then
begin
with TF_Main(GForm) do
begin
//if ModRes = mrOk then
F_NormBase.F_CaseForm.GGUIDToLocate := GUIDNorm;
if F_NormBase.F_CaseForm.Execute(vkNorm, FormMode) then
begin
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if AMakeEdit = meEdit then
DelResourcesFromCurrNorm;
ID_Norm := F_NormBase.DM.DataSet_NB_NORMS.FN('ID').AsInteger;
SCSNorm := TSCSNorm.Create(TF_Main(GForm).FNormBase, ntNB);
SCSNorm.LoadNorm(ID_Norm, true);
end;
end;
end
else
if TF_Main(GForm).GDBMode = bkProjectManager then
begin
if ShowCurrProjectProperties(vkNorm, GUIDNorm) then
if FProjSpravochnik.LastNorm <> nil then
begin
SCSNorm := TSCSNorm.Create(GForm, ntNB);
SCSNorm.ID := FProjSpravochnik.LastNorm.ID;
SCSNorm.GuidNB := FProjSpravochnik.LastNorm.GUID;
SCSNorm.Cypher := FProjSpravochnik.LastNorm.Cypher;
SCSNorm.Name := FProjSpravochnik.LastNorm.Name;
SCSNorm.Izm := FProjSpravochnik.LastNorm.Izm;
//SCSNorm.GUIDESmeta := FProjSpravochnik.LastNorm.GUIDESmeta
end;
end;
if SCSNorm <> nil then
begin
SCSNorm.IDMaster := GIDComponent; // FIDMaster;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
SCSNorm.RefreshPricesAfterChangeCurrency(FNBCurrency, FCurrency, false);
SCSNorm.IsFromInterface := biFalse;
TF_Main(GForm).DM.LoadFromNormToMT(SCSNorm, TF_Main(GForm).DM.MemTable_NormsEd, AMakeEdit, 1, nil);
SCSNorm.Free;
CalcNormCost;
end;}
end;
procedure TF_AddComponent.AddEditResource(AMakeEdit: TMakeEdit; AMemoryTableKind: TTableKind; AMakeFromCompon: Boolean);
var
//ID_ResourceRel: Integer;
//ModRes: TModalResult;
ResourceRel: TSCSResourceRel;
FormMode: TFormMode;
ResourceMemTable: TkbmMemTable;
GUIDNB: string;
begin
ResourceRel := nil;
ResourceMemTable := TF_Main(GForm).DM.GetMemTableByMemoryTableKind(AMemoryTableKind);
ResourceRel := TF_Main(GForm).DM.AddEditResourceWithMemTable(AMakeEdit, GIDComponent, FIDCatalog,
ResourceMemTable, AMemoryTableKind, FNBCurrency, FCurrency, AMakeFromCompon, false);
if ResourceRel <> nil then
begin
if AMakeEdit = meMake then
begin
ResourceRel.ID := GenNewID(tkResourceRelEd);
ResourceMemTable.Edit;
ResourceMemTable.FieldByName(fnID).AsInteger := ResourceRel.ID;
ResourceMemTable.Post;
end;
TF_Main(GForm).DM.CalcNormTatalCostInMT(TF_Main(GForm).DM.MemTable_NormsEd, FTraccaLength);
ResourceRel.Free;
if AMemoryTableKind = tkResourceRelEd then
CalcNormCost
else
CalcWorkCost;
end;
{
FormMode := fmNone;
ResourceMemTable := TF_Main(GForm).DM.GetMemTableByMemoryTableKind(AMemoryTableKind);
case AMakeEdit of
meMake:
FormMode := fmMake;
meEdit:
begin
FormMode := fmEdit;
end;
end;
//F_NormBase.F_CaseForm.GViewKind := vkResource;
//ModRes := F_NormBase.F_CaseForm.ShowModal;
GUIDNB := ResourceMemTable.FieldByName(fnGuidNB).AsString;
ResourceRel := nil;
if TF_Main(GForm).GDBMode = bkNormBase then
begin
if AMakeEdit = meEdit then
F_NormBase.F_CaseForm.SpinEdit_Kolvo.Value := Round3(ResourceMemTable.FieldByName(fnKolvo).AsFloat);
//if GLength > 0 then
// begin
// F_NormBase.F_CaseForm.SpinEdit_Kolvo.Value := GLength;
// F_NormBase.F_CaseForm.SpinEdit_Kolvo.Properties.ReadOnly := true;
// //F_NormBase.F_CaseForm.Label_CaptLength.Visible := true;
// end
//else
begin
F_NormBase.F_CaseForm.SpinEdit_Kolvo.Properties.ReadOnly := false;
//F_NormBase.F_CaseForm.Label_CaptLength.Visible := false;
end;
with TF_Main(GForm) do
begin
//if ModRes = mrOk then
F_NormBase.F_CaseForm.GGUIDToLocate := GUIDNB;
if F_NormBase.F_CaseForm.Execute(vkResource, FormMode) then
begin
ResourceRel := TSCSResourceRel.Create(GForm, ntNB);
//Resource.ID := F_NormBase.DM.DataSet_NB_RESOURCES.FN('ID').AsInteger;
//ResourceRel.IDMaster := DM.MemTable_NormsEd.FieldByName('Id').AsInteger;
//ResourceRel.IDResource := F_NormBase.DM.DataSet_NB_RESOURCES.FN('ID').AsInteger;
ResourceRel.IDNB := F_NormBase.DM.DataSet_NB_RESOURCES.FN('ID').AsInteger;
ResourceRel.GuidNB := F_NormBase.DM.DataSet_NB_RESOURCES.FN(fnGUID).AsString;
ResourceRel.Cypher := F_NormBase.DM.DataSet_NB_RESOURCES.FN('Cypher').AsString;
ResourceRel.Name := F_NormBase.DM.DataSet_NB_RESOURCES.FN('Name').AsString;
ResourceRel.Izm := F_NormBase.DM.DataSet_NB_RESOURCES.FN('Izm').AsString;
ResourceRel.Price := F_NormBase.DM.DataSet_NB_RESOURCES.FN('Price').AsFloat;
ResourceRel.AdditionalPrice := F_NormBase.DM.DataSet_NB_RESOURCES.FN(fnAdditionalPrice).AsFloat;
ResourceRel.RType := F_NormBase.DM.DataSet_NB_RESOURCES.FN('RType').AsInteger;
ResourceRel.Kolvo := F_NormBase.F_CaseForm.SpinEdit_Kolvo.Value;
ResourceRel.Cost := ResourceRel.Price * ResourceRel.Kolvo; //F_NormBase.DM.DataSet_NB_RESOURCES.FN('Cost').AsFloat;
ResourceRel.RefreshPricesAfterChangeCurrency(FNBCurrency, FCurrency, false);
end;
end;
end
else
if TF_Main(GForm).GDBMode = bkProjectManager then
begin
if ShowCurrProjectProperties(vkResource, GUIDNB) then
if FProjSpravochnik.LastResource <> nil then
begin
ResourceRel := TSCSResourceRel.Create(GForm, ntNB);
ResourceRel.IDResource := FProjSpravochnik.LastResource.ID;
ResourceRel.GuidNB := FProjSpravochnik.LastResource.GUID;
ResourceRel.Cypher := FProjSpravochnik.LastResource.Cypher;
ResourceRel.Name := FProjSpravochnik.LastResource.Name;
ResourceRel.Izm := FProjSpravochnik.LastResource.Izm;
ResourceRel.Price := FProjSpravochnik.LastResource.Price;
ResourceRel.AdditionalPrice := 0;
ResourceRel.RType := FProjSpravochnik.LastResource.RType;
ResourceRel.Kolvo := 1;
ResourceRel.Cost := ResourceRel.Price * ResourceRel.Kolvo;
end;
end;
if ResourceRel <> nil then
begin
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
case AMemoryTableKind of
tkNormEd:
ResourceRel.MasterTableKind := ctkComponent; //GMasterTableKind;
tkResourceRelEd:
ResourceRel.MasterTableKind := ctkNorm;
end;
ResourceRel.IDMaster := GIDComponent;
ResourceRel.TableKindNB := ctkNBResources;
ResourceRel.IsOn := 1;
TF_Main(GForm).DM.LoadFromResourceToMT(ResourceRel, ResourceMemTable, AMakeEdit, AMemoryTableKind, nil); //LoadFromResourceToMT(ResourceRel, AMakeEdit, AMemoryTableKind);
ResourceRel.Free;
if AMemoryTableKind = tkResourceRelEd then
CalcNormCost
else
CalcWorkCost;
end;}
end;
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
function TF_AddComponent.GetNewNPP(AMemTable: TkbmMemTable): Integer;
var
RecordNo: Integer;
MaxNPP: Integer;
begin
Result := 1;
// Tolik 28/12/2019 --
MaxNPP := 0;
if AMemTable.RecordCount > 0 then
//
begin
with AMemTable do
begin
RecordNo := RecNo;
First;
MaxNPP := FieldByName('NPP').AsInteger;
while not Eof do
begin
if FieldByName('NPP').AsInteger > MaxNPP then
MaxNPP := FieldByName('NPP').AsInteger;
Next;
end;
RecNo := RecordNo;
end;
end;
Result := MaxNPP + 1;
end;
{
// ##### <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> ANPPAfter <20><> -1 #####
procedure TF_AddComponent.SdvigNPP(ANPPAfter: Integer; AMemTable: TkbmMemTable);
var
RecordNo: Integer;
NewNPP: Integer;
begin
try
if (AMemTable = nil) or (AMemTable.Active = false) then
Exit; ///// EXIT /////
RecordNo := AMemTable.RecNo;
AMemTable.First;
while not AMemTable.Eof do
begin
if AMemTable.FieldByName(fnNpp).AsInteger > ANPPAfter then
begin
NewNPP := AMemTable.FieldByName(fnNpp).AsInteger - 1;
AMemTable.Edit;
AMemTable.FieldByName(fnNpp).AsInteger := NewNPP;
AMemTable.FieldByName(fnisModified).AsBoolean := true;
AMemTable.Post;
end;
AMemTable.Next;
end;
AMemTable.RecNo := RecordNo;
except
on E: Exception do
AddExceptionToLog('TF_AddComponent.SdvigNPP: ' + E.Message);
end;
end;}
(*
// ##### <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> #####
procedure TF_AddComponent.LoadFromResourceToMT(AResource: TSCSResourceRel; AMakeEdit: TMakeEdit; AMemoryTableKind: TTableKind);
var
TrgMemTable: TkbmMemTable;
NewNpp: Integer;
begin
try
TrgMemTable := nil;
with TF_Main(GForm).DM do
TrgMemTable := GetMemTableByMemoryTableKind(AMemoryTableKind);
if TrgMemTable = nil then
Exit; //// EXIT ////
case AMakeEdit of
meMake:
begin
NewNpp := GetNewNPP(TrgMemTable);
TrgMemTable.Append;
TrgMemTable.FieldByName('Npp').AsInteger := NewNpp;
if AMemoryTableKind = tkNormEd then
TrgMemTable.FieldByName(fnIsResource).AsBoolean := true;
end;
meEdit: TrgMemTable.Edit;
meNone:
begin
TrgMemTable.Append;
TrgMemTable.FieldByName('id').AsInteger := AResource.ID;
TrgMemTable.FieldByName('id_master').AsInteger := AResource.IDMaster;
TrgMemTable.FieldByName('Npp').AsInteger := AResource.Npp;
if AMemoryTableKind = tkNormEd then
TrgMemTable.FieldByName(fnIsResource).AsBoolean := true;
end;
end;
TrgMemTable.FieldByName('Table_Kind').AsInteger := AResource.MasterTableKind;
if AMakeEdit <> meEdit then
TrgMemTable.FieldByName('id_resource').AsInteger := AResource.IDResource;
TrgMemTable.FieldByName('id_nb').AsInteger := AResource.IDNB;
TrgMemTable.FieldByName(fnGuidNB).AsString := AResource.GuidNB;
TrgMemTable.FieldByName('table_kind_nb').AsInteger := AResource.TableKindNB;
TrgMemTable.FieldByName('kolvo').AsFloat := RoundCP(AResource.Kolvo);
TrgMemTable.FieldByName('ison').AsInteger := AResource.IsOn;
TrgMemTable.FieldByName('Cypher').AsString := AResource.Cypher;
TrgMemTable.FieldByName('Name').AsString := AResource.Name;
TrgMemTable.FieldByName('Izm').AsString := AResource.Izm;
case AMemoryTableKind of
tkResourceRelEd:
begin
TrgMemTable.FieldByName('Price').AsFloat := RoundCP(AResource.Price);
TrgMemTable.FieldByName(fnAdditionalPrice).AsFloat := RoundCP(AResource.AdditionalPrice);
TrgMemTable.FieldByName('Cost').AsFloat := RoundCP(AResource.Cost);
end;
tkNormEd:
begin
TrgMemTable.FieldByName('Cost').AsFloat := RoundCP(AResource.Price);
TrgMemTable.FieldByName('Total_Cost').AsFloat := RoundCP(AResource.Cost);
end;
end;
TrgMemTable.FieldByName(fnExpenseForLength).AsFloat := RoundCP(AResource.ExpenseForLength);
TrgMemTable.FieldByName('RType').AsInteger := AResource.RType;
case AMakeEdit of
meNone:
begin
TrgMemTable.FieldByName('isModified').AsBoolean := false;
TrgMemTable.FieldByName('isNew').AsBoolean := false;
end;
meMake:
TrgMemTable.FieldByName('isNew').AsBoolean := true;
meEdit:
TrgMemTable.FieldByName('isModified').AsBoolean := true;
end;
TrgMemTable.Post;
{with TF_Main(GForm).DM do
begin
case AMakeEdit of
meMake : MemTable_ResourcesRelEd.Append;
meEdit: MemTable_ResourcesRelEd.Edit;
meNone:
begin
MemTable_ResourcesRelEd.Append;
MemTable_ResourcesRelEd.FieldByName('id').AsInteger := AResource.ID;
MemTable_ResourcesRelEd.FieldByName('id_master').AsInteger := AResource.IDMaster;
end;
end;
MemTable_ResourcesRelEd.FieldByName('id_resource').AsInteger := AResource.IDResource;
MemTable_ResourcesRelEd.FieldByName('kolvo').AsFloat := AResource.Kolvo;
MemTable_ResourcesRelEd.FieldByName('ison').AsInteger := AResource.IsOn;
MemTable_ResourcesRelEd.FieldByName('Cypher').AsString := AResource.Cypher;
MemTable_ResourcesRelEd.FieldByName('Name').AsString := AResource.Name;
MemTable_ResourcesRelEd.FieldByName('Izm').AsString := AResource.Izm;
MemTable_ResourcesRelEd.FieldByName('Price').AsFloat := AResource.Price;
MemTable_ResourcesRelEd.FieldByName('Cost').AsFloat := AResource.Cost;
MemTable_ResourcesRelEd.FieldByName('RType').AsInteger := AResource.RType;
case AMakeEdit of
meNone:
begin
MemTable_ResourcesRelEd.FieldByName('isModified').AsBoolean := false;
MemTable_ResourcesRelEd.FieldByName('isNew').AsBoolean := false;
end;
meMake:
MemTable_ResourcesRelEd.FieldByName('isNew').AsBoolean := true;
meEdit:
MemTable_ResourcesRelEd.FieldByName('isModified').AsBoolean := true;
end;
MemTable_ResourcesRelEd.Post;
end; }
except
on E: Exception do AddExceptionToLog('TF_AddComponent.LoadResourceToMT: '+E.Message);
end;
end;
procedure TF_AddComponent.LoadFromNormToMT(ASCSNorm: TSCSNorm; AMakeEdit: TMakeEdit; AKolvo: Double);
var
i: Integer;
ResourceRel: TSCSResourceRel;
NewNpp: Integer;
begin
NewNpp := 0;
with TF_Main(GForm).DM do
begin
case AMakeEdit of
meMake:
begin
NewNpp := GetNewNPP(MemTable_NormsEd);
MemTable_NormsEd.Append;
end;
meEdit:
MemTable_NormsEd.Edit;
meNone:
MemTable_NormsEd.Append;
end;
MemTable_NormsEd.FieldByName('ID_Master').AsInteger := GIDComponent; //FIDMaster;
MemTable_NormsEd.FieldByName(fnIDNB).AsInteger := ASCSNorm.IDNB;
MemTable_NormsEd.FieldByName(fnGuidNB).AsString := ASCSNorm.GuidNB;
MemTable_NormsEd.FieldByName('TABLE_KIND').AsInteger := ctkComponent; //GMasterTableKind;
MemTable_NormsEd.FieldByName('Cypher').AsString := ASCSNorm.Cypher;
MemTable_NormsEd.FieldByName('Name').AsString := ASCSNorm.Name;
MemTable_NormsEd.FieldByName('Work_Kind').AsString := ASCSNorm.WorkKind;
MemTable_NormsEd.FieldByName('Izm').AsString := ASCSNorm.Izm;
MemTable_NormsEd.FieldByName('Cost').AsFloat := RoundCP(ASCSNorm.Cost);
MemTable_NormsEd.FieldByName('Total_Cost').AsFloat := RoundCP(ASCSNorm.TotalCost); //ASCSNorm.Cost * ASCSNorm.Kolvo;
MemTable_NormsEd.FieldByName(fnExpenseForLength).AsFloat := RoundCP(ASCSNorm.ExpenseForLength);
//MemTable_NormRel.FieldByName('Zarplat').AsFloat := F_NormBase.DM.Query.FN('Zarplat').AsFloat;
MemTable_NormsEd.FieldByName(fnIsFromInterface).AsInteger := ASCSNorm.IsFromInterface;
case AMakeEdit of
meNone:
begin
MemTable_NormsEd.FieldByName('ID').AsInteger := ASCSNorm.ID;
MemTable_NormsEd.FieldByName('NPP').AsInteger := ASCSNorm.NPP;
MemTable_NormsEd.FieldByName('ISON').AsInteger := ASCSNorm.IsOn;
MemTable_NormsEd.FieldByName('Kolvo').AsFloat := RoundX(ASCSNorm.Kolvo, PrecisionNormKolvo);
MemTable_NormsEd.FieldByName(fnIsResource).AsBoolean := false;
MemTable_NormsEd.FieldByName('isModified').AsBoolean := false;
MemTable_NormsEd.FieldByName('isNew').AsBoolean := false;
end;
meMake:
begin
MemTable_NormsEd.FieldByName('NPP').AsInteger := NewNpp;
MemTable_NormsEd.FieldByName('ISON').AsInteger := 1;
MemTable_NormsEd.FieldByName('Kolvo').AsFloat := RoundCP(AKolvo);
MemTable_NormsEd.FieldByName(fnIsResource).AsBoolean := false;
MemTable_NormsEd.FieldByName('isNew').AsBoolean := true;
end;
meEdit:
begin
MemTable_NormsEd.FieldByName('Kolvo').AsFloat := RoundCP(AKolvo);
MemTable_NormsEd.FieldByName('isModified').AsBoolean := true;
end;
end;
MemTable_NormsEd.Post;
end;
for i := 0 to ASCSNorm.Resources.Count - 1 do
begin
ResourceRel := ASCSNorm.Resources.Items[i];
LoadFromResourceToMT(ResourceRel, AMakeEdit, tkResourceRelEd);
end;
end;
procedure TF_AddComponent.LoadFromMTToResource(AMemoryTableKind: TTableKind; AResourceRel: TSCSResourceRel);
var
TrgMemTable: TkbmMemTable;
begin
try
if AResourceRel = nil then
Exit; /// EXIT ///
TrgMemTable := nil;
with TF_Main(GForm).DM do
case AMemoryTableKind of
tkResourceRelEd:
TrgMemTable := MemTable_ResourcesRelEd;
tkNormEd:
TrgMemTable := MemTable_NormsEd;
end;
if TrgMemTable = nil then
Exit; //// EXIT ////
AResourceRel.ID := TrgMemTable.FieldByName('id').AsInteger;
AResourceRel.IDMaster := TrgMemTable.FieldByName('id_master').AsInteger;
AResourceRel.MasterTableKind := TrgMemTable.FieldByName('Table_Kind').AsInteger;
AResourceRel.Npp := TrgMemTable.FieldByName('Npp').AsInteger;
AResourceRel.IsOn := TrgMemTable.FieldByName('ison').AsInteger;
AResourceRel.IDResource := TrgMemTable.FieldByName('id_resource').AsInteger;
AResourceRel.IDNB := TrgMemTable.FieldByName('id_nb').AsInteger;
AResourceRel.GuidNB := TrgMemTable.FieldByName(fnGuidNB).AsString;
AResourceRel.TableKindNB := TrgMemTable.FieldByName('table_kind_nb').AsInteger;
AResourceRel.Kolvo := RoundCP(TrgMemTable.FieldByName('kolvo').AsFloat);
AResourceRel.Cypher := TrgMemTable.FieldByName('Cypher').AsString;
AResourceRel.Name := TrgMemTable.FieldByName('Name').AsString;
AResourceRel.Izm := TrgMemTable.FieldByName('Izm').AsString;
case AMemoryTableKind of
tkResourceRelEd:
begin
AResourceRel.Price := RoundCP(TrgMemTable.FieldByName('Price').AsFloat);
AResourceRel.AdditionalPrice := RoundCP(TrgMemTable.FieldByName(fnAdditionalPrice).AsFloat);
AResourceRel.Cost := RoundCP(TrgMemTable.FieldByName('Cost').AsFloat);
end;
tkNormEd:
begin
AResourceRel.Price := RoundCP(TrgMemTable.FieldByName('Cost').AsFloat);
AResourceRel.Cost := RoundCP(TrgMemTable.FieldByName('Total_Cost').AsFloat);
end;
end;
AResourceRel.ExpenseForLength := RoundCP(TrgMemTable.FieldByName(fnExpenseForLength).AsFloat);
AResourceRel.RType := TrgMemTable.FieldByName('RType').AsInteger;
AResourceRel.IsModified := TrgMemTable.FieldByName('isModified').AsBoolean;
AResourceRel.IsNew := TrgMemTable.FieldByName('isNew').AsBoolean;
except
on E: Exception do AddExceptionToLog('TF_AddComponent.LoadFromMTToResource: '+E.Message);
end;
end;
procedure TF_AddComponent.LoadFromMTToNorm(ASCSNorm: TSCSNorm);
begin
with TF_Main(GForm).DM do
begin
ASCSNorm.ID := MemTable_NormsEd.FieldByName('ID').AsInteger;
ASCSNorm.IDMaster := MemTable_NormsEd.FieldByName('ID_Master').AsInteger;
ASCSNorm.IDNB := MemTable_NormsEd.FieldByName(fnIDNB).AsInteger;
ASCSNorm.GuidNB := MemTable_NormsEd.FieldByName(fnGuidNB).AsString;
ASCSNorm.MasterTableKind := MemTable_NormsEd.FieldByName('TABLE_KIND').AsInteger;
ASCSNorm.NPP := MemTable_NormsEd.FieldByName('NPP').AsInteger;
ASCSNorm.IsOn := MemTable_NormsEd.FieldByName('ISON').AsInteger;
ASCSNorm.Kolvo := RoundX(MemTable_NormsEd.FieldByName('Kolvo').AsFloat, PrecisionNormKolvo);
ASCSNorm.Cypher := MemTable_NormsEd.FieldByName('Cypher').AsString;
ASCSNorm.Name := MemTable_NormsEd.FieldByName('Name').AsString;
ASCSNorm.WorkKind := MemTable_NormsEd.FieldByName('Work_Kind').AsString;
ASCSNorm.Izm := MemTable_NormsEd.FieldByName('Izm').AsString;
ASCSNorm.Cost := RoundCP(MemTable_NormsEd.FieldByName('Cost').AsFloat);
ASCSNorm.TotalCost := RoundCP(MemTable_NormsEd.FieldByName('Total_Cost').AsFloat);
ASCSNorm.ExpenseForLength := RoundCP(MemTable_NormsEd.FieldByName(fnExpenseForLength).AsFloat);
//MemTable_NormRel.FieldByName('Zarplat').AsFloat := F_NormBase.DM.Query.FN('Zarplat').AsFloat;
ASCSNorm.IsFromInterface := MemTable_NormsEd.FieldByName(fnIsFromInterface).AsInteger;
ASCSNorm.IsModified := MemTable_NormsEd.FieldByName('isModified').AsBoolean;
ASCSNorm.IsNew := MemTable_NormsEd.FieldByName('isNew').AsBoolean;
end;
end; *)
procedure TF_AddComponent.OncbApplyForChange(Sender: TObject);
var
ApplyCheckBoxBorderColor: TColor;
ApplyCheckBoxBorderStyle: TcxEditBorderStyle;
begin
ApplyCheckBoxBorderColor := FApplyCheckBoxesBorderColor;
ApplyCheckBoxBorderStyle := FApplyCheckBoxesBorderStyle;
if not TRzCheckBox(Sender).Checked then
begin
ApplyCheckBoxBorderColor := clWindowFrame;
ApplyCheckBoxBorderStyle := ebsUltraFlat;
end;
pnApplyNormsResources.Visible := TRzCheckBox(Sender).Checked;
//TcxCheckBox(Sender).Style.BorderColor := ApplyCheckBoxBorderColor;
//TcxCheckBox(Sender).Style.BorderStyle := ApplyCheckBoxBorderStyle;
//VisibleApplyCheckBoxes(TcxCheckBox(Sender).Checked, false);
//TRzCheckBox(Sender).Style.BorderColor := ApplyCheckBoxBorderColor;
//TRzCheckBox(Sender).Style.BorderStyle := ApplyCheckBoxBorderStyle;
TRzCheckBox(Sender).Font.Color := ApplyCheckBoxBorderColor;
VisibleApplyCheckBoxes(TRzCheckBox(Sender).Checked, false);
end;
procedure TF_AddComponent.OncbApplyForPMChange(Sender: TObject);
begin
OncbApplyForChange(Sender);
EnableDisableApplyIncludingMark; //17.08.2012
cbApplyForOnlySelected.Enabled := CheckBox_ApplyForList.Checked or CheckBox_ApplyForProject.Checked;
end;
procedure TF_AddComponent.SetGenLastID(ATableKind: TTableKind);
//var LastID: Integer;
var
GDBMode: TDBKind;
begin
//LastID := -1;
//with TF_Main(GForm).DM do
GDBMode := TF_Main(GForm).GDBMode;
case ATableKind of
tkCableCanalConnectorsED:
GGenLastCableCanalConnectorID := GetLastCableCanalConnectorID(GDBMode);
tkCompPropRelED:
GGenLastCompPropRelID := GetLastCompPropRelID(GDBMode);
tkCrossConnectionED:
if GDBMode = bkNormBase then
GGenLastCrossConnectionID := GenIDFromTable(TF_Main(GForm).DM.Query_Select, gnCrossConnectionID, 0)
else
GGenLastCrossConnectionID := 0;
tkInterfRelED:
GGenLastInterfID := GetLastInterfRelID(GDBMode);
tkPortInterfRelED:
GGenLastPortInterfRelID := GetLastPortInterfRelID(GDBMode);
tkNormEd:
GGenLastNormID := GetLastNormID(GDBMode);
tkResourceRelEd:
GGenLastResourceID := GetLastNormResourceID(GDBMode);
end;
//if LastID <> -1 then
// GGenLastInterfID := LastID;
end;
function TF_AddComponent.GetMaxNumPair(AMemTable: TkbmMemTable): Integer;
var
CurrMaxNumPair: Integer;
begin
Result := 0;
CurrMaxNumPair := 0;
AMemTable.First;
while not AMemTable.Eof do
begin
if AMemTable.FieldByName(fnNumPair).AsInteger > CurrMaxNumPair then
CurrMaxNumPair := AMemTable.FieldByName(fnNumPair).AsInteger;
AMemTable.Next;
end;
Result := CurrMaxNumPair;
end;
function TF_AddComponent.GenNewID(ATableKind: TTableKind): Integer;
begin
Result := 0;
case ATableKind of
tkCableCanalConnectorsED:
begin
Inc(GGenLastCableCanalConnectorID);
Result := GGenLastCableCanalConnectorID
end;
tkCompPropRelED:
begin
Inc(GGenLastCompPropRelID);
Result := GGenLastCompPropRelID
end;
tkCrossConnectionED:
begin
Inc(GGenLastCrossConnectionID);
Result := GGenLastCrossConnectionID
end;
tkInterfRelED, tkPortEd:
begin
Inc(GGenLastInterfID);
Result := GGenLastInterfID;
end;
tkPortInterfRelED:
begin
Inc(GGenLastPortInterfRelID);
Result := GGenLastPortInterfRelID
end;
tkNormEd:
begin
Inc(GGenLastNormID);
Result := GGenLastNormID;
end;
tkResourceRelEd:
begin
Inc(GGenLastResourceID);
Result := GGenLastResourceID;
end;
end;
end;
{
function TF_AddComponent.GetStrWithoutSpaces(AString: String): String;
var ResStr: String;
i: Integer;
LenStr: Integer;
ResStrIndex: Integer;
begin
LenStr := Length(AString);
ResStrIndex := 0;
for i := 1 to LenStr do
begin
if Ord(AString[i]) <> 160 then
begin
ResStrIndex := ResStrIndex + 1;
SetLength(ResStr, ResStrIndex);
ResStr[ResStrIndex] := AString[i];
end;
end;
Result := ResStr;
end; }
procedure TF_AddComponent.AddApplyCheckBoxToList(ACheckBox: TcxCheckBox; APageIndex: Integer);
begin
FApplyCheckBoxes.Add(ACheckBox);
FApplyCheckBoxesPageIndex.Add(APageIndex);
end;
function TF_AddComponent.CheckRequiredProperties: Boolean;
var
//MemTableBookmark: string;
MemTableBookmark: TbookMark;
MemTable: TkbmMemTable;
Prop: TProperty;
MessageStr: string;
PropSysNamesToDel: TStringList;
CanEditProp: Boolean;
RelatedPortPropSysName: String;
begin
Result := true;
try
PropSysNamesToDel := TStringList.Create;
MemTable := TF_Main(GForm).DM.MemTable_PropertyEd;
//MemTableBookmark := MemTable.Bookmark;
MemTableBookmark := MemTable.GetBookmark;
MemTable.DisableControls;
try
MemTable.First;
while Not MemTable.Eof do
begin
Prop := TF_Main(GForm).DM.GetPropertyFromTable(nil, MemTable);
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (GPropRequired.IndexOf(Prop.SysName) <> -1) and
(PropSysNamesToDel.IndexOf(Prop.SysName) = -1) then
begin
MessageStr := '';
case Prop.IDDataType of
dtInteger:
if StrToIntDef(Prop.Value, 0) <= 0 then
MessageStr := cAddComponent_Msg22_1 +' "'+Prop.Name_+'" '+cAddComponent_Msg22_2;
dtFloat:
if StrToFloatDefU(Prop.Value, 0) <= 0 then
MessageStr := cAddComponent_Msg22_1 +' "'+Prop.Name_+'" '+cAddComponent_Msg22_2;
dtCableCanalElementType:
if StrToIntDef(Prop.Value, contNone) = contNone then
MessageStr := cAddComponent_Msg22_1 +' "'+Prop.Name_+'" '+cAddComponent_Msg22_3;
dtDimensions:
if Prop.Value = '' then
MessageStr := cAddComponent_Msg22_1 +' "'+Prop.Name_+'" '+cAddComponent_Msg22_3;
end;
if MessageStr <> '' then
begin
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>-<2D><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RelatedPortPropSysName := '';
if Prop.SysName = pnPortCount then
RelatedPortPropSysName := pnPortWireCount
else
if Prop.SysName = pnPortWireCount then
RelatedPortPropSysName := pnPortCount;
//MemTableBookmark := MemTable.Bookmark;
pcMain.ActivePage := tsCommon;
Grid.ActiveLevel := GL_Property;
Application.ProcessMessages;
Sleep(100);
MemTable.EnableControls;
CanEditProp := true;
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (RelatedPortPropSysName <> '') and Not FIsTemplate and (FCurrComponentType.IsLine = biFalse) then
begin
if MessageQuastYN(cAddComponent_Msg26_1 + snNextRow+
'(' +cAddComponent_Msg26_2 + ' "'+Prop.Name_+'")' ) = IDYES then
begin
CanEditProp := false;
PropSysNamesToDel.Add(Prop.SysName);
PropSysNamesToDel.Add(RelatedPortPropSysName);
end;
end
else
MessageInfo(MessageStr);
Application.ProcessMessages;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if CanEditProp then
begin
AddEditProperty(meEdit);
Result := false;
end;
Break; //// BREAK ////
end;
end;
MemTable.Next;
end;
finally
MemTable.EnableControls;
//MemTable.Bookmark := MemTableBookmark;
if MemTableBookmark <> nil then
begin
MemTable.GotoBookmark(MemTableBookmark);
MemTable.FreeBookmark(MemTableBookmark);
end;
end;
if PropSysNamesToDel.Count > 0 then
DelPropsBySysNames(PropSysNamesToDel);
FreeAndNil(PropSysNamesToDel);
except
on E: Exception do AddExceptionToLogEx('TF_AddComponent.CheckRequiredProperties', E.Message);
end;
end;
procedure TF_AddComponent.ClearFormGrids;
begin
TF_Main(GForm).DM.MemTable_InterfaceRelEd.Active := false;
TF_Main(GForm).DM.MemTable_InterfaceRelEd.Active := True;
TF_Main(GForm).DM.MemTable_InterfOfInterf_RelEd.Active := false;
TF_Main(GForm).DM.MemTable_InterfOfInterf_RelEd.Active := True;
TF_Main(GForm).DM.MemTable_PortEd.Active := false;
TF_Main(GForm).DM.MemTable_PortEd.Active := True;
TF_Main(GForm).DM.MemTable_PortInterfRelEd.Active := false;
TF_Main(GForm).DM.MemTable_PortInterfRelEd.Active := True;
TF_Main(GForm).DM.mtInterfInternalConnEd.Active := false;
TF_Main(GForm).DM.mtInterfInternalConnEd.Active := true;
TF_Main(GForm).DM.MemTable_PropertyEd.Active := false;
TF_Main(GForm).DM.MemTable_PropertyEd.Active := True;
TF_Main(GForm).DM.MemTable_ComplectsEd.Active := false;
TF_Main(GForm).DM.MemTable_ComplectsEd.Active := True;
TF_Main(GForm).DM.MemTable_CableCanalConnectorsEd.Active := false;
TF_Main(GForm).DM.MemTable_CableCanalConnectorsEd.Active := true;
TF_Main(GForm).DM.mtCrossConnectionEd.Active := false;
TF_Main(GForm).DM.mtCrossConnectionEd.Active := true;
TF_Main(GForm).DM.MemTable_ResourcesRelEd.Active := false;
TF_Main(GForm).DM.MemTable_NormsEd.Active := false;
TF_Main(GForm).DM.MemTable_NormsEd.Active := true;
TF_Main(GForm).DM.MemTable_ResourcesRelEd.Active := true;
end;
procedure TF_AddComponent.ClearPortInterfaceMemTable(AMemTable: TkbmMemTable; AIsPort: Boolean);
var
i: Integer;
NumPair: Integer;
CanDelete: Boolean;
begin
try
AMemTable.Last;
while not AMemTable.Bof do
begin
if (AMemTable.FieldByName(fnIsBusy).AsInteger = biFalse) and
(AMemTable.FieldByName(fnIsNative).AsBoolean = True) then
begin
NumPair := 0;
if not AIsPort then
NumPair := AMemTable.FieldByName(fnNumPair).AsInteger;
CanDelete := false;
if AMemTable.FieldByName(fnIsNew).AsBoolean then
CanDelete := true
else if not CheckInterfIsUse(GForm, GIDComponent, AMemTable.FieldByName(fnID).AsInteger, NumPair) then
CanDelete := true;
if CanDelete then
begin
if (AMemTable.FieldByName(fnIsNew).AsBoolean = false) and
(AMemTable.FieldByName(fnIsNative).AsBoolean = true) then
GDeletedInterfRel.Add(AMemTable.FieldByName(fnID).AsInteger);
AMemTable.Delete;
Continue; ///// CONTINUE /////
end;
end;
AMemTable.Prior;
end;
except
on E: Exception do AddExceptionToLogEx('TF_AddComponent.ClearPortInterfaceMemTable', E.Message);
end;
end;
function TF_AddComponent.CreateFormOnlyComponent: TSCSComponent;
var
Stream: TStream;
ComponentType: TComponentType;
Price: Double;
begin
Result := nil;
//ComponentType := TF_Main(GForm).FNormBase.DM.GetComponentType(GetIDFromComboBox(ComboBox_ComponentType));
ComponentType := GetComponentType;
Result := TSCSComponent.Create(GForm);
try
if GFormMode = fmEdit then
Result.ID := GIDComponent;
Result.Name := Edit_Name.Text;
Result.NameShort := Edit_NameShort.Text;
Result.MarkStr := '';//Edit_MarkStr.Text;
Result.MarkID := Trunc(seIndex.Value);
Result.Izm := Edit_Izm.Text;
Result.Notice := Edit_Notice.Text;
Result.ArticulDistributor := Edit_ArticulDistributor.Text;
Result.ArticulProducer := Edit_ArticulProducer.Text;
//if Result.Picture <> nil then
// FreeAndNil(Result.Picture);
//Result.Picture := TMemoryStream.Create;
try
Image.Picture.SaveToFile(ComponPictFileName);
if FileExists(ComponPictFileName) then
begin
Stream := TFileStream.Create(ComponPictFileName, fmOpenReadWrite);
Stream.Position := 0;
Result.Picture.Position := 0;
Result.Picture.CopyFrom(Stream, 0);
Result.Picture.Position := 0;
FreeAndNil(Stream);
DeleteFile(PChar(ComponPictFileName));
end;
except
on E: Exception do
ShowMessage(cAddComponent_Msg5);
end;
Result.IsLine := GetIsLineByComponType(ComponentType);
Result.ISComplect := BoolToint(cbCanComplect.Checked); //1 - RadioGroup_CanComplect.ItemIndex;
//28.08.2013 if ComponentType.IsLine = biFalse then
//28.08.2013 Result.IsMarkInCaptions := BoolToint(cbIsMarkInCaptions.Checked)
//28.08.2013 else
//28.08.2013 Result.IsMarkInCaptions := biFalse;
Result.IsMarkInCaptions := BoolToint(cbIsMarkInCaptions.Checked);
Result.UserLength := FloatInUOM(SpinEdit_UserLength.Value, TF_Main(GForm).FUOM, umMetr);
Result.ObjectIconStep := 0;//SpinEdit_ObjectIconStep.Value;
Result.HASNDS := BoolToInt(CheckBox_HasNds.Checked); //1- RadioGroup_HasNds.ItemIndex;
Price := 0;
//case RadioGroup_HasNds.ItemIndex of
// 0: Price := CurrencyEdit_Price1.Value;
// 1: Price := PriceWithNDS(CurrencyEdit_Price1.Value, GNDS);
//end;
case CheckBox_HasNds.Checked of
true: Price := CurrencyEdit_Price1.Value;
false: Price := PriceWithNDS(CurrencyEdit_Price1.Value, TF_Main(GForm).GNDS);
end;
if CheckPriceTransformToUOMByCompType(@FCurrComponentType) then
Price := FloatInUOM(Price, umMetr, TF_Main(GForm).FUOM);
Result.PRICE_CALC := Price;
Result.PRICE := Price;
Result.ID_CURRENCY := GID_CURRENCY;
Result.ID_Producer := GetIDFromComboBox(ComboBox_Producer);
Result.ID_ComponentType := GetIDFromComboBox(ComboBox_ComponentType);
Result.IDObjectIcon := GIDObjectIcon;
Result.IDSymbol := GIDSymbolImage;
Result.IDNetType := GetIDFromComboBox(ComboBox_NetType);
Result.IDCompSpecification := GetIDFromComboBox(cbSpecification);
Result.IDSuppliesKind := GetIDFromComboBox(cbSuppliesKind);
Result.GUIDProducer := GetGUIDFromComboBox(ComboBox_Producer);
Result.GUIDNetType := GetGUIDFromComboBox(ComboBox_NetType);
Result.ComponentType := ComponentType;
Result.GUIDComponentType := ComponentType.GUID;
Result.GUIDObjectIcon := GGUIDObjectIcon;
Result.GUIDSymbol := GGUIDSymbolImage;
Result.GUIDSuppliesKind := GetGUIDFromComboBox(cbSuppliesKind);
if TF_Main(GForm).GDBMode = bkProjectManager then
begin
Result.NameMark := Edit_NameMark.Text;
//Result.IsUserMark := BoolToInt(CheckBox_IsUserMark.Checked);
Result.IsUserMark := BoolToInt(rbMarkByDefault.Checked);
Result.IsDismount := BoolToInt(cbDismount.Checked);
Result.IsUseDismounted := BoolToInt(cbUseDismounted.Checked);
end;
except
on E: Exception do
AddExceptionToLog('TF_AddComponent.CreateFormComponent: ' + E.Message);
end;
end;
function TF_AddComponent.CreateFormComponent: TSCSComponent;
var
FormCompon: TSCSComponent;
Interfaces: TSCSInterfaces;
Properties: TList;
CrossConnections: TSCSObjectList;
begin
Result := nil;
FormCompon := nil;
FormCompon := CreateFormOnlyComponent;
if Assigned(FormCompon) then
begin
FormCompon.Interfaces.Clear; //ClearList(FormCompon.Interfaces);
ClearList(FormCompon.Properties);
Interfaces := nil;
Interfaces := CreateFormInterfaces;
if Assigned(Interfaces) then
begin
FormCompon.Interfaces.Assign(Interfaces);
FreeAndNil(Interfaces);
end;
Properties := nil;
Properties := CreateFormProperties;
if Assigned(Properties) then
begin
FormCompon.Properties.Assign(Properties);
FreeAndNil(Properties);
end;
CrossConnections := nil;
CrossConnections := CreateFormCrossConnections;
if Assigned(CrossConnections) then
begin
FormCompon.CrossConnections.Assign(CrossConnections);
CrossConnections.OwnsObjects := false;
FreeAndNil(CrossConnections);
end;
end;
Result := FormCompon;
end;
// Tolik 28/12/2019 -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - -<2D><> <20><><EFBFBD><EFBFBD>
function TF_AddComponent.CreateFormInterfaces: TSCSInterfaces;
var
ResList: TSCSInterfaces;
SavedMasterSource: TDataSource;
procedure LoadToInterfacesList(AMemTable: TkbmMemTable);
var
i, j: Integer;
RecNo: Integer;
Interfac: TSCSInterface;
ComponType: TComponentType;
begin
if Assigned(AMemTable) then
begin
ComponType := GetComponentType;
if AMemTable.RecordCount > 0 then
begin
RecNo := AMemTable.RecNo;
TF_Main(GForm).DM.mtInterfInternalConnEd.MasterSource := nil;
AMemTable.DisableControls;
try
for i := 0 to AMemTable.RecordCount - 1 do
begin
AMemTable.RecNo := i + 1;
//GetMem(Interfac, SizeOf(TInterface));
Interfac := TSCSInterface.Create(GForm);
TF_Main(GForm).DM.LoadFromMemTableToInterface(Interfac, AMemTable);
Interfac.IsLineCompon := ComponType.IsLine;
//ResList.Add(Interfac);
Result.Add(Interfac);
TF_Main(GForm).DM.LoadPortInterfRelsToInterfaceFromMT(Interfac,
TF_Main(GForm).DM.MemTable_PortInterfRelEd,
TF_Main(GForm).DM.mtInterfInternalConnEd);
end;
finally
AMemTable.RecNo := RecNo;
AMemTable.EnableControls;
end;
end;
end;
end;
begin
Result := TSCSInterfaces.Create(false);
with TF_Main(GForm).DM do
begin
LoadToInterfacesList(MemTable_InterfaceRelEd);
SavedMasterSource := MemTable_PortInterfRelEd.MasterSource;
MemTable_PortInterfRelEd.MasterSource := nil;
try
LoadToInterfacesList(MemTable_PortEd);
finally
MemTable_PortInterfRelEd.MasterSource := SavedMasterSource;
end;
end;
//Result := ResList;
end;
{
function TF_AddComponent.CreateFormInterfaces: TSCSInterfaces;
var
ResList: TSCSInterfaces;
SavedMasterSource: TDataSource;
procedure LoadToInterfacesList(AMemTable: TkbmMemTable);
var
i, j: Integer;
RecNo: Integer;
Interfac: TSCSInterface;
ComponType: TComponentType;
begin
if Assigned(AMemTable) then
begin
ComponType := GetComponentType;
RecNo := AMemTable.RecNo;
TF_Main(GForm).DM.mtInterfInternalConnEd.MasterSource := nil;
AMemTable.DisableControls;
try
for i := 0 to AMemTable.RecordCount - 1 do
begin
AMemTable.RecNo := i + 1;
//GetMem(Interfac, SizeOf(TInterface));
Interfac := TSCSInterface.Create(GForm);
TF_Main(GForm).DM.LoadFromMemTableToInterface(Interfac, AMemTable);
Interfac.IsLineCompon := ComponType.IsLine;
ResList.Add(Interfac);
TF_Main(GForm).DM.LoadPortInterfRelsToInterfaceFromMT(Interfac,
TF_Main(GForm).DM.MemTable_PortInterfRelEd,
TF_Main(GForm).DM.mtInterfInternalConnEd);
end;
finally
AMemTable.RecNo := RecNo;
AMemTable.EnableControls;
end;
end;
end;
begin
Result := nil;
ResList := TSCSInterfaces.Create(false);
with TF_Main(GForm).DM do
begin
LoadToInterfacesList(MemTable_InterfaceRelEd);
SavedMasterSource := MemTable_PortInterfRelEd.MasterSource;
MemTable_PortInterfRelEd.MasterSource := nil;
try
LoadToInterfacesList(MemTable_PortEd);
finally
MemTable_PortInterfRelEd.MasterSource := SavedMasterSource;
end;
end;
Result := ResList;
end;
}
function TF_AddComponent.CreateFormProperties: TList;
var
i: Integer;
RecNo: Integer;
ptrProperty: PProperty;
begin
Result := nil;
Result := TList.Create;
// Tolik 28/12/2019 --
if TF_Main(GForm).DM.MemTable_PropertyEd.RecordCount = 0 then
exit;
//
with TF_Main(GForm).DM do
begin
RecNo := MemTable_PropertyEd.RecNo;
try
MemTable_PropertyEd.DisableControls;
RecNo := MemTable_PropertyEd.RecNo;
for i := 0 to MemTable_PropertyEd.RecordCount - 1 do
begin
MemTable_PropertyEd.RecNo := i + 1;
//16.10.2007 GetMem(ptrProperty, SizeOf(TProperty));
New(ptrProperty);
ZeroMemory(ptrProperty, SizeOf(TProperty));
ptrProperty^ := GetPropertyFromTable(DataSource_MT_PropertyEd);
{ptrProperty.ID := MemTable_PropertyEd.FieldByName(fnID).AsInteger;
ptrProperty.ID_Property := MemTable_PropertyEd.FieldByName(fnIDProperty).AsInteger;
ptrProperty.Name := MemTable_PropertyEd.FieldByName(fnName).AsString;
ptrProperty.SysName := MemTable_PropertyEd.FieldByName(fnSysName).AsString;
ptrProperty.Value := MemTable_PropertyEd.FieldByName(fnPValue).AsString;
ptrProperty.TakeIntoConnect := MemTable_PropertyEd.FieldByName(fnTakeIntoConnect).AsInteger;
ptrProperty.TakeIntoJoin := MemTable_PropertyEd.FieldByName(fnTakeIntoJoin).AsInteger;
ptrProperty.IsCrossControl := MemTable_PropertyEd.FieldByName(fnIsCrossControl).AsInteger;
ptrProperty.IDCrossProperty := MemTable_PropertyEd.FieldByName(fnIDCrossProperty).AsInteger;
ptrProperty.IsNew := MemTable_PropertyEd.FieldByName(fnIsNew).AsBoolean;
ptrProperty.IsModified := MemTable_PropertyEd.FieldByName(fnIsModified).AsBoolean;
}
Result.Add(ptrProperty);
end;
finally
MemTable_PropertyEd.RecNo := RecNo;
MemTable_PropertyEd.EnableControls;
end;
end;
end;
function TF_AddComponent.CreateFormCableCanalConnectors: TList;
var
ptrCableCanalConnector: PCableCanalConnector;
RecNo: Integer;
begin
Result := TList.Create;
// Tolik 28/12/2019 --
if TF_Main(GForm).DM.MemTable_CableCanalConnectorsEd.RecordCount = 0 then
exit;
//
with TF_Main(GForm).DM do
if MemTable_CableCanalConnectorsEd.Active then
begin
RecNo := MemTable_CableCanalConnectorsEd.RecNo;
MemTable_CableCanalConnectorsEd.DisableControls;
try
MemTable_CableCanalConnectorsEd.First;
while not MemTable_CableCanalConnectorsEd.Eof do
begin
GetZeroMem(ptrCableCanalConnector, SizeOf(TCableCanalConnector));
ptrCableCanalConnector.ID := MemTable_CableCanalConnectorsEd.FieldByName(fnID).AsInteger;
ptrCableCanalConnector.IDCableCanal := MemTable_CableCanalConnectorsEd.FieldByName(fnIDComponent).AsInteger;
ptrCableCanalConnector.IDNBConnector := MemTable_CableCanalConnectorsEd.FieldByName(fnIDNBConnector).AsInteger;
ptrCableCanalConnector.GuidNBConnector := MemTable_CableCanalConnectorsEd.FieldByName(fnGuidNBConnector).AsString;
ptrCableCanalConnector.ConnectorType := MemTable_CableCanalConnectorsEd.FieldByName(fnConnectorType).AsInteger;
ptrCableCanalConnector.IsModified := MemTable_CableCanalConnectorsEd.FieldByName(fnIsModified).AsBoolean;
ptrCableCanalConnector.IsNew := MemTable_CableCanalConnectorsEd.FieldByName(fnIsNew).AsBoolean;
Result.Add(ptrCableCanalConnector);
MemTable_CableCanalConnectorsEd.Next;
end;
MemTable_CableCanalConnectorsEd.RecNo := RecNo;
finally
MemTable_CableCanalConnectorsEd.EnableControls;
MemTable_CableCanalConnectorsEd.RecNo := RecNo;
end;
end;
end;
function TF_AddComponent.CreateFormCrossConnections: TSCSObjectList;
var
ptrDestCrossConnection: TSCSCrossConnection;
MemTable: TkbmMemTable;
RecNo: Integer;
i: Integer;
begin
Result := TSCSObjectList.Create(false);
MemTable := TF_Main(GForm).DM.mtCrossConnectionEd;
if MemTable.Active and (MemTable.RecordCount > 0) then
begin
RecNo := MemTable.RecNo;
MemTable.DisableControls;
try
for i := 0 to MemTable.RecordCount - 1 do
begin
MemTable.RecNo := i + 1;
//GetMem(ptrDestCrossConnection, SizeOf(TCrossConnection));
ptrDestCrossConnection := TSCSCrossConnection.Create(GForm);
TF_Main(GForm).DM.LoadCrossConnectionFromMemTable(MemTable, ptrDestCrossConnection);
Result.Add(ptrDestCrossConnection);
end;
finally
MemTable.RecNo := RecNo;
MemTable.EnableControls;
end;
end;
end;
procedure TF_AddComponent.DeleteAllPortsAndInterf;
begin
with TF_Main(GForm).DM do
begin
ClearPortInterfaceMemTable(MemTable_PortEd, true);
ClearPortInterfaceMemTable(MemTable_InterfaceRelEd, false);
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
mtInterfInternalConnEd.First;
while not mtInterfInternalConnEd.Eof do
mtInterfInternalConnEd.Delete;
end;
end;
function TF_AddComponent.DelRequiredEmptyProps: Boolean;
var
//PropSysNamesCanDel: TStringList;
i: Integer;
//PropsBookmarks: TStringList;
PropsNames: TStringList;
PropsSysNames: TStringList;
//MemTableBookmark: string;
MemTableBookmark: TBookMark;
MemTable: TkbmMemTable;
MessageStr: string;
StrValue: String;
begin
Result := false;
try
//PropSysNamesCanDel := TStringList.Create;
//PropSysNamesCanDel.Add(pnPortCount);
//PropSysNamesCanDel.Add(pnPortWireCount);
//PropsBookmarks := TStringList.Create;
PropsSysNames := TStringList.Create;
PropsNames := TStringList.Create;
MemTable := TF_Main(GForm).DM.MemTable_PropertyEd;
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//MemTableBookmark := MemTable.Bookmark;
MemTableBookmark := MemTable.GetBookmark;
MemTable.DisableControls;
try
MemTable.First;
while Not MemTable.Eof do
begin
if GPropRequired.IndexOf(MemTable.FieldByName(fnSysName).AsString) <> -1 then
begin
StrValue := PropValueToCaption(
MemTable.FieldByName(fnPValue).AsString,
MemTable.FieldByName(fnSysName).AsString, '',
MemTable.FieldByName(fnIDDataType).AsInteger,
TF_Main(GForm).FUOM, false);
if (StrValue = '') or (StrToFloatDef_My(StrValue, 0) <= 0) then
begin
//PropsBookmarks.Add(MemTable.Bookmark);
PropsSysNames.Add(MemTable.FieldByName(fnSysName).AsString);
PropsNames.Add(MemTable.FieldByName(fnName).AsString);
end;
end;
MemTable.Next;
end;
finally
MemTable.EnableControls;
if MemTableBookmark <> nil then
begin
MemTable.GotoBookmark(MemTableBookmark);
MemTable.FreeBookmark(MemTableBookmark);
end;
//MemTable.Bookmark := MemTableBookmark;
end;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if PropsSysNames.Count > 0 then
begin
MessageStr := cAddComponent_Msg25_1 + ': ';
for i := 0 to PropsNames.Count - 1 do
begin
if i > 0 then
MessageStr := MessageStr + snCommaS;
MessageStr := MessageStr + PropsNames[i];
end;
MessageStr := MessageStr + snPoint + snNextRow+ cAddComponent_Msg25_2;
if MessageQuastYN(MessageStr) = IDYES then
begin
{MemTableBookmark := MemTable.Bookmark;
MemTable.DisableControls;
try
for i := 0 to PropsSysNames.Count - 1 do
if MemTable.Locate(fnSysName, PropsSysNames[i], []) then
begin
if MemTableBookmark = MemTable.Bookmark then
MemTableBookmark := '';
if Not MemTable.FieldByName(fnIsNew).AsBoolean then
GDeletedPropRel.Add(MemTable.FieldByName(fnID).AsInteger);
MemTable.Delete;
end;
finally
MemTable.EnableControls;
if MemTableBookmark <> '' then
MemTable.Bookmark := MemTableBookmark;
end;}
DelPropsBySysNames(PropsSysNames);
Result := true;
end;
end
else
Result := true;
FreeAndNil(PropsNames);
FreeAndNil(PropsSysNames);
//FreeAndNil(PropsBookmarks);
//FreeAndNil(PropSysNamesCanDel);
except
on E: Exception do AddExceptionToLogExt(ClassName, 'DelPortProps', E.Message);
end;
end;
function TF_AddComponent.GetComponentActualPrice: Double;
begin
Result := 0;
if CheckBox_HasNds.Checked then
Result := StrToFloatU(CorrectStrToFloat(CurrencyEdit_Price1.Text))
else
Result := StrToFloatU(CorrectStrToFloat(CurrencyEdit_NDS1.Text));
end;
function TF_AddComponent.GetComponentNameMarkByTemplate: string;
var
ProjComponent: TSCSComponent;
ProjComponentOwner: TSCSCatalog;
FormComponent: TSCSComponent;
begin
if TF_Main(GForm).GDBMode = bkProjectManager then
begin
ProjComponent := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(GIDComponent);
if ProjComponent <> nil then
begin
if TF_Main(GForm).GSCSBase.CurrProject.Setting.MarkMode = mmTemplate then
begin
ProjComponentOwner := ProjComponent.GetFirstParentCatalog;
if ProjComponentOwner <> nil then
begin
FormComponent := CreateFormOnlyComponent;
FormComponent.ProjectOwner := ProjComponent.ProjectOwner;
try
Result := TF_Main(GForm).MakeNameMarkComponent(FormComponent, ProjComponentOwner, false);
finally
FreeAndNil(FormComponent);
end;
end;
end
else
begin
Result := TF_Main(GForm).MakeNameMarkComponent(ProjComponent, nil, false);
end;
end;
end;
end;
function TF_AddComponent.GetNormResourcesCountByCompPropRelID(AIDCompPropRel: Integer): Integer;
var
MemTable: TkbmMemTable;
//MemTableBookmark: string;
MemTableBookmark: TBookMark;
begin
Result := 0;
try
MemTable := TF_Main(GForm).DM.MemTable_NormsEd;
//MemTableBookmark := MemTable.Bookmark;
MemTableBookmark := MemTable.GetBookmark;
MemTable.DisableControls;
try
MemTable.First;
while Not MemTable.Eof do
begin
if MemTable.FieldByName(fnIDCompPropRel).AsInteger = AIDCompPropRel then
Result := Result + 1;
MemTable.Next;
end;
finally
MemTable.EnableControls;
//MemTable.Bookmark := MemTableBookmark;
if MemTableBookmark <> nil then
begin
MemTable.GotoBookmark(MemTableBookmark);
MemTable.FreeBookmark(MemTableBookmark);
end;
end;
except
on E: Exception do AddExceptionToLogEx('TF_AddComponent.DeleteComponNormResByIDCompPropRel', E.Message);
end;
end;
function TF_AddComponent.GetSignType: Integer;
var
//BookMarkStr: string;
BookMarkStr: TBookMark;
begin
Result := oitProjectible;
//*** <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
//BookMarkStr := TF_Main(GForm).DM.MemTable_PropertyEd.Bookmark;
BookMarkStr := TF_Main(GForm).DM.MemTable_PropertyEd.GetBookmark;
TF_Main(GForm).DM.MemTable_PropertyEd.DisableControls;
try
//if SearchRecordMT(TF_Main(GForm).DM.MemTable_PropertyEd, 'ID_Data_Type', dtCompStateType) then
if TF_Main(GForm).DM.MemTable_PropertyEd.Locate(fnSysName, pnSignType, []) then
Result := TF_Main(GForm).DM.MemTable_PropertyEd.FieldByName(fnPValue).AsVariant;
// TF_Main(GForm).DM.MemTable_PropertyEd.Bookmark := BookMarkStr;
if BookMarkStr <> nil then
begin
TF_Main(GForm).DM.MemTable_PropertyEd.GotoBookmark(BookMarkStr);
TF_Main(GForm).DM.MemTable_PropertyEd.FreeBookmark(BookMarkStr);
end;
finally
TF_Main(GForm).DM.MemTable_PropertyEd.EnableControls;
end;
end;
procedure TF_AddComponent.ImportComponentByID(AID: Integer);
var
TemplateComponent: TSCSComponent;
begin
TemplateComponent := TSCSComponent.Create(GForm);
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
with TF_Main(GForm).DM do
begin
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SetAsDeletedMTRecords(MemTable_PropertyEd, nil, GDeletedPropRel, nil);
//*** <20><><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
RemoveNoNativeInterfacesFromMemTable(MemTable_PortEd);
RemoveNoNativeInterfacesFromMemTable(MemTable_InterfaceRelEd);
SetAsDeletedMTRecords(MemTable_PortEd, MemTable_PortInterfRelEd, GDeletedInterfRel, GDeletedPortInterfRels);
SetAsDeletedMTRecords(MemTable_InterfaceRelEd, nil, GDeletedInterfRel, nil);
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SetAsDeletedMTRecords(MemTable_CableCanalConnectorsEd, nil, GDeletedCableCanalConnectors, nil);
//*** <20><><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SetAsDeletedMTRecords(mtCrossConnectionEd, nil, GDeletedCrossConnections, nil);
end;
TemplateComponent.LoadComponentByID(AID, false);
TemplateComponent.LoadComponentData([cdCableCanalConnectors,
//cdConections,
cdCrossConnections,
cdProperties,
cdInterfaces,
cdComponentType,
cdNorms,
cdResources]);
TemplateComponent.SetPortInterfRelInterfaces;
TemplateComponent.SetInterfacesParallel;
SendComponentToForm(TemplateComponent, true);
FreeAndNil(TemplateComponent);
end;
procedure TF_AddComponent.SetAsDeletedMTRecords(AMemTable, ADetailMemTable: TkbmMemTable;
ADeletedIDs, ADeletedIDsFromDetail: TIntList);
var
SavedMasterSource: TDataSource;
procedure SetForMT(AMT: TkbmMemTable; ADelIDs: TIntList);
var
i: Integer;
RecNo: Integer;
TableID: Integer;
begin
if AMT.RecordCount > 0 then
begin
RecNo := AMT.RecNo;
AMT.DisableControls;
try
for i := 0 to AMT.RecordCount - 1 do
begin
AMT.RecNo := i + 1;
if AMT.FieldByName(fnIsNew).AsBoolean = false then
begin
TableID := AMT.FieldByName(fnID).AsInteger;
if (TableID > 0) and (ADelIDs.IndexOf(TableID) = -1) then
ADelIDs.Add(TableID);
end;
end;
finally
AMT.EnableControls;
AMT.RecNo := RecNo;
end;
end;
end;
begin
try
SavedMasterSource := nil;
if ADetailMemTable <> nil then
begin
SavedMasterSource := ADetailMemTable.MasterSource;
ADetailMemTable.MasterSource := nil;
end;
try
SetForMT(AMemTable, ADeletedIDs);
if (ADetailMemTable <> nil) and (ADeletedIDsFromDetail <> nil) then
SetForMT(ADetailMemTable, ADeletedIDsFromDetail);
finally
if ADetailMemTable <> nil then
ADetailMemTable.MasterSource := SavedMasterSource;
end;
except
on E: Exception do
AddExceptionToLog('TF_AddComponent.SetAsDeletedMTRecords: ' + E.Message);
end;
end;
procedure TF_AddComponent.SendComponentToForm(AComponent: TSCSComponent; AFromChangeComponType: Boolean);
var
Stream: TStream;
ProjManCompon: TSCSComponent;
ComponPrice: Double;
IsEnableControls: Boolean;
begin
ProjManCompon := nil;
FIsLoadingForm := true;
try
ClearFormGrids;
GIDObjectIcon := AComponent.IDObjectIcon;
GIDSymbolImage := AComponent.IDSymbol;
GGUIDObjectIcon := AComponent.GUIDObjectIcon;
GGUIDSymbolImage := AComponent.GUIDSymbol;
if TF_Main(GForm).GDBMode = bkProjectManager then
begin
ProjManCompon := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(AComponent.ID);
if ProjManCompon <> nil then
begin
if ProjManCompon.IsLine = biTrue then
begin
FTraccaLength := ProjManCompon.GetPartLength;
GT_NORMSTotalKolvo.Caption := GetCaptionNormsResourcesTotalKolvo(TF_Main(GForm).FUOM, FTraccaLength);
end;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if ProjManCompon.ProjectOwner <> nil then
ProjManCompon.ProjectOwner.DefineSpravObjectIconFromCAD(ProjManCompon.GUIDObjectIcon, ProjManCompon.GetFirstParentCatalog);
end;
end;
if AComponent.Picture <> nil then
try
AComponent.Picture.Position := 0;
if AComponent.Picture.Size > 0 then
begin
Stream := TFileStream.Create(ComponPictFileName, fmCreate);
Stream.Position := 0;
Stream.CopyFrom(AComponent.Picture, 0);
Stream.Position := 0;
FreeAndNil(Stream);
Image.Picture.LoadFromFile(ComponPictFileName);
DeleteFile(ComponPictFileName);
//Image.Picture.Bitmap.LoadFromStream(Stream);
//Stream.Free;
end;
except
on E: Exception do
ShowMessage(cAddComponent_Msg5);
end;
if Assigned(AComponent.Description) then
if AComponent.Description.Size > 0 then
begin
AComponent.Description.Position := 0;
meDescription.Lines.LoadFromStream(AComponent.Description);
end;
if not AFromChangeComponType then
begin
Edit_Name.Text := AComponent.Name;
//Edit_Izm.Text := AComponent.Izm; //#From Oleg# 2007.07.19
MaskEdit_Cyper.Text := AComponent.Cypher;
Edit_ArticulDistributor.Text := AComponent.ArticulDistributor;
Edit_ArticulProducer.Text := AComponent.ArticulProducer;
if TF_Main(GForm).GDBMode = bkProjectManager then
begin
seIndex.Properties.OnChange := nil;
try
seIndex.Value := AComponent.MarkID;
finally
seIndex.Properties.OnChange := seIndexPropertiesChange;
end;
end;
//*** <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
AComponent.LoadComponentType;
ComboBox_ComponentType.Properties.OnChange := nil;
try
case TF_Main(GForm).GDBMode of
bkNormBase:
SelectItemByIDinCombo(ComboBox_ComponentType, AComponent.ID_ComponentType);
bkProjectManager:
begin
AddItemToCombo(ComboBox_ComponentType, AComponent.ComponentType.Name, AComponent.GUIDComponentType, AComponent.ID_ComponentType,
AComponent.GUIDComponentType, AComponent.ID_ComponentType, nil);
SelectItemByGUIDinCombo(ComboBox_ComponentType, AComponent.GUIDComponentType);
end;
end;
finally
ComboBox_ComponentType.Properties.OnChange := ComboBox_ComponentTypePropertiesChange;
end;
FCurrComponentType := AComponent.ComponentType;
//*** <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//cePriceSupply.Properties.OnChange := nil;
cePriceSupply.Value := RoundCP(AComponent.PriceSupply);
//cePriceSupply.Properties.OnChange := cePriceSupplyPropertiesChange;
//FSuppliesKind := F_NormBase.DM.GetSuppliesKindByID(AComponent.IDSuppliesKind, AComponent.GUIDSuppliesKind);
FSuppliesKind := TF_Main(GForm).DM.GetSuppliesKindByID(AComponent.IDSuppliesKind, AComponent.GUIDSuppliesKind);
DefineSuppliesKindWorkValuesToFields(FSuppliesKind, TF_Main(GForm).FUOM);
cbSuppliesKind.Properties.OnChange := nil;
if AComponent.GUIDSuppliesKind <> '' then
SelectItemByGUIDinCombo(cbSuppliesKind, AComponent.GUIDSuppliesKind)
else
SelectItemByIDinCombo(cbSuppliesKind, AComponent.IDSuppliesKind);
cbSuppliesKind.Properties.OnChange := cbSuppliesKindPropertiesChange;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
CheckBox_HasNds.Checked := IntToBool(AComponent.HASNDS);
ShowNDSPrice;
ComponPrice := AComponent.Price;
if CheckPriceTransformToUOMByCompType(@FCurrComponentType) then
ComponPrice := FloatInUOM(ComponPrice, TF_Main(GForm).FUOM, umMetr);
case AComponent.HASNDS of
biFalse:
begin // <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> - <20><>
CurrencyEdit_Nds1.Value := Round3(ComponPrice);
//CurrencyEdit_Nds2.Value := Round3(AComponent.Price *
// (TF_Main(GForm).GLocalCurrencyM.Data.Ratio / TF_Main(GForm).GLocalCurrencyS.Data.Ratio));
CurrencyEdit_Nds2.Value := Round3(GetPriceAfterChangeCurrency(ComponPrice,
TF_Main(GForm).GLocalCurrencyM.Data, TF_Main(GForm).GLocalCurrencyS.Data));
CurrencyEdit_Price1.Value := Round3(PriceWithoutNDS(ComponPrice, TF_Main(GForm).GNDS));
//CurrencyEdit_Price2.Value := Round3( PriceWithoutNDS( AComponent.Price, TF_Main(GForm).GNDS) *
// (TF_Main(GForm).GLocalCurrencyM.Data.Ratio / TF_Main(GForm).GLocalCurrencyS.Data.Ratio));
CurrencyEdit_Price2.Value := Round3(GetPriceAfterChangeCurrency(PriceWithoutNDS(ComponPrice, TF_Main(GForm).GNDS),
TF_Main(GForm).GLocalCurrencyM.Data, TF_Main(GForm).GLocalCurrencyS.Data));
end;
biTrue:
begin // <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> - <20><><EFBFBD>
CurrencyEdit_Price1.Value := Round3(ComponPrice);
//CurrencyEdit_Price2.Value := Round3(AComponent.Price *
// (TF_Main(GForm).GLocalCurrencyM.Data.Ratio / TF_Main(GForm).GLocalCurrencyS.Data.Ratio));
CurrencyEdit_Price2.Value := Round3(GetPriceAfterChangeCurrency(ComponPrice,
TF_Main(GForm).GLocalCurrencyM.Data, TF_Main(GForm).GLocalCurrencyS.Data));
end;
end;
end;
DefineSupplyPriceByComponActualPrice;
Edit_NameShort.Text := AComponent.NameShort;
Edit_Izm.Text := AComponent.Izm;
Edit_NameMark.Text := AComponent.NameMark;
//Edit_MarkStr.Text := AComponent.MarkStr;
Edit_Notice.Text := AComponent.Notice;
//CheckBox_IsUserMark.Checked := IntToBool(IsUserMark);
if AComponent.IsUserMark = biTrue then
SetValueToCXRadioBottonAsNoChange(rbMarkByDefault, true)
else
SetValueToCXRadioBottonAsNoChange(rbMarkByTemplate, true);
//case ISComplect of
// 0: RadioGroup_CanComplect.ItemIndex := 1;
// 1: RadioGroup_CanComplect.ItemIndex := 0;
//end;
cbCanComplect.Checked := IntToBool(AComponent.ISComplect);
cbIsMarkInCaptions.Checked := IntToBool(AComponent.IsMarkInCaptions);
//case HASNDS of
// 0: RadioGroup_HasNds.ItemIndex := 1;
// 1: RadioGroup_HasNds.ItemIndex := 0;
//end;
ComboBox_ComponentType.Properties.OnChange := nil;
VisibleInterfaceColumns(AComponent.IsLine = biTrue);
ComboBox_ComponentType.Properties.OnChange := ComboBox_ComponentTypePropertiesChange;
//DefineParamsBySupply(false);
SpinEdit_UserLength.Value := FloatInUOM(AComponent.UserLength, umMetr, TF_Main(GForm).FUOM);
//SpinEdit_ObjectIconStep.Value := AComponent.ObjectIconStep;
cbDismount.OnClick := nil;
try
cbDismount.Checked := IntToBool(AComponent.IsDismount);
finally
cbDismount.OnClick := cbDismountClick;
end;
cbUseDismounted.Checked := IntToBool(AComponent.IsUseDismounted);
if AComponent.GUIDProducer <> '' then
SelectItemByGUIDinCombo(ComboBox_Producer, AComponent.GUIDProducer)
else
SelectItemByIDinCombo(ComboBox_Producer, AComponent.ID_Producer);
if AComponent.GUIDNetType <> '' then
SelectItemByGUIDinCombo(ComboBox_NetType, AComponent.GUIDNetType)
else
SelectItemByIDinCombo(ComboBox_NetType, AComponent.IDNetType);
SelectItemByIDinCombo(cbSpecification, AComponent.IDCompSpecification);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
{ID_NetType := TObject.Create;
for i := 0 to ComboBox_NetType.Properties.Items.Count - 1 do
begin
ID_NetType := ComboBox_NetType.Properties.Items.Objects[i];
if (ID_NetType as TID).ID = IDNetType then
begin
ComboBox_NetType.ItemIndex := i;
ComboBox_NetType.Refresh;
Break;
end;
end;}
//With TF_Main(GForm).DM do
// LoadMT(GID_COMPONENT, tkComponIconsED, ComponIconsFields);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
with TF_Main(GForm).DM do
begin
if not AFromChangeComponType then
begin
LoadMT(AComponent.ID, tkInterfRelED, InterfFields, AFromChangeComponType);
//MemTable_InterfaceRelEd.LoadFromDataSet(MemTable_InterfaceRel, []);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if AComponent.IsLine = biFalse then
begin
//With TF_Main(GForm).DM do
LoadMT(AComponent.ID, tkPortED, PortFields, AFromChangeComponType);
LoadMT(AComponent.ID, tkPortInterfRelED, nil, AFromChangeComponType);
DefineAllPortInterfRelNames;
end;
LoadMT(AComponent.ID, tkInterfInternalConnED, nil, AFromChangeComponType);
end
else
SendInterfacesPortsToMemTable(AComponent, true, false);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//With TF_Main(GForm).DM do
if not AFromChangeComponType then
LoadMT(AComponent.ID, tkPropertyRelED, PropertFields, AFromChangeComponType)
else
FillMemTablePropFromList(MemTable_PropertyEd, AComponent.Properties, true);
//MemTable_PropertyEd.LoadFromDataSet(MemTable_Property, [], AFromChangeComponType);
LoadComponIcon(AComponent.IDObjectIcon, AComponent.GUIDObjectIcon, Image_CompIcons);
LoadComponIcon(AComponent.IDSymbol, AComponent.GUIDSymbol, Image_Symbol);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
//With TF_Main(GForm).DM do
if not AFromChangeComponType then
LoadMT(AComponent.ID, tkComplectED, ComplectsFields, AFromChangeComponType);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if AComponent.ComponentType.SysName = ctsnCableChannel then
if not AFromChangeComponType then
LoadMT(AComponent.ID, tkCableCanalConnectorsED, CableCanalConnectorsFields, AFromChangeComponType)
else
FillMemTableCableCanalConnectors(MemTable_CableCanalConnectorsEd, AComponent.CableCanalConnectors, true);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>-<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if AComponent.ComponentType.SysName = ctsnCupBoard then
if not AFromChangeComponType then
LoadMT(AComponent.ID, tkCrossConnectionED, nil, AFromChangeComponType)
end;
LoadNormsResources(AFromChangeComponType);
IsEnableControls := true;
if TF_Main(GForm).GDBMode = bkProjectManager then
begin
GLastPort := TF_Main(GForm).DM.GetComponentLastPort(AComponent.ID);
//26.05.2009 EnableControl(false);
IsEnableControls := false;
//Caption := '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
end
else
begin
{$IF Defined (FINAL_SCS)}
IsEnableControls := Not FIsTemplate;
{$IFEND}
end;
EnableControl(IsEnableControls);
SetVisibleByIsLine(AComponent.ComponentType.IsLine);
finally
FIsLoadingForm := false;
end;
end;
procedure TF_AddComponent.SendInterfacesPortsToMemTable(ASCSComponent: TSCSComponent; AAsNew, AAskDelInterf: Boolean);
var
ComponentType: TComponentType;
Interf: TSCSInterface;
InternalConnected: TSCSInterface;
ptrPortInterfRel: PPortInterfRel;
NewID: Integer;
i, j: Integer;
WorkMemTable: TkbmMemtable;
SavedMasterSource: TDataSource;
PortInterfRelName: string;
CurrNumPair: Integer;
{procedure ClearPortInterfaceMemTable(AMemTable: TkbmMemTable; AIsPort: Boolean);
var
i: Integer;
NumPair: Integer;
CanDelete: Boolean;
begin
AMemTable.Last;
while not AMemTable.Bof do
begin
if (AMemTable.FieldByName(fnIsBusy).AsInteger = biFalse) and
(AMemTable.FieldByName(fnIsNative).AsBoolean = True) then
begin
NumPair := 0;
if not AIsPort then
NumPair := AMemTable.FieldByName(fnNumPair).AsInteger;
CanDelete := false;
if AMemTable.FieldByName(fnIsNew).AsBoolean then
CanDelete := true
else if not CheckInterfIsUse(GForm, GIDComponent, AMemTable.FieldByName(fnID).AsInteger, NumPair) then
CanDelete := true;
if CanDelete then
begin
if (AMemTable.FieldByName(fnIsNew).AsBoolean = false) and
(AMemTable.FieldByName(fnIsNative).AsBoolean = true) then
GDeletedInterfRel.Add(AMemTable.FieldByName(fnID).AsInteger);
AMemTable.Delete;
Continue; ///// CONTINUE /////
end;
end;
AMemTable.Prior;
end;
end;}
begin
ComponentType := GetComponentType;
CurrNumPair := 0;
with TF_Main(GForm).DM do
begin
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (MemTable_PortEd.RecordCount > 0) or (MemTable_InterfaceRelEd.RecordCount > 0) then
begin
if Not AAskDelInterf or (MessageModal(cQuastLeavePresentInterfaces, ApplicationName, MB_ICONINFORMATION or MB_YESNO) = IDNO) then
begin
//ClearPortInterfaceMemTable(MemTable_PortEd, true);
// ClearPortInterfaceMemTable(MemTable_InterfaceRelEd, false);
//
// //*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// mtInterfInternalConnEd.First;
// while not mtInterfInternalConnEd.Eof do
// mtInterfInternalConnEd.Delete;
DeleteAllPortsAndInterf;
end
else
begin
CurrNumPair := GetMaxNumPair(MemTable_InterfaceRelEd);
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> 0
for i := 0 to ASCSComponent.Interfaces.Count - 1 do
ASCSComponent.Interfaces[i].NumPair := 0;
end;
end;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID <20><>
for i := 0 to ASCSComponent.Interfaces.Count - 1 do
begin
Interf := ASCSComponent.Interfaces[i];
NewID := GenNewID(tkInterfRelED);
Interf.ClearIOfIRels;
if Interf.ParallelInterface <> nil then
begin
case ComponentType.IsLine of
biTrue:
begin
Interf.ParallelInterface.IDAdverse := NewID;
if (Interf.NumPair = 0) and (Interf.ParallelInterface.NumPair = 0) then
begin
Inc(CurrNumPair);
Interf.NumPair := CurrNumPair;
Interf.ParallelInterface.NumPair := CurrNumPair;
end;
end;
biFalse:
begin
Interf.ParallelInterface.IDAdverse := 0;
Interf.IDAdverse := 0;
end;
end;
end;
//if Interf.PortOwner <> nil then
// begin
// ptrPortInterfRel := Interf.PortOwner.GetPortInterfRelByInterfID(Interf.ID);
// if ptrPortInterfRel <> nil then
// ptrPortInterfRel.IDInterfRel := NewID;
// end;
////if Interf.IsPort = biTrue then ##ISPORT
//for j := 0 to Interf.PortInterfRels.Count - 1 do
// begin
// ptrPortInterfRel := Interf.PortInterfRels[j];
// ptrPortInterfRel.ID := GenNewID(tkPortInterfRelED);
// ptrPortInterfRel.IDPort := NewID;
// end;
Interf.NewID := NewID;
Interf.ID_Component := GIDComponent;
Interf.IsBusy := biFalse;
Interf.IsNew := True;
end;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for i := 0 to ASCSComponent.Interfaces.Count - 1 do
begin
Interf := ASCSComponent.Interfaces[i];
for j := 0 to Interf.PortInterfRels.Count - 1 do
begin
ptrPortInterfRel := Interf.PortInterfRels[j];
ptrPortInterfRel.ID := GenNewID(tkPortInterfRelED);
ptrPortInterfRel.IDPort := Interf.NewID;
InternalConnected := ASCSComponent.GetInterfaceByID(ptrPortInterfRel.IDInterfRel);
//if InternalConnected <> nil then
ptrPortInterfRel.IDInterfRel := InternalConnected.NewID;
ptrPortInterfRel.IsNew := True;
end;
end;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ID-<2D><>
for i := 0 to ASCSComponent.Interfaces.Count - 1 do
begin
Interf := ASCSComponent.Interfaces[i];
Interf.ID := Interf.NewID;
end;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for i := 0 to ASCSComponent.Interfaces.Count - 1 do
begin
Interf := ASCSComponent.Interfaces[i];
WorkMemTable := nil;
case Interf.IsPort of
biTrue:
WorkMemTable := MemTable_PortEd;
biFalse:
WorkMemTable := MemTable_InterfaceRelEd;
end;
if WorkMemTable <> nil then
begin
LoadInterfaceToMemTable(Interf, WorkMemTable, MemTable_PortInterfRelEd, mtInterfInternalConnEd, meMake,
ComponentType.IsLine, true, false);
WorkMemTable.Edit;
WorkMemTable.FieldByName(fnIsNew).AsBoolean := AAsNew;
WorkMemTable.Post;
end;
end;
LoadInterfRelNamesToMemTable(MemTable_PortEd);
LoadInterfRelNamesToMemTable(MemTable_InterfaceRelEd);
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
if MemTable_PortInterfRelEd.RecordCount > 0 then // Tolik 28/12/2019 --
begin
SavedMasterSource := MemTable_PortInterfRelEd.MasterSource;
MemTable_PortInterfRelEd.MasterSource := nil;
try
for j := 0 to MemTable_PortInterfRelEd.RecordCount - 1 do
begin
PortInterfRelName := '';
Interf := ASCSComponent.GetInterfaceByID(MemTable_PortInterfRelEd.FieldByName(fnIDInterfRel).AsInteger);
if Interf <> nil then
PortInterfRelName := Interf.LoadName;
MemTable_PortInterfRelEd.RecNo := j + 1;
MemTable_PortInterfRelEd.Edit;
MemTable_PortInterfRelEd.FieldByName(fnName).AsString := PortInterfRelName;
MemTable_PortInterfRelEd.FieldByName(fnIsNew).AsBoolean := AAsNew;
MemTable_PortInterfRelEd.Post;
end;
finally
MemTable_PortInterfRelEd.MasterSource := SavedMasterSource;
end;
end;
DefineAllPortInterfRelNames;
end;
end;
procedure TF_AddComponent.DefineComponCurrencies;
begin
//FCurrency := TF_Main(GForm).GCurrencyM;
//FNBCurrency := TF_Main(GForm).FNormBase.GCurrencyM;
FCurrency := TF_Main(GForm).GLocalCurrencyM.Data;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
FIDCatalog := 0;
if GFormMode = fmMake then
FIDCatalog := TF_Main(GForm).GSCSBase.SCSCatalog.ID
else
FIDCatalog := TF_Main(GForm).DM.GetComponCatalogOwnerID(GIDComponent);
FNBCurrency := TF_Main(GForm).DM.GetCatalogOrComponCurrencyProperGlobalMainInNB(FIDCatalog, GIDComponent);
end;
procedure TF_AddComponent.DefineComponSecondPrice(AFirstPrice: Double);
var
RoundValue: Double;
begin
//RoundValue := Round3(AFirstPrice * (TF_Main(GForm).GLocalCurrencyM.Data.Ratio / TF_Main(GForm).GLocalCurrencyS.Data.Ratio));
RoundValue := Round3(GetPriceAfterChangeCurrency(AFirstPrice, TF_Main(GForm).GLocalCurrencyM.Data, TF_Main(GForm).GLocalCurrencyS.Data));
CurrencyEdit_Price2.Value := RoundValue;
end;
procedure TF_AddComponent.DefineNormResByProperty(Aproperty: PProperty);
var
Compon: TSCSComponent;
SCSNorm: TSCSNorm;
ResourceRel: TSCSResourceRel;
MemTable: TkbmMemTable;
//MemTableBookmark: String;
MemTableBookmark: TBookMark;
DeletedFromMemTable: Boolean;
FDeletedNormIDs: TIntList;
FDeletedResIDs: TIntList;
ObjFromMemTable: TRapList;
i: Integer;
begin
try
if TF_Main(GForm).GDBMode = bkProjectManager then
begin
Compon := CreateFormOnlyComponent;
ObjFromMemTable := TRapList.Create;
MemTable := TF_Main(GForm).DM.MemTable_NormsEd;
//MemTableBookmark := MemTable.Bookmark;
MemTableBookmark := MemTable.GetBookmark;
MemTable.DisableControls;
try
MemTable.First;
while not MemTable.Eof do
begin
case MemTable.FieldByName(fnIsResource).AsBoolean of
true: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
begin
ResourceRel := TSCSResourceRel.Create(GForm, ntProj);
TF_Main(GForm).DM.LoadFromMTToResource(MemTable, ResourceRel, tkNormEd);
ResourceRel.IDMaster := Compon.ID;
Compon.NormsResources.Resources.Add(ResourceRel);
InsertValueToSortetRapList(ResourceRel, ObjFromMemTable);
end;
false: // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
begin
SCSNorm := TSCSNorm.Create(GForm, ntProj);
TF_Main(GForm).DM.LoadFromMTToNorm(MemTable, SCSNorm);
SCSNorm.IDMaster := Compon.ID;
Compon.NormsResources.Norms.Add(SCSNorm);
InsertValueToSortetRapList(SCSNorm, ObjFromMemTable);
end;
end;
MemTable.Next;
end;
Compon.ProjectOwner := TF_Main(GForm).GSCSBase.CurrProject;
FDeletedNormIDs := TIntList.Create;
FDeletedResIDs := TIntList.Create;
try
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>. <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
DefineComponNormResByProperty(Compon, Aproperty, false, FDeletedNormIDs, FDeletedResIDs);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (FDeletedNormIDs.Count > 0) or (FDeletedResIDs.Count > 0) then
begin
MemTable.Last;
while Not MemTable.Bof do
begin
DeletedFromMemTable := false;
if MemTable.FieldByName(fnIsResource).AsBoolean then
begin
if FDeletedResIDs.IndexOf(MemTable.FieldByName(fnID).AsInteger) <> -1 then
begin
if Not MemTable.FieldByName(fnIsNew).AsBoolean then
GDeletedResourceID.Add(MemTable.FieldByName(fnID).AsInteger);
{if MemTableBookmark = MemTable.Bookmark then
MemTableBookmark := '';}
MemTable.Delete;
DeletedFromMemTable := true;
end;
end
else
if FDeletedNormIDs.IndexOf(MemTable.FieldByName(fnID).AsInteger) <> -1 then
begin
if Not MemTable.FieldByName(fnIsNew).AsBoolean then
GDeletedNormID.Add(MemTable.FieldByName(fnID).AsInteger);
{ if MemTableBookmark = MemTable.Bookmark then
MemTableBookmark := '';}
MemTable.Delete;
DeletedFromMemTable := true;
end;
if Not DeletedFromMemTable then
MemTable.Prior;
end;
//GDeletedNormID.Assign(FDeletedNormIDs, laOr);
//GDeletedResourceID.Assign(FDeletedResIDs, laOr);
end;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
for i := 0 to Compon.NormsResources.Norms.Count - 1 do
begin
SCSNorm := Compon.NormsResources.Norms[i];
if GetValueIndexFromSortedRapList(SCSNorm, ObjFromMemTable) = -1 then
begin
SCSNorm.ID := GenNewID(tkNormEd);
SCSNorm.IsNew := True;
TF_Main(GForm).DM.LoadFromNormToMT(SCSNorm, MemTable, meMake, -1, FTraccaLength, nil);
{ if MemTableBookmark = '' then
MemTableBookmark := MemTable.Bookmark;}
end;
end;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for i := 0 to Compon.NormsResources.Resources.Count - 1 do
begin
ResourceRel := Compon.NormsResources.Resources[i];
if GetValueIndexFromSortedRapList(ResourceRel, ObjFromMemTable) = -1 then
begin
ResourceRel.ID := GenNewID(tkResourceRelEd);
ResourceRel.IsNew := True;
TF_Main(GForm).DM.LoadFromResourceToMT(ResourceRel, MemTable, meMake, tkNormEd, FTraccaLength, nil);
{ if MemTableBookmark = '' then
MemTableBookmark := MemTable.Bookmark;}
end;
end;
finally
FreeAndNil(FDeletedNormIDs);
FreeAndNil(FDeletedResIDs);
end;
finally
MemTable.EnableControls;
FreeAndNil(Compon);
FreeAndNil(ObjFromMemTable);
{if MemTableBookmark <> '' then
MemTable.Bookmark := MemTableBookmark;}
if MemTableBookmark <> nil then
begin
MemTable.GotoBookmark(MemTableBookmark);
MemTable.FreeBookmark(MemTableBookmark);
end;
end;
end;
except
on E: Exception do AddExceptionToLogEx('TF_AddComponent.DefineNormResByProperty', E.Message);
end;
end;
procedure TF_AddComponent.DefineParamsBySupply(APriceSupply: Double; ADefIzm: Boolean);
var
IDSuppliesKind: Integer;
GUIDSuppliesKind: string;
SuppliesKind: TSuppliesKind;
Key: Word;
NewComponPrice: Double;
begin
IDSuppliesKind := GetIDFromComboBox(cbSuppliesKind);
GUIDSuppliesKind := GetGUIDFromComboBox(cbSuppliesKind);
SuppliesKind := FSuppliesKind; //F_NormBase.DM.GetSuppliesKindByID(IDSuppliesKind);
if (SuppliesKind.ID <> 0) or (SuppliesKind.GUID <> '') then
begin
NewComponPrice := Round3(APriceSupply / SuppliesKind.UnitKolvo);
if CheckPriceTransformToUOMByCompType(@FCurrComponentType) then
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><>. <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD>) <20> <20><><EFBFBD>. <20><>.<2E><><EFBFBD><EFBFBD><EFBFBD>
NewComponPrice := FloatInUOM(NewComponPrice, TF_Main(GForm).FUOM, TF_Main(GForm).FUOMSupplKind);
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20> <20><><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>- <20><><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if not CheckBox_HasNds.Checked then
NewComponPrice := PriceWithoutNDS(NewComponPrice, TF_Main(GForm).GNDS);
CurrencyEdit_Price1.Value := NewComponPrice;
DefineComponSecondPrice(CurrencyEdit_Price1.Value);
ShowNDSPrice;
//Key := 0;
//CurrencyEdit_Price1_KeyUp(CurrencyEdit_Price1, Key, []);
if ADefIzm then
begin
if SuppliesKind.Izm <> '' then
if GetNameUOMForCompon('', @FCurrComponentType, TF_Main(GForm).FUOM) = '' then
Edit_Izm.Text := SuppliesKind.Izm;
end;
end;
end;
procedure TF_AddComponent.DefineSupplyPriceByComponActualPrice;
begin
DefineSupplyPriceByComponPrice(GetComponentActualPrice);
end;
procedure TF_AddComponent.DefineSupplyPriceByComponPrice(AComponPrice: Double);
var
SavedOnChange: TNotifyEvent;
ComponPrice: Double;
begin
if FSuppliesKind.ID > 0 then
begin
SavedOnChange := cePriceSupply.Properties.OnChange;
cePriceSupply.Properties.OnChange := nil;
try
ComponPrice := AComponPrice;
if CheckPriceTransformToUOMByCompType(@FCurrComponentType) then
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD>. <20><>.<2E><><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD> <20><><EFBFBD><EFBFBD>)
ComponPrice := FloatInUOM(ComponPrice, TF_Main(GForm).FUOMSupplKind, TF_Main(GForm).FUOM);
cePriceSupply.Value := RoundCP(ComponPrice * FSuppliesKind.UnitKolvo);
finally
cePriceSupply.Properties.OnChange := SavedOnChange;
end;
end;
end;
procedure TF_AddComponent.DefinecbApplyCompData;
begin
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
if cbApplyForCurrentDir.Checked then
if TF_Main(GForm).GDBMode = bkNormBase then
begin
cbApplyComponData.Visible := IntToBool(FApplyComponElementsVisible[Grid.ActiveLevel.Index]);
cbApplyComponData.Checked := IntToBool(FApplyComponElementsChecked[Grid.ActiveLevel.Index]);
end;
end;
procedure TF_AddComponent.DefineUniversalInterfacesByProperty(AProp: PProperty; const ACompTypeSysName: string);
var
MemTableProp: TkbmMemTable;
//MemTablePropBookmark: string;
MemTablePropBookmark, MemTablePortBookmark,MemTableInterfRelBookmark: TBookMark;
MemTablePort: TkbmMemTable;
//MemTablePortBookmark: string;
MemTableInterfRel: TkbmMemTable;
//MemTableInterfRelBookmark: string;
MemTablePortInterfRel: TkbmMemTable;
MemTableInterfInternalConn: TkbmMemTable;
Spravochnik: TSpravochnik;
//SprInterface: TNBInterface;
mePortRel: TmeInterfaceRel;
meInterfRel: TmeInterfaceRel;
InterfFinded: Boolean;
PortCount: Integer;
PortWireCount: Integer;
WireCount: Integer;
PropGender: ShortInt;
InterfSection: Double;
InterfGuid: String;
InterfRelCount: Integer;
KeyValues: OleVariant;
PropSysNamesConduitElmtSideDimensions: TStringList;
IDChangedInterfaces: TIntList;
FindedInterf: Boolean;
i: Integer;
function GetNewInterfPortRel(const AGUID: string): TmeInterfaceRel;
var
SprInterface: TNBInterface;
begin
Result.ID := GGenLastInterfID + 1;
Result.ID_COMPONENT := GIDComponent;
Result.IsLineCompon := FCurrComponentType.IsLine;
Result.Color := clWhite;
Result.ID_INTERFACE := 0;
Result.IsBusy := biFalse;
Result.SignType := oitProjectible;
Result.Count := 1;
SprInterface := Spravochnik.CreateInterfaceByStandartGUID(AGUID);
Result.ID_INTERFACE := SprInterface.ID;
Result.GUIDInterface := AGUID;
Result.Name := SprInterface.Name;
end;
begin
try
if (AProp <> nil) or (ACompTypeSysName <> '') then
begin
MemTableProp := TF_Main(GForm).DM.MemTable_PropertyEd;
//MemTablePropBookmark := MemTableProp.Bookmark;
MemTablePropBookmark := MemTableProp.GetBookmark;
MemTablePort := TF_Main(GForm).DM.MemTable_PortEd;
//MemTablePortBookmark := MemTablePort.Bookmark;
MemTablePortBookmark := MemTablePort.GetBookmark;
MemTableInterfRel := TF_Main(GForm).DM.MemTable_InterfaceRelEd;
//MemTableInterfRelBookmark := MemTableInterfRel.Bookmark;
MemTableInterfRelBookmark := MemTableInterfRel.getBookmark;
MemTablePortInterfRel := TF_Main(GForm).DM.MemTable_PortInterfRelEd;
MemTableInterfInternalConn := TF_Main(GForm).DM.mtInterfInternalConnEd;
Spravochnik := TF_Main(GForm).GetSpravochnik;
PropSysNamesConduitElmtSideDimensions := CreateStringListSorted; //TStringList.Create;
PropSysNamesConduitElmtSideDimensions.Add(pnConduitElmentSideDimensions); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PropSysNamesConduitElmtSideDimensions.Add(pnConduitElmentSide1Dimensions); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PropSysNamesConduitElmtSideDimensions.Add(pnConduitElmentSide2Dimensions); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PropSysNamesConduitElmtSideDimensions.Add(pnConduitElmentSide3Dimensions); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 3 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PropSysNamesConduitElmtSideDimensions.Add(pnConduitElmentSide4Dimensions); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
MemTableProp.DisableControls;
try
ZeroMemory(@mePortRel, SizeOf(TmeInterfaceRel));
ZeroMemory(@meInterfRel, SizeOf(TmeInterfaceRel));
if AProp <> nil then
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
if (AProp.SysName = pnPortCount) or (AProp.SysName = pnPortWireCount) then
begin
{IGOR} //D0000006314
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if GLiteVersion or GAllowConvertInterfToUniversal then
begin
PortCount := -1;
PortWireCount := -1;
if AProp.SysName = pnPortCount then
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD>
PortCount := StrToIntDef(AProp.Value, 0);
if MemTableProp.Locate(fnSysName, pnPortWireCount, []) then
PortWireCount := StrToIntDef(MemTableProp.FieldByName(fnPValue).AsString, 0);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if Not MemTablePort.Locate(fnGuidInterface, guidUniversalPort, []) then
begin
mePortRel := GetNewInterfPortRel(guidUniversalPort);
mePortRel.IsPort := biTrue;
mePortRel.TypeI := itFunctional;
mePortRel.Kind := ikSplit;
mePortRel.Gender := gtFemale;
mePortRel.Multiple := biFalse;
mePortRel.Kolvo := PortCount;
AddInterfaceToMT(mePortRel);
mePortRel.ID := MemTablePort.FieldByName(fnID).AsInteger;
end
else
begin
MemTablePort.Edit;
MemTablePort.FieldByName(fnKolvo).AsInteger := PortCount;
MemTablePort.FieldByName(fnIsModified).AsBoolean := true;
MemTablePort.Post;
mePortRel.ID := MemTablePort.FieldByName(fnID).AsInteger;
end;
end
else
if AProp.SysName = pnPortWireCount then
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
PortWireCount := StrToIntDef(AProp.Value, 0);
if MemTableProp.Locate(fnSysName, pnPortCount, []) then
PortCount := StrToIntDef(MemTableProp.FieldByName(fnPValue).AsString, 0);
// <20><><EFBFBD><EFBFBD> ID <20><><EFBFBD><EFBFBD><EFBFBD>
if MemTablePort.Locate(fnGuidInterface, guidUniversalPort, []) then
mePortRel.ID := MemTablePort.FieldByName(fnID).AsInteger;
end;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> + <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
if PortWireCount <> -1 then
begin
InterfRelCount := PortWireCount;
if PortCount <> -1 then
InterfRelCount := PortCount * PortWireCount;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KeyValues := VarArrayCreate([0, 2], varVariant);
KeyValues[0] := guidUniversalWire;
KeyValues[1] := itFunctional;
KeyValues[2] := gtFemale;
if Not MemTableInterfRel.Locate(fnGuidInterface+';'+fnTypeI+';'+fnGender, KeyValues, []) then
begin
meInterfRel := GetNewInterfPortRel(guidUniversalWire);
meInterfRel.IsPort := biFalse;
meInterfRel.TypeI := itFunctional;
meInterfRel.Kind := ikNoSplit;
meInterfRel.Gender := gtFemale;
meInterfRel.Multiple := biFalse;
meInterfRel.Kolvo := InterfRelCount;
AddInterfaceToMT(meInterfRel);
meInterfRel.ID := MemTableInterfRel.FieldByName(fnID).AsInteger;
end
else
begin
MemTableInterfRel.Edit;
MemTableInterfRel.FieldByName(fnKolvo).AsInteger := InterfRelCount;
MemTableInterfRel.FieldByName(fnIsModified).AsBoolean := true;
MemTableInterfRel.Post;
meInterfRel.ID := MemTableInterfRel.FieldByName(fnID).AsInteger;
meInterfRel.Name := MemTableInterfRel.FieldByName(fnName).AsString;
end;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD>
if (mePortRel.ID <> 0) and (meInterfRel.ID <> 0) then
begin
KeyValues := VarArrayCreate([0, 2], varVariant);
KeyValues[0] := mePortRel.ID; //fnIDPort
KeyValues[1] := meInterfRel.ID; //fnIDInterfRel
KeyValues[2] := rtPortInterfRel; //fnRelType
if Not MemTablePortInterfRel.Locate(fnIDPort+';'+fnIDInterfRel+';'+fnRelType, KeyValues, []) then
begin
MemTablePortInterfRel.Append;
MemTablePortInterfRel.FieldByName(fnRelType).AsInteger := rtPortInterfRel;
MemTablePortInterfRel.FieldByName(fnIDPort).AsInteger := mePortRel.ID;
MemTablePortInterfRel.FieldByName(fnIDInterfRel).AsInteger := meInterfRel.ID;
MemTablePortInterfRel.FieldByName(fnUnitInterfKolvo).AsInteger := PortWireCount;
MemTablePortInterfRel.FieldByName(fnName).AsString := meInterfRel.Name;
MemTablePortInterfRel.FieldByName(fnIsNew).AsBoolean := true;
MemTablePortInterfRel.Post;
end
else
begin
MemTablePortInterfRel.Edit;
MemTablePortInterfRel.FieldByName(fnUnitInterfKolvo).AsInteger := PortWireCount;
MemTablePortInterfRel.FieldByName(fnIsModified).AsBoolean := true;
MemTablePortInterfRel.Post;
end;
end;
end;
end;
end
else
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>
if AProp.SysName = pnWireCount then
begin
{IGOR} //D0000006314
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if GLiteVersion or GAllowConvertInterfToUniversal then
begin
WireCount := StrToIntDef(AProp.Value, 0);
PropGender := gtMale;
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> (<28><><EFBFBD><EFBFBD> <20><>), <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if FCurrComponentType.IsLine = biFalse then
PropGender := gtFemale;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KeyValues := VarArrayCreate([0, 2], varVariant);
KeyValues[0] := guidUniversalWire;
KeyValues[1] := itFunctional;
KeyValues[2] := PropGender;
if Not MemTableInterfRel.Locate(fnGuidInterface+';'+fnTypeI+';'+fnGender, KeyValues, []) then
begin
meInterfRel := GetNewInterfPortRel(guidUniversalWire);
meInterfRel.IsPort := biFalse;
meInterfRel.TypeI := itFunctional;
meInterfRel.Kind := ikNoSplit;
meInterfRel.Gender := PropGender;
meInterfRel.Multiple := biFalse;
meInterfRel.Kolvo := WireCount;
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if FCurrComponentType.IsLine = biTrue then
begin
meInterfRel.Count := 2;
meInterfRel.ServiceIsPair := true;
end;
AddInterfaceToMT(meInterfRel);
meInterfRel.ID := MemTableInterfRel.FieldByName(fnID).AsInteger;
end
else
begin
MemTableInterfRel.Edit;
MemTableInterfRel.FieldByName(fnKolvo).AsInteger := WireCount;
MemTableInterfRel.FieldByName(fnIsModified).AsBoolean := true;
MemTableInterfRel.Post;
meInterfRel.ID := MemTableInterfRel.FieldByName(fnID).AsInteger;
meInterfRel.ID_Adverse := MemTableInterfRel.FieldByName(fnIDAdverse).AsInteger;
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if FCurrComponentType.IsLine = biTrue then
if MemTableInterfRel.Locate(fnID, meInterfRel.ID_Adverse, []) then
begin
MemTableInterfRel.Edit;
MemTableInterfRel.FieldByName(fnKolvo).AsInteger := WireCount;
MemTableInterfRel.FieldByName(fnIsModified).AsBoolean := true;
MemTableInterfRel.Post;
end;
end;
end;
end
else
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (AProp.SysName = pnInSection) or (AProp.SysName = pnOutSection) then
begin
InterfSection := StrToFloatDef_My(AProp.Value, 0);
InterfSection := FloatInUOM(InterfSection, umMM, umSM, 2);
InterfFinded := false;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
InterfGuid := guidUniversalInConstr;
PropGender := gtFemale;
if AProp.SysName = pnOutSection then
begin
InterfGuid := guidUniversalOutConstr;
PropGender := gtMale;
end;
KeyValues := VarArrayCreate([0, 2], varVariant);
KeyValues[0] := InterfGuid;
KeyValues[1] := itConstructive;
KeyValues[2] := PropGender;
if Not MemTableInterfRel.Locate(fnGuidInterface+';'+fnTypeI+';'+fnGender, KeyValues, []) then
begin
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>c <20><> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD>=PropGender, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KeyValues := VarArrayCreate([0, 3], varVariant);
KeyValues[0] := itConstructive;
KeyValues[1] := PropGender;
KeyValues[2] := True; //IsNative
KeyValues[3] := biTrue; // Multiple
if Not MemTableInterfRel.Locate(fnTypeI+';'+fnGender+';'+fnIsNative+';'+fnMultiple, KeyValues, []) then
begin
meInterfRel := GetNewInterfPortRel(InterfGuid);
meInterfRel.IsPort := biFalse;
meInterfRel.TypeI := itConstructive;
meInterfRel.Kind := ikNoSplit;
meInterfRel.Gender := PropGender;
meInterfRel.Multiple := biTrue;
meInterfRel.Kolvo := 1;
meInterfRel.ValueI := InterfSection;
AddInterfaceToMT(meInterfRel);
meInterfRel.ID := MemTableInterfRel.FieldByName(fnID).AsInteger;
end
else
InterfFinded := true;
end
else
InterfFinded := true;
if InterfFinded then
begin
MemTableInterfRel.Edit;
MemTableInterfRel.FieldByName(fnValueI).AsFloat := InterfSection;
MemTableInterfRel.FieldByName(fnIsModified).AsBoolean := true;
MemTableInterfRel.Post;
end;
end
else
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><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><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (AProp.SysName = pnConduitSideDimensions) or (AProp.SysName = pnCableChannelSideSection) then
begin
//18.01.2011
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
// <20> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>", <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (AProp.SysName = pnCableChannelSideSection) and MemTableProp.Locate(fnSysName, pnConduitSideDimensions, []) then
Exit; ///// EXIT /////
InterfFinded := false;
PropGender := gtMale;
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if FCurrComponentType.IsLine = biFalse then
PropGender := gtFemale;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KeyValues := VarArrayCreate([0, 2], varVariant);
KeyValues[0] := guidUniversalChannelSide;
KeyValues[1] := itFunctional;
KeyValues[2] := PropGender;
if Not MemTableInterfRel.Locate(fnGuidInterface+';'+fnTypeI+';'+fnGender, KeyValues, []) then
begin
// <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>c <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><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>
KeyValues := VarArrayCreate([0, 3], varVariant);
KeyValues[0] := itFunctional;
KeyValues[1] := gtMale;
KeyValues[2] := True; //IsNative
KeyValues[3] := biFalse;
if Not MemTableInterfRel.Locate(fnTypeI+';'+fnGender+';'+fnIsNative+';'+fnMultiple, KeyValues, []) then
begin
meInterfRel := GetNewInterfPortRel(guidUniversalChannelSide);
meInterfRel.IsPort := biFalse;
meInterfRel.TypeI := itFunctional;
meInterfRel.Kind := ikNoSplit;
meInterfRel.Gender := PropGender;
meInterfRel.Multiple := biFalse;
meInterfRel.Kolvo := 1;
meInterfRel.SideSection := AProp.Value;
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if FCurrComponentType.IsLine = biTrue then
begin
meInterfRel.Count := 2;
meInterfRel.ServiceIsPair := true;
end;
AddInterfaceToMT(meInterfRel);
meInterfRel.ID := MemTableInterfRel.FieldByName(fnID).AsInteger;
end
else
InterfFinded := true;
end
else
InterfFinded := true;
if InterfFinded then
begin
MemTableInterfRel.Edit;
MemTableInterfRel.FieldByName(fnSideSection).AsString := AProp.Value;
MemTableInterfRel.FieldByName(fnIsModified).AsBoolean := true;
MemTableInterfRel.Post;
meInterfRel.ID := MemTableInterfRel.FieldByName(fnID).AsInteger;
meInterfRel.ID_Adverse := MemTableInterfRel.FieldByName(fnIDAdverse).AsInteger;
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if FCurrComponentType.IsLine = biTrue then
if MemTableInterfRel.Locate(fnID, meInterfRel.ID_Adverse, []) then
begin
MemTableInterfRel.Edit;
MemTableInterfRel.FieldByName(fnSideSection).AsString := AProp.Value;
MemTableInterfRel.FieldByName(fnIsModified).AsBoolean := true;
MemTableInterfRel.Post;
end;
end;
end
else
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if PropSysNamesConduitElmtSideDimensions.IndexOf(AProp.SysName) <> -1 then
begin
IDChangedInterfaces := TIntList.Create;
try
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
for i := 0 to PropSysNamesConduitElmtSideDimensions.Count - 1 do
begin
if MemTableProp.Locate(fnSysName, PropSysNamesConduitElmtSideDimensions[i], []) then
begin
FindedInterf := false;
MemTableInterfRel.First;
while Not MemTableInterfRel.Eof do
begin
if (MemTableInterfRel.FieldByName(fnGuidInterface).AsString = guidUniversalChannelSide) and
(MemTableInterfRel.FieldByName(fnIsPort).AsInteger = biFalse) and
(IDChangedInterfaces.IndexOf(MemTableInterfRel.FieldByName(fnID).AsInteger) = -1) and
(MemTableInterfRel.FieldByName(fnGender).AsInteger = gtFemale) and
(MemTableInterfRel.FieldByName(fnTypeI).AsInteger = itFunctional) then
begin
MemTableInterfRel.Edit;
MemTableInterfRel.FieldByName(fnSideSection).AsString := MemTableProp.FieldByName(fnPValue).AsString;
MemTableInterfRel.FieldByName(fnIsModified).AsBoolean := true;
MemTableInterfRel.Post;
FindedInterf := true;
Break; //// BREAK ////
end;
MemTableInterfRel.Next;
end;
if Not FindedInterf then
begin
meInterfRel := GetNewInterfPortRel(guidUniversalChannelSide);
meInterfRel.IsPort := biFalse;
meInterfRel.TypeI := itFunctional;
meInterfRel.Kind := ikNoSplit;
meInterfRel.Gender := gtFemale;
meInterfRel.Multiple := biFalse;
meInterfRel.Kolvo := 1;
meInterfRel.SideSection := MemTableProp.FieldByName(fnPValue).AsString;
AddInterfaceToMT(meInterfRel);
end;
IDChangedInterfaces.Add(MemTableInterfRel.FieldByName(fnID).AsInteger);
end;
end;
finally
FreeAndNil(IDChangedInterfaces);
end;
end;
end
else
if ACompTypeSysName <> '' then
begin
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if ACompTypeSysName = ctsnPatchCord then
begin
{IGOR} //D0000006314
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if GLiteVersion or GAllowConvertInterfToUniversal then
begin
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
KeyValues := VarArrayCreate([0, 2], varVariant);
KeyValues[0] := guidUniversalPort;
KeyValues[1] := itFunctional;
KeyValues[2] := gtMale;
if Not MemTableInterfRel.Locate(fnGuidInterface+';'+fnTypeI+';'+fnGender, KeyValues, []) then
begin
meInterfRel := GetNewInterfPortRel(guidUniversalPort);
meInterfRel.IsPort := biFalse;
meInterfRel.TypeI := itFunctional;
meInterfRel.Kind := ikSplit;
meInterfRel.Gender := gtMale;
meInterfRel.Multiple := biFalse;
meInterfRel.Kolvo := 1;
AddInterfaceToMT(meInterfRel);
meInterfRel.ID := MemTableInterfRel.FieldByName(fnID).AsInteger;
AddInterfaceToMT(meInterfRel);
mePortRel.ID := MemTableInterfRel.FieldByName(fnID).AsInteger;
end;
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if (mePortRel.ID <> 0) and (meInterfRel.ID <> 0) then
begin
KeyValues := VarArrayCreate([0, 2], varVariant);
KeyValues[0] := mePortRel.ID; //fnIDPort
KeyValues[1] := meInterfRel.ID; //fnIDInterfRel
KeyValues[2] := rtInterfInternalConn; //fnRelType
if Not MemTableInterfInternalConn.Locate(fnIDPort+';'+fnIDInterfRel+';'+fnRelType, KeyValues, []) then
begin
MemTableInterfInternalConn.Append;
MemTableInterfInternalConn.FieldByName(fnRelType).AsInteger := rtInterfInternalConn;
MemTableInterfInternalConn.FieldByName(fnIDPort).AsInteger := meInterfRel.ID;
MemTableInterfInternalConn.FieldByName(fnIDInterfRel).AsInteger := mePortRel.ID;
MemTableInterfInternalConn.FieldByName(fnName).AsString := meInterfRel.Name;
MemTableInterfInternalConn.FieldByName(fnUnitInterfKolvo).AsInteger := 1;
MemTableInterfInternalConn.FieldByName(fnGender).AsInteger := gtMale;
MemTableInterfInternalConn.FieldByName(fnIsNew).AsBoolean := true;
MemTableInterfInternalConn.Post;
end;
end;
end;
end;
end;
finally
MemTableProp.EnableControls;
{ MemTableProp.Bookmark := MemTablePropBookmark;
MemTablePort.Bookmark := MemTablePortBookmark;
MemTableInterfRel.Bookmark := MemTableInterfRelBookmark;}
if MemTablePropBookmark <> nil then
begin
MemTableProp.GotoBookmark(MemTablePropBookmark);
MemTableProp.FreeBookmark(MemTablePropBookmark);
end;
if MemTablePortBookmark <> nil then
begin
MemTablePort.GotoBookmark(MemTablePortBookmark);
MemTablePort.FreeBookmark(MemTablePortBookmark);
end;
if MemTableInterfRelBookmark <> nil then
begin
MemTableInterfRel.GotoBookmark(MemTableInterfRelBookmark);
MemTableInterfRel.FreeBookmark(MemTableInterfRelBookmark);
end;
FreeAndNil(PropSysNamesConduitElmtSideDimensions);
end;
end;
except
on E: Exception do AddExceptionToLogEx('TF_AddComponent.DefineUniqueInterfacesByProperty', E.Message);
end;
end;
procedure TF_AddComponent.DeleteNormResByIDCompPropRel(AIDCompPropRel: Integer);
var
MemTable: TkbmMemTable;
//MemTableBookmark: string;
MemTableBookmark: TBookMark;
begin
try
MemTable := TF_Main(GForm).DM.MemTable_NormsEd;
//MemTableBookmark := MemTable.Bookmark;
MemTableBookmark := MemTable.GetBookmark;
MemTable.DisableControls;
try
MemTable.Last;
while Not MemTable.Bof do
begin
if MemTable.FieldByName(fnIDCompPropRel).AsInteger = AIDCompPropRel then
begin
if MemTable.FieldByName(fnIsResource).AsBoolean then
begin
if Not MemTable.FieldByName(fnIsNew).AsBoolean then
GDeletedResourceID.Add(MemTable.FieldByName(fnID).AsInteger);
end
else
begin
if Not MemTable.FieldByName(fnIsNew).AsBoolean then
GDeletedNormID.Add(MemTable.FieldByName(fnID).AsInteger);
end;
{if MemTableBookmark = MemTable.Bookmark then
MemTableBookmark := '';}
MemTable.Delete;
end
else
MemTable.Prior;
end;
finally
MemTable.EnableControls;
{
if MemTableBookmark <> '' then
MemTable.Bookmark := MemTableBookmark;
}
if MemTableBookmark <> nil then
begin
MemTable.GotoBookmark(MemTableBookmark);
MemTable.FreeBookmark(MemTableBookmark);
end;
end;
except
on E: Exception do AddExceptionToLogEx('TF_AddComponent.DeleteComponNormResByIDCompPropRel', E.Message);
end;
end;
procedure TF_AddComponent.LoadNetTypesToForm;
begin
try
ComboBox_NetType.Properties.OnChange := nil;
ComboBox_NetType.Properties.BeginUpdate;
try
FSpravochnik.LoadNetTypesToStrings(ComboBox_NetType.Properties.Items, true);
ComboBox_NetType.ItemIndex := 0; //18.02.2009
finally
ComboBox_NetType.Properties.EndUpdate;
end;
ComboBox_NetType.Properties.OnChange := ComboBox_NetTypePropertiesChange;
except
on E: Exception do AddExceptionToLogEx('TF_AddComponent.LoadNetTypesToForm', E.Message);
end;
end;
procedure TF_AddComponent.LoadCompSpecificationToForm;
begin
try
cbSpecification.Properties.BeginUpdate;
try
FillComboBox(cbSpecification, F_NormBase, true, tnFiles, fnID, fnFileName, '', 0);
finally
cbSpecification.Properties.EndUpdate;
end;
cbSpecification.ItemIndex := 0;
except
on E: Exception do AddExceptionToLogExt(ClassName, MethodName(@TF_AddComponent.LoadCompSpecificationToForm), E.Message);
end;
end;
procedure TF_AddComponent.LoadProducersToForm;
begin
try
ComboBox_Producer.Properties.BeginUpdate;
try
FSpravochnik.LoadProducersToStrings(ComboBox_Producer.Properties.Items, true);
finally
ComboBox_Producer.Properties.EndUpdate;
end;
ComboBox_Producer.ItemIndex := 0;
except
on E: Exception do AddExceptionToLogEx('TF_AddComponent.LoadProducersToForm', E.Message);
end;
end;
procedure TF_AddComponent.LoadSuppliesKindsToForm;
begin
try
//FillComboBox(cbSuppliesKind, F_NormBase, True, tnSuppliesKinds, fnID, fnName, strNoDefined, 0);
cbSuppliesKind.Properties.OnChange := nil;
cbSuppliesKind.Properties.BeginUpdate;
try
FSpravochnik.LoadSuppliesKindsToStrings(cbSuppliesKind.Properties.Items, true);
finally
cbSuppliesKind.Properties.EndUpdate;
end;
cbSuppliesKind.Properties.OnChange := cbSuppliesKindPropertiesChange;
except
on E: Exception do AddExceptionToLogEx('TF_AddComponent.LoadSuppliesKindsToForm', E.Message);
end;
end;
procedure TF_AddComponent.SetNewCompPropIDsToNormRes(AOldCompPropIDs, ANewCompPropIDs: TintList);
var
MemTable: TkbmMemTable;
//MemTableBookmark: String;
MemTableBookmark: TBookMark;
IDCompPropRel: Integer;
IDIndex: Integer;
begin
try
if (AOldCompPropIDs.Count > 0) and (ANewCompPropIDs.Count > 0) then
begin
MemTable := TF_Main(GForm).DM.MemTable_NormsEd;
//MemTableBookmark := MemTable.Bookmark;
MemTableBookmark := MemTable.GetBookmark;
MemTable.DisableControls;
try
MemTable.First;
while Not MemTable.Eof do
begin
if MemTable.FieldByName(fnIsNew).AsBoolean then
begin
IDCompPropRel := MemTable.FieldByName(fnIDCompPropRel).AsInteger;
if IDCompPropRel <> 0 then
begin
IDIndex := AOldCompPropIDs.IndexOf(IDCompPropRel);
if IDIndex <> -1 then
begin
IDCompPropRel := ANewCompPropIDs[IDIndex];
MemTable.Edit;
MemTable.FieldByName(fnIDCompPropRel).AsInteger := IDCompPropRel;
MemTable.Post;
end;
end;
end;
MemTable.Next;
end;
finally
MemTable.EnableControls;
//MemTable.Bookmark := MemTableBookmark;
if MemTableBookmark <> nil then
begin
MemTable.GotoBookmark(MemTableBookmark);
MemTable.FreeBookmark(MemTableBookmark);
end;
end;
end;
except
on E: Exception do AddExceptionToLogEx('TF_AddComponent.SetNewCompPropIDsToNormRes', E.Message);
end;
end;
procedure TF_AddComponent.SetValueToAllApplyCheckBoxes(AValue: Boolean);
var
i: Integer;
ApplyCheckBox: TcxCheckBox;
begin
try
for i := 0 to FApplyCheckBoxes.Count - 1 do
begin
ApplyCheckBox := TcxCheckBox(FApplyCheckBoxes[i]);
ApplyCheckBox.Checked := AValue;
end;
for i := 0 to FApplyComponElementsChecked.Count - 1 do
FApplyComponElementsChecked[i] := BoolToInt(AValue);
DefinecbApplyCompData;
except
on E: Exception do AddExceptionToLogEx('TF_AddComponent.SetValueToAllApplyCheckBoxes', E.Message);
end;
end;
procedure TF_AddComponent.SetValueToCurrPageApplyCheckBoxes(AValue: Boolean);
var
i, j: Integer;
CurrPageIndex: Integer;
ApplyCheckBox: TcxCheckBox;
begin
try
CurrPageIndex := pcMain.ActivePageIndex;
for i := 0 to FApplyCheckBoxesPageIndex.Count - 1 do
begin
if FApplyCheckBoxesPageIndex[i] = CurrPageIndex then
begin
ApplyCheckBox := TcxCheckBox(FApplyCheckBoxes[i]);
ApplyCheckBox.Checked := AValue;
if ApplyCheckBox = cbApplyComponData then
for j := 0 to FApplyComponElementsChecked.Count - 1 do
FApplyComponElementsChecked[j] := BoolToInt(AValue);
end;
end;
except
on E: Exception do AddExceptionToLogEx('TF_AddComponent.SetValueToCurrPageApplyCheckBoxes', E.Message);
end;
end;
procedure TF_AddComponent.VisibleApplyCheckBoxes(AVisible, ASetAsChecked: Boolean);
var
i: Integer;
CurrCheckBox: TcxCheckBox;
begin
for i := 0 to FApplyCheckBoxes.Count - 1 do
begin
CurrCheckBox := TcxCheckBox(FApplyCheckBoxes[i]);
if AVisible then
begin
if (FApplyControls[i] = Grid) and (TF_Main(GForm).GDBMode = bkProjectManager) then
Continue; ///// CONTINUE /////
if TControl(FApplyControls[i]).Visible and TControl(FApplyControls[i]).Enabled then
CurrCheckBox.Visible := true
else
CurrCheckBox.Visible := false;
if TF_Main(GForm).GDBMode = bkProjectManager then
begin
if CurrCheckBox = cbApplySpecification then
CurrCheckBox.Visible := false;
end;
end
else
CurrCheckBox.Visible := false;
if ASetAsChecked then
CurrCheckBox.Checked := true;
if AVisible then
begin
CurrCheckBox.Style.BorderColor := FApplyCheckBoxesBorderColor;
CurrCheckBox.Style.BorderStyle := FApplyCheckBoxesBorderStyle;
end;
end;
if AVisible then
DefinecbApplyCompData;
end;
procedure TF_AddComponent.Act_CancelExecute(Sender: TObject);
var
MessResult: Integer;
begin
if GFormMode = fmView then
begin
ModalResult := mrCancel;
Exit; ///// EXIT /////
end;
MessResult := ID_NO;
if GWasChanging then
MessResult := MessageModal(cQuastSaveChanging, Application.Title, MB_YESNOCANCEL or MB_ICONQUESTION);
case MessResult of
ID_YES:
BitBtn_OK.Click;
ID_NO:
BitBtn_Cancel.Click;
end;
end;
procedure TF_AddComponent.Edit_NamePropertiesChange(Sender: TObject);
begin
GWasChanging := true;
end;
procedure TF_AddComponent.Edit_NameShortPropertiesChange(Sender: TObject);
begin
GWasChanging := true;
end;
procedure TF_AddComponent.Edit_NameMarkPropertiesChange(Sender: TObject);
begin
GWasChanging := true;
end;
procedure TF_AddComponent.Edit_NameDblClick(Sender: TObject);
begin
if GComponGuidNB <> '' then
begin
Clipboard.Open;
Clipboard.AsText := GComponGuidNB;
Clipboard.Close;
end;
end;
procedure TF_AddComponent.Edit_NameMarkEditing(Sender: TObject;
var CanEdit: Boolean);
begin
//CheckBox_IsUserMark.Checked := true;
rbMarkByDefault.Checked := true;
end;
procedure TF_AddComponent.rbMarkByDefaultClick(Sender: TObject);
begin
GWasChanging := true;
end;
procedure TF_AddComponent.rbMarkByTemplateClick(Sender: TObject);
begin
Edit_NameMark.Text := GetComponentNameMarkByTemplate;
GWasChanging := true;
end;
procedure TF_AddComponent.Edit_IzmPropertiesChange(Sender: TObject);
begin
GWasChanging := True;
end;
procedure TF_AddComponent.ComboBox_NetTypePropertiesChange(
Sender: TObject);
begin
GWasChanging := true;
end;
procedure TF_AddComponent.ComboBox_ComponentTypePropertiesChange(
Sender: TObject);
begin
FChangedComponTypeInCombo := true;
end;
procedure TF_AddComponent.GT_InterfaceFocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord;
ANewItemRecordFocusingChanged: Boolean);
begin
{with TF_Main(GForm) do
if GDBMode = bkProjectManager then
if DM.MemTable_InterfaceRelEd.FieldByName('IsNew').AsBoolean = true then
begin
Self.Act_Edit.Enabled := true;
Self.Act_Del.Enabled := true;
end
else
begin
Self.Act_Edit.Enabled := false;
Self.Act_Del.Enabled := false;
end; }
end;
procedure TF_AddComponent.GT_PortFocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord;
ANewItemRecordFocusingChanged: Boolean);
begin
{with TF_Main(GForm) do
if GDBMode = bkProjectManager then
if DM.MemTable_PortEd.FieldByName('IsNew').AsBoolean = true then
begin
Self.Act_Edit.Enabled := true;
Self.Act_Del.Enabled := true;
end
else
begin
Self.Act_Edit.Enabled := false;
Self.Act_Del.Enabled := false;
end;}
end;
procedure TF_AddComponent.GT_PropertyFocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord;
ANewItemRecordFocusingChanged: Boolean);
begin
with TF_Main(GForm) do
if GDBMode = bkProjectManager then
begin
{if DM.MemTable_PropertyEd.FieldByName('IsNew').AsBoolean = true then
begin
Self.Act_Edit.Enabled := true;
Self.Act_Del.Enabled := true;
end
else
begin
Self.Act_Edit.Enabled := false;
Self.Act_Del.Enabled := false;
end;}
//if DM.CanEditProperty(DM.MemTable_PropertyEd) then
// GT_PROPERTY.OptionsSelection.CellSelect := true
//else
// GT_PROPERTY.OptionsSelection.CellSelect := false;
end;
end;
procedure TF_AddComponent.GT_InterfaceNppGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: string);
begin
if AText = '0' then
AText := cAddComponent_Msg10;
end;
procedure TF_AddComponent.GT_PortNppGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: string);
begin
if AText = '0' then
AText := cAddComponent_Msg10;
end;
procedure TF_AddComponent.GT_CableCanalConnectorsConnectorTypeGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: string);
begin
if AText <> '' then
AText := GetCableChannelElementName(StrToInt(AText));
{if AText = IntToStr(contCork) then
AText := ctnCork
else
if AText = IntToStr(contAnglePlane) then
AText := ctnAnglePlane
else
if AText = IntToStr(contTjoin) then
AText := ctnTjoin
else
if AText = IntToStr(contAngleIn) then
AText := ctnAngleIn
else
if AText = IntToStr(contAngleOut) then
AText := ctnAngleOut
else
if AText = IntToStr(contADapter) then
AText := ctnADapter
else
if AText = IntToStr(contConnector) then
AText := ctnConnector;}
end;
procedure TF_AddComponent.CheckBox_ApplyForProjectPropertiesChange(
Sender: TObject);
begin
CheckBox_ApplyForList.Enabled := not TRzCheckBox(Sender).Checked;
//17.08.2012 OncbApplyForChange(Sender);
//17.08.2012 EnableDisableApplyIncludingMark;
OncbApplyForPMChange(Sender);
end;
procedure TF_AddComponent.CheckBox_ApplyForListPropertiesChange(
Sender: TObject);
begin
//17.08.2012 OncbApplyForChange(Sender);
//17.08.2012 EnableDisableApplyIncludingMark;
OncbApplyForPMChange(Sender);
end;
procedure TF_AddComponent.Edit_NameShortKeyPress(Sender: TObject;
var Key: Char);
begin
GChangedNameShort := true;
end;
procedure TF_AddComponent.Timer_AfterEditPropertyTimer(Sender: TObject);
begin
GWasChanging := True;
Timer_AfterEditProperty.Enabled := false;
GT_PROPERTY.DataController.Post;
GT_PROPERTY.OnEditValueChanged := GT_PROPERTYEditValueChanged;
end;
procedure TF_AddComponent.GT_PropertyEditValueChanged(
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
begin
if GT_PROPERTY.DataController.IsEditing then
begin
GT_PROPERTY.OnEditValueChanged := nil;
Timer_AfterEditProperty.Enabled := true;
end;
end;
procedure TF_AddComponent.GT_PropertyEditChanged(
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
begin
//with TF_Main(GForm).DM do
// MemTable_PropertyEd.AfterEdit := MemTable_PropertyEdAfterEdit;
with TF_Main(GForm).DM do
begin
if MemTable_PropertyEd.FieldByName(fnIDDataType).AsInteger = dtCompStateType then
LoadComponIcon(GIDObjectIcon, GGUIDObjectIcon, Image_CompIcons);
end;
end;
procedure TF_AddComponent.SpinEdit_UserLengthPropertiesEditValueChanged(
Sender: TObject);
var
WholeLength: Double;
SavedUserLength: Double;
Compon: TSCSComponent;
begin
GChangedUserLength := True;
GWasChanging := True;
Compon := nil;
WholeLength := 0;
if TF_Main(GForm).GDBMode = bkProjectManager then
if TF_Main(GForm).GSCSBase.SCSComponent.IsLine = biTrue then
begin
Compon := TF_Main(GForm).GSCSBase.CurrProject.GetComponentFromReferences(GIDComponent);
if Assigned(Compon) then
begin
SavedUserLength := Compon.UserLength;
try
Compon.UserLength := FloatInUOM(SpinEdit_UserLength.Value, TF_Main(GForm).FUOM, umMetr);
WholeLength := Compon.GetWholeLength;
finally
Compon.UserLength := SavedUserLength;
end;
end;
SetPropertyValueBySysNameAsFloat(pnLength, WholeLength);
end;
end;
procedure TF_AddComponent.GT_NORMSCellClick(Sender: TcxCustomGridTableView;
ACellViewInfo: TcxGridTableDataCellViewInfo; AButton: TMouseButton;
AShift: TShiftState; var AHandled: Boolean);
begin
//if TF_Main(GForm).DM.MemTable_NormsEd.RecNo > 1 then
if ACellViewInfo.Item.Index = finIsOn then //*** <20><><EFBFBD><EFBFBD> "<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"
with TF_Main(GForm).DM do
begin
if MemTable_NormsEd.RecordCount > 0 then // Tolik 28/12/2019 --
begin
MemTable_NormsEd.Edit;
MemTable_NormsEd.FieldByName('IsOn').AsInteger := 1 - MemTable_NormsEd.FieldByName('IsOn').AsInteger;
MemTable_NormsEd.FieldByName('IsModified').AsBoolean := true;
MemTable_NormsEd.Post;
end;
CalcWorkCost;
AHandled := true;
end;
end;
procedure TF_AddComponent.GT_NORMSEditing(Sender: TcxCustomGridTableView;
AItem: TcxCustomGridTableItem; var AAllow: Boolean);
begin
with TF_Main(GForm).DM do
begin
MemTable_NormsEd.Edit;
MemTable_NormsEd.FieldByName(fnIsModified).AsBoolean := true;
MemTable_NormsEd.Post;
end;
//if AItem = GT_NORMSExpenseForLength then
// AItem.EditValue := GetNORMExpenseForLengthDisplayText(AItem.EditValue);
end;
procedure TF_AddComponent.GT_NORMSFocusedRecordChanged(
Sender: TcxCustomGridTableView; APrevFocusedRecord,
AFocusedRecord: TcxCustomGridRecord;
ANewItemRecordFocusingChanged: Boolean);
var
IsResource: Boolean;
IsNormFromInterface: Boolean;
begin
IsResource := false;
IsNormFromInterface := false;
if TF_Main(GForm).DM.MemTable_NormsEd.Active and (TF_Main(GForm).DM.MemTable_NormsEd.RecordCount > 0) then
begin
IsResource := TF_Main(GForm).DM.MemTable_NormsEd.FieldByName(fnIsResource).AsBoolean;
if not IsResource then
IsNormFromInterface := IntToBool(TF_Main(GForm).DM.MemTable_NormsEd.FieldByName(fnIsFromInterface).AsInteger);
end;
GroupBox_ResourcesRel.Enabled := not IsResource;
GT_NORMSLaborTime.Options.Editing := Not IsResource; //01.11.2013
GT_NORMSPricePerTime.Options.Editing := Not IsResource; //01.11.2013
GT_NORMSCost.Options.Editing := IsResource or not IsNormFromInterface; //24.09.2010 IsResource;
GT_NORMSKolvo.Options.Editing := IsResource or not IsNormFromInterface;
GT_NORMSExpenseForLength.Options.Editing := IsResource or not IsNormFromInterface;
GT_NORMSCountForPoint.Options.Editing := GT_NORMSExpenseForLength.Options.Editing;
GT_NORMSStepOfPoint.Options.Editing := GT_NORMSExpenseForLength.Options.Editing;
//GT_NORMSExpenseForSection.Options.Editing := GT_NORMSExpenseForLength.Options.Editing;
//GT_NORMSTotalCost.Options.Editing := IsResource;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if IsResource then
begin
TcxCurrencyEditProperties(GT_NORMSKolvo.Properties).DisplayFormat := GetDisplayFormatForFloat;
TcxCurrencyEditProperties(GT_NORMSKolvo.Properties).DecimalPlaces := FloatPrecision;
end
else
begin
TcxCurrencyEditProperties(GT_NORMSKolvo.Properties).DisplayFormat := GetDisplayFormatForFloatByPrecision(PrecisionNormKolvo);
TcxCurrencyEditProperties(GT_NORMSKolvo.Properties).DecimalPlaces := PrecisionNormKolvo;
end;
EnableEditDelNorm;
end;
procedure TF_AddComponent.GT_NORMSLaborTimePropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
var
IsCalcNormTotal: Boolean;
begin
Error := false;
with TF_Main(GForm).DM do
begin
if DisplayValue = '' then
begin
DisplayValue := MemTable_NormsEd.FieldByName(fnLaborTime).AsFloat;
Exit; ///// EXIT /////
end;
MemTable_NormsEd.Edit;
MemTable_NormsEd.FieldByName(fnLaborTime).AsFloat := DisplayValue;
MemTable_NormsEd.Post;
CalcNormCostTime(MemTable_NormsEd, fnLaborTime, IsCalcNormTotal); //01.11.2013
if IsCalcNormTotal = true then
begin
CalcNormTatalCostInMT(MemTable_NormsEd, FTraccaLength);
CalcWorkCost;
end;
end;
end;
procedure TF_AddComponent.GT_NORMSPricePerTimePropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
var
IsCalcNormTotal: Boolean;
begin
Error := false;
with TF_Main(GForm).DM do
begin
if DisplayValue = '' then
begin
DisplayValue := MemTable_NormsEd.FieldByName(fnPricePerTime).AsFloat;
Exit; ///// EXIT /////
end;
MemTable_NormsEd.Edit;
MemTable_NormsEd.FieldByName(fnPricePerTime).AsFloat := DisplayValue;
MemTable_NormsEd.Post;
CalcNormCostTime(MemTable_NormsEd, fnPricePerTime, IsCalcNormTotal); //01.11.2013
if IsCalcNormTotal = true then
begin
CalcNormTatalCostInMT(MemTable_NormsEd, FTraccaLength);
CalcWorkCost;
end;
end;
end;
procedure TF_AddComponent.GT_NORMSCostPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
//var
// Cost, Kolvo, TotalCost: Double;
var
IsCalcNormTotal: Boolean;
begin
Error := false;
with TF_Main(GForm).DM do
begin
if DisplayValue = '' then
begin
DisplayValue := MemTable_NormsEd.FieldByName(fnCost).AsFloat;
Exit; ///// EXIT /////
end;
//Cost := DisplayValue;
//Kolvo := MemTable_NormsEd.FieldByName(fnKolvo).AsFloat;
//CalcNormTatalCostInMT(MemTable_NormsEd, Cost, Kolvo);
MemTable_NormsEd.Edit;
MemTable_NormsEd.FieldByName(fnCost).AsFloat := DisplayValue;
MemTable_NormsEd.Post;
CalcNormCostTime(MemTable_NormsEd, fnCost, IsCalcNormTotal); //01.11.2013
CalcNormTatalCostInMT(MemTable_NormsEd, FTraccaLength);
//TotalCost := RoundCP(Cost * Kolvo);
//MemTable_NormsEd.Edit;
//MemTable_NormsEd.FieldByName('Total_Cost').AsFloat := TotalCost;
//MemTable_NormsEd.FieldByName('Cost').AsFloat := Cost;
//MemTable_NormsEd.Post;
end;
CalcWorkCost;
end;
// Added by Tolik
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,<2C><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>
procedure TF_AddComponent.GT_NORMSKolvoPropertiesValidate(Sender: TObject;
var DisplayValue: Variant; var ErrorText: TCaption; var Error: Boolean);
var
Cost, Kolvo, TotalCost: Double;
begin
Error := false;
with TF_Main(GForm).DM do
begin
//Cost := MemTable_NormsEd.FieldByName(fnCost).AsFloat;
//Kolvo := DisplayValue;
if DisplayValue = '' then
begin
DisplayValue := MemTable_NormsEd.FieldByName(fnKolvo).AsFloat;
Exit; ///// EXIT /////
end
else
if GetExpenceFromIzm(MemTable_NormsEd.FieldByName(fnIzm).AsString) <> 1 then
DisplayValue := DisplayValue*GetExpenceFromIzm(MemTable_NormsEd.FieldByName(fnIzm).AsString);
MemTable_NormsEd.Edit;
MemTable_NormsEd.FieldByName(fnKolvo).AsFloat := DisplayValue;
MemTable_NormsEd.FieldByName(fnExpenseForLength).AsFloat := 0;
MemTable_NormsEd.FieldByName(fnCountForPoint).AsFloat := 0;
MemTable_NormsEd.FieldByName(fnStepOfPoint).AsFloat := 0;
MemTable_NormsEd.Post;
CalcNormTatalCostInMT(MemTable_NormsEd, FTraccaLength);
//TotalCost := RoundCP(Cost * Kolvo);
//MemTable_NormsEd.Edit;
//MemTable_NormsEd.FieldByName('Total_Cost').AsFloat := TotalCost;
//MemTable_NormsEd.FieldByName('kolvo').AsFloat := kolvo;
//MemTable_NormsEd.Post;
end;
CalcWorkCost;
end;
procedure TF_AddComponent.GT_ResourcesPricePropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
var
cost, price, AdditionalPrice, kolvo: Double;
begin
Error := false;
with TF_Main(GForm).DM do
begin
price := DisplayValue;
AdditionalPrice := MemTable_ResourcesRelEd.FieldByName(fnAdditionalPrice).AsFloat;
kolvo := MemTable_ResourcesRelEd.FieldByName('kolvo').AsFloat;
cost := (price + AdditionalPrice) * kolvo;
MemTable_ResourcesRelEd.Edit;
MemTable_ResourcesRelEd.FieldByName('Cost').AsFloat := cost; //MemTable_ResourcesRelEd.FieldByName('Price').AsFloat * MemTable_ResourcesRelEd.FieldByName('kolvo').AsInteger;
MemTable_ResourcesRelEd.FieldByName('price').AsFloat := price;
MemTable_ResourcesRelEd.Post;
end;
CalcNormCost;
end;
procedure TF_AddComponent.GT_ResourcesAdditionalPricePropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
var
cost, price, AdditionalPrice, kolvo: Double;
begin
Error := false;
with TF_Main(GForm).DM do
begin
price := MemTable_ResourcesRelEd.FieldByName(fnPrice).AsFloat;
AdditionalPrice := DisplayValue;
kolvo := MemTable_ResourcesRelEd.FieldByName('kolvo').AsInteger;
cost := (price + AdditionalPrice) * kolvo;
MemTable_ResourcesRelEd.Edit;
MemTable_ResourcesRelEd.FieldByName('Cost').AsFloat := cost; //MemTable_ResourcesRelEd.FieldByName('Price').AsFloat * MemTable_ResourcesRelEd.FieldByName('kolvo').AsInteger;
MemTable_ResourcesRelEd.FieldByName(fnAdditionalPrice).AsFloat := AdditionalPrice;
MemTable_ResourcesRelEd.Post;
end;
CalcNormCost;
end;
procedure TF_AddComponent.GT_ResourcesKolvoPropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
var
cost, price, AdditionalPrice, kolvo: Double;
begin
Error := false;
with TF_Main(GForm).DM do
begin
price := MemTable_ResourcesRelEd.FieldByName('Price').AsFloat;
AdditionalPrice := MemTable_ResourcesRelEd.FieldByName(fnAdditionalPrice).AsFloat;
kolvo := DisplayValue; //MemTable_ResourcesRelEd.FieldByName('kolvo').AsInteger;
cost := (price + AdditionalPrice) * kolvo;
MemTable_ResourcesRelEd.Edit;
MemTable_ResourcesRelEd.FieldByName('Cost').AsFloat := cost; //MemTable_ResourcesRelEd.FieldByName('Price').AsFloat * MemTable_ResourcesRelEd.FieldByName('kolvo').AsInteger;
MemTable_ResourcesRelEd.FieldByName('kolvo').AsFloat := kolvo;
MemTable_ResourcesRelEd.Post;
end;
CalcNormCost;
end;
procedure TF_AddComponent.Act_AddNormExecute(Sender: TObject);
begin
if pcMain.ActivePage = tsWorkingAndResources then
if Grid_NORMS.Showing then
SetFocusToControl(Grid_NORMS);
//Grid_NORMS.SetFocus;
//ProcessMessagesEx;
if ReadOnly then
Exit; ///// EXIT /////
AddEditNorm(meMake);
EnableEditDelNorm;
end;
procedure TF_AddComponent.Act_AddResourceToMTNormExecute(Sender: TObject);
begin
SetFocusToControl(Grid_NORMS);
if ReadOnly then
Exit; ///// EXIT /////
AddEditResource(meMake, tkNormEd, false);
EnableEditDelNorm;
end;
procedure TF_AddComponent.Act_AddResourceComponToMTNormExecute(
Sender: TObject);
begin
SetFocusToControl(Grid_NORMS);
if ReadOnly then
Exit; ///// EXIT /////
AddEditResource(meMake, tkNormEd, true);
EnableEditDelNorm;
end;
procedure TF_AddComponent.Act_EditNormResourceExecute(Sender: TObject);
var
EditName: string;
begin
SetFocusToControl(Grid_NORMS);
if ReadOnly then
Exit; ///// EXIT /////
case TF_Main(GForm).DM.MemTable_NormsEd.FieldByName(fnIsResource).AsBoolean of
true:
AddEditResource(meEdit, tkNormEd, false);
false:
begin
EditName := TF_Main(GForm).DM.MemTable_NormsEd.FieldByName(fnName).AsString;
if GUseVisibleInterfaces and
(TF_Main(GForm).DM.MemTable_NormsEd.FieldByName(fnIsFromInterface).AsInteger = biTrue) then
MessageModal(cImpossibleReplaceNorm + ' "' + EditName + '" ' + cbMessage5, cReplacingNorm, MB_ICONINFORMATION or MB_OK)
else
AddEditNorm(meEdit);
end;
end;
end;
procedure TF_AddComponent.Act_DeleteNormResourceExecute(Sender: TObject);
var
DelName: string;
IDDel: Integer;
CurrNPP: Integer;
CanDel: Boolean;
StrMessg: String;
// Tolik
FromInterFace, Deleted: Boolean;
SCSCompon: TSCSComponent; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>
i, j, k, l, NormID: Integer;
ChildCompon: TSCSComponent;
currInterFace: TSCSInterface;
s, currNormGuid: string;
DelDataSet: TpFIBDataSet;
MemTable: TkbmMemTable;
InterfIdList: TIntList;
currNorm: TSCSNorm;
sprInterf: TNBInterFace;
currForm: TF_Main;
currInterfaceID: Integer;
Norm_ID: Integer;
Id_Interface: Integer;
NormInterfaceGuid: String;
begin
SetFocusToControl(Grid_NORMS);
currInterfaceID := -1;
if ReadOnly then
Exit; ///// EXIT /////
try
CanDel := false;
currNormGuid := '';
FromInterFace :=False;
Norm_ID := -1;
Id_Interface := -1;
NormInterfaceGuid := '';
Norm_ID := TF_Main(GForm).DM.MemTable_NormsEd.FieldByName('ID').Value;
currNormGuid := TF_Main(GForm).DM.MemTable_NormsEd.FieldByName(fnGuidNB).Value;
// Tolik
if not TF_Main(GForm).DM.MemTable_NormsEd.FieldByName('GuidInterface').IsNull then // 21/02/2018 --
NormInterFaceGuid := TF_Main(GForm).DM.MemTable_NormsEd.FieldByName('GuidInterface').Value;
//
DelName := TF_Main(GForm).DM.MemTable_NormsEd.FieldByName('Name').AsString;
case TF_Main(GForm).DM.MemTable_NormsEd.FieldByName(fnIsResource).AsBoolean of
true:
begin
StrMessg := '';
if TF_Main(GForm).DM.MemTable_NormsEd.FieldByName(fnGuidNBComponent).AsString = '' then
StrMessg := cQuastDelResource
else
StrMessg := cQuastDelAccessoryCompon;
if MessageModal(StrMessg + ' "' + DelName + '"?',
ApplicationName, MB_ICONQUESTION or MB_YESNO) = IDYES then
CanDel := true;
end;
false:
begin
// Tolik
//*** <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// if MessageModal(cImpossibleDelNorm + ' "' + DelName + '" ' + cbMessage5, ApplicationName, MB_ICONINFORMATION or YESNO) = IDYES then
if GUseVisibleInterfaces and (TF_Main(GForm).DM.MemTable_NormsEd.FieldByName(fnIsFromInterface).AsInteger = biTrue) then
begin
if MessageModal(cAttentionDelInterfNorm + #13#10 + cQuastDelNorm + ' "' + DelName + '"?' , cDeletingNorm, MB_ICONQUESTION or MB_YESNO) = IDYES then
CanDel := True;
end
else
begin
if MessageModal(cQuastDelNorm + ' "' + DelName + '"?', cDeletingNorm, MB_ICONQUESTION or MB_YESNO) = IDYES then
CanDel := true;
end;
end;
end;
if CanDel then
begin
//Tolik
if GUseVisibleInterfaces and (TF_Main(GForm).DM.MemTable_NormsEd.FieldByName(fnIsFromInterface).AsInteger = biTrue) then
FromInterFace := True;
//
IDDel := TF_Main(GForm).DM.MemTable_NormsEd.FieldByName('ID').AsInteger;
if TF_Main(GForm).DM.MemTable_NormsEd.FieldByName('isNew').AsBoolean = false then
case TF_Main(GForm).DM.MemTable_NormsEd.FieldByName(fnIsResource).AsBoolean of
true:
GDeletedResourceID.Add(IDDel);
false:
begin
DelResourcesFromCurrNorm;
GDeletedNormID.Add(IDDel);
end;
end;
CurrNPP := TF_Main(GForm).DM.MemTable_NormsEd.FieldByName('NPP').AsInteger;
TF_Main(GForm).DM.MemTable_NormsEd.Delete;
TF_Main(GForm).DM.SdvigNPPInMemTable(CurrNPP, TF_Main(GForm).DM.MemTable_NormsEd);
CalcWorkCost;
// Tolik
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD>, <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if FromInterFace then
begin
currForm := nil;
currForm := TF_MAIN(GForm);
if currForm <> nil then
begin
// if TF_MAIN(GForm).GDBMode = bkProjectManager then
begin
//if F_ProjMan.GSCSBase.SCSComponent.ID <> 0 then
if currForm.GSCSBase.SCSComponent.ID <> 0 then
begin
sprInterf := nil;
sprInterf := currForm.GSCSBase.CurrProject.Spravochnik.GetInterfaceWithAssign(NormInterfaceGUID, F_ProjMan.GSCSBase.NBSpravochnik, false, false);
if sprInterf <> nil then
begin
for k := 0 to sprInterF.InterfaceNorms.Count - 1 do
begin
Deleted := False;
if TNBInterFaceNorm(sprInterf.InterfaceNorms[k]).GuidNBNorm = currNormGuid then
begin
TNBInterFaceNorm(sprInterf.InterfaceNorms[k]).Free;
sprInterf.InterfaceNorms[k] := nil;
Deleted := True;
//break;
end;
end;
sprInterF.InterfaceNorms.Pack;
end;
//SCSCompon := F_ProjMan.GSCSBase.CurrProject.GetComponentFromReferences(F_ProjMan.GSCSBase.SCSComponent.ID);
(* SCSCompon := currForm.GSCSBase.CurrProject.GetComponentFromReferences(F_ProjMan.GSCSBase.SCSComponent.ID);
if SCSCompon <> nil then
begin
Deleted := False;
for i := 0 to SCSCompon.NormsResources.Norms.Count - 1 do
begin
currNorm := SCSCompon.NormsResources.Norms[i];
if (currNorm.IsFromInterface = biTrue) then
begin
for j := 0 to SCSCompon.Interfaces.Count - 1 do
begin
sprInterf := nil;
currInterFace := TSCSInterface(SCSCompon.Interfaces[j]);
sprInterf := currForm.GSCSBase.CurrProject.Spravochnik.GetInterfaceWithAssign(currInterFace.GUIDInterface, F_ProjMan.GSCSBase.NBSpravochnik, false, false);
if sprInterf <> nil then
begin
for k := 0 to sprInterF.InterfaceNorms.Count - 1 do
begin
// if TNBInterFaceNorm(sprInterf.InterfaceNorms[k]).GuidNBNorm = currNormGuid then
if TNBInterFaceNorm(sprInterf.InterfaceNorms[k]).IDNBNorm = Norm_ID then
begin
TNBInterFaceNorm(sprInterf.InterfaceNorms[k]).Free;
sprInterf.InterfaceNorms[k] := nil;
Deleted := True;
//break;
end;
end;
sprInterF.InterfaceNorms.Pack;
end;
end;
end;
end;
//Tolik -- 21/06/2016 --
// <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>, <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>)
if not Deleted then
begin
for i := 0 to SCSCompon.ChildReferences.Count - 1 do
begin
ChildCompon := TSCSComponent(SCSCompon.ChildReferences[i]);
if not ChildCompon.ServToDelete then
begin
{for j := 0 to ChildCompon.NormsResources.Norms.Count - 1 do
begin
currNorm := ChildCompon.NormsResources.Norms[j];
if (currNorm.IsFromInterface = biTrue) then
begin}
for k := 0 to ChildCompon.Interfaces.Count - 1 do
begin
sprInterf := nil;
currInterFace := TSCSInterface(ChildCompon.Interfaces[k]);
sprInterf := currForm.GSCSBase.CurrProject.Spravochnik.GetInterfaceWithAssign(currInterFace.GUIDInterface, F_ProjMan.GSCSBase.NBSpravochnik, false, false);
if sprInterf <> nil then
begin
for l := 0 to sprInterF.InterfaceNorms.Count - 1 do
begin
//if TNBInterFaceNorm(sprInterf.InterfaceNorms[l]).GuidNBNorm = currNormGuid then
if TNBInterFaceNorm(sprInterf.InterfaceNorms[k]).IDNbNorm = Norm_ID then
begin
TNBInterFaceNorm(sprInterf.InterfaceNorms[l]).Free;
sprInterf.InterfaceNorms[l] := nil;
Deleted := True;
//break;
end;
end;
sprInterF.InterfaceNorms.Pack;
end;
end;
end;
end;
end;
//
end;
*)
end;
end;
end;
end;
EnableEditDelNorm;
end;
except
on E: Exception do
AddExceptionToLog('TF_AddComponent.Act_DeleteNormResourceExecute: ' + E.Message);
end;
end;
procedure TF_AddComponent.Act_AddResourceExecute(Sender: TObject);
begin
AddEditResource(meMake, tkResourceRelEd, false);
EnableEditDelResource;
end;
procedure TF_AddComponent.Act_EditResourceExecute(Sender: TObject);
begin
AddEditResource(meEdit, tkResourceRelEd, false);
end;
procedure TF_AddComponent.Act_DelResourceExecute(Sender: TObject);
var
DelName: string;
IDDel: Integer;
CurrNPP: Integer;
begin
try
DelName := TF_Main(GForm).DM.MemTable_ResourcesRelEd.FieldByName('Name').AsString;
if MessageModal(cQuastDelResource + ' "' + DelName + '"?',
cDeletingResource, MB_ICONQUESTION or MB_YESNO) = IDYES then
begin
if TF_Main(GForm).DM.MemTable_ResourcesRelEd.FieldByName('isNew').AsBoolean = false then
begin
IDDel := TF_Main(GForm).DM.MemTable_ResourcesRelEd.FieldByName('ID').AsInteger;
GDeletedResourceID.Add(IDDel);
end;
CurrNPP := TF_Main(GForm).DM.MemTable_ResourcesRelEd.FieldByName('NPP').AsInteger;
TF_Main(GForm).DM.MemTable_ResourcesRelEd.Delete;
TF_Main(GForm).DM.SdvigNPPInMemTable(CurrNPP, TF_Main(GForm).DM.MemTable_ResourcesRelEd);
CalcNormCost;
EnableEditDelResource;
end;
except
on E: Exception do
AddExceptionToLog('TF_Norms.Act_DelResourceExecute: ' + E.Message);
end;
end;
procedure TF_AddComponent.GT_NORMSRTypeGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: string);
begin
if AText <> '' then
AText := GetResourceTypeName(StrToInt(AText));
{if AText <> '' then
begin
if (StrToInt(AText) = rtMat) then
AText := cAddComponent_Msg13_1
else if (StrToInt(AText) = rtMachMech) then
AText := cAddComponent_Msg13_2
else if (StrToInt(AText) = rtPrice) then
AText := cAddComponent_Msg13_3;
end;}
end;
procedure TF_AddComponent.cbApplyForCurrentDirPropertiesChange(
Sender: TObject);
//var
//ApplyCheckBoxBorderColor: TColor;
//ApplyCheckBoxBorderStyle: TcxEditBorderStyle;
begin
cbIncludingSubFolders.Enabled := cbApplyForCurrentDir.Checked;
lbSelectFieldsFromApplyInNB.Enabled := cbApplyForCurrentDir.Checked;
OncbApplyForChange(Sender);
if (FApplyComponElementsChecked[liProperty] = biTrue) then
cbApplyForFocusedProp.Enabled := cbApplyForCurrentDir.Checked
else
cbApplyForFocusedProp.Enabled := False;
cbAutoAddInter.Enabled := cbApplyForCurrentDir.Checked;
//ApplyCheckBoxBorderColor := FApplyCheckBoxesBorderColor;
//ApplyCheckBoxBorderStyle := FApplyCheckBoxesBorderStyle;
//if Not cbApplyForCurrentDir.Checked then
//begin
// ApplyCheckBoxBorderColor := clWindowFrame;
// ApplyCheckBoxBorderStyle := ebsUltraFlat;
//end;
//cbApplyForCurrentDir.Style.BorderColor := ApplyCheckBoxBorderColor;
//cbApplyForCurrentDir.Style.BorderStyle := ApplyCheckBoxBorderStyle;
//VisibleApplyCheckBoxes(cbApplyForCurrentDir.Checked, false);
end;
procedure TF_AddComponent.cbSuppliesKindPropertiesChange(Sender: TObject);
var
IDSuppliesKind: Integer;
GUIDSuppliesKind: string;
//SavedOnChange: TNotifyEvent;
begin
IDSuppliesKind := GetIDFromComboBox(cbSuppliesKind);
GUIDSuppliesKind := GetGUIDFromComboBox(cbSuppliesKind);
FSuppliesKind := TF_Main(GForm).DM.GetSuppliesKindByID(IDSuppliesKind, GUIDSuppliesKind);
DefineSuppliesKindWorkValuesToFields(FSuppliesKind, TF_Main(GForm).FUOM);
SetSupplyKindControls;
if (IDSuppliesKind > 0) or (GUIDSuppliesKind <> '') then
begin
DefineSupplyPriceByComponPrice(CurrencyEdit_Price1.Value);
if FSuppliesKind.Izm <> '' then
if GetNameUOMForCompon('', @FCurrComponentType, TF_Main(GForm).FUOM) = '' then
Edit_Izm.Text := FSuppliesKind.Izm;
//*** <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
{if FSuppliesKind.ID = 0 then
if (cePriceSupply.Value = 0) and (CurrencyEdit_Price1.Value > 0) then
begin
SavedOnChange := cePriceSupply.Properties.OnChange;
cePriceSupply.Properties.OnChange := nil;
try
cePriceSupply.Value := RoundCP(CurrencyEdit_Price1.Value * SuppliesKind.UnitKolvo);
finally
cePriceSupply.Properties.OnChange := SavedOnChange;
end;
end;}
//DefineParamsBySupply(cePriceSupply.Value, true);
end;
GWasChanging := true;
end;
procedure TF_AddComponent.btSuppliesKindClick(Sender: TObject);
var
IDSuppliesKind: Integer;
GUIDSuppliesKind: string;
//Iindex: Integer;
begin
IDSuppliesKind := GetIDFromComboBox(cbSuppliesKind);
GUIDSuppliesKind := GetGUIDFromComboBox(cbSuppliesKind);
if TF_Main(GForm).GDBMode = bkNormBase then
begin
F_NormBase.F_CaseForm.GIDNotDel := IDSuppliesKind;
F_NormBase.F_CaseForm.GIDToLocate := IDSuppliesKind;
if (F_NormBase.F_CaseForm.Execute(VKSuppliesKind, fmEdit)) then
begin
IDSuppliesKind := F_NormBase.DM.DataSet_SuppliesKinds.FN(fnID).AsInteger;
cbSuppliesKind.Properties.BeginUpdate;
try
//cbSuppliesKind.Properties.OnChange := nil;
//FSpravochnik.LoadSuppliesKindsToStrings(cbSuppliesKind.Properties.Items, true);
//cbSuppliesKind.Properties.OnChange := cbSuppliesKindPropertiesChange;
LoadSuppliesKindsToForm;
finally
cbSuppliesKind.Properties.EndUpdate;
end;
SelectItemByIDinCombo(cbSuppliesKind, IDSuppliesKind);
GWasChanging := true;
end;
end
else
if TF_Main(GForm).GDBMode = bkprojectManager then
begin
if ShowCurrProjectProperties(vkSuppliesKind, GUIDSuppliesKind) then
if FProjSpravochnik.LastSuppliesKind <> nil then
GUIDSuppliesKind := FProjSpravochnik.LastSuppliesKind.Data.GUID;
//cbSuppliesKind.Properties.OnChange := nil;
//FProjSpravochnik.LoadSuppliesKindsToStrings(cbSuppliesKind.Properties.Items, true);
//cbSuppliesKind.Properties.OnChange := cbSuppliesKindPropertiesChange;
LoadSuppliesKindsToForm;
SelectItemByGUIDinCombo(cbSuppliesKind, GUIDSuppliesKind);
end;
//FillComboBox(cbSuppliesKind, F_NormBase, true, tnSuppliesKinds, fnID, fnName, strNoDefined, IDSuppliesKind);
end;
procedure TF_AddComponent.Act_AddCompDataFromOtherComponExecute(
Sender: TObject);
var
NBComponent: TSCSComponent;
begin
if ReadOnly then
Exit; ///// EXIT /////
NBComponent := TF_Main(GForm).CreateFConnectComplWith.GetComponentFromNB(GIDComponent, '');
if NBComponent <> nil then
begin
try
with TF_Main(GForm).DM do
case Grid.ActiveLevel.Index of
liInterface, liPort:
begin
NBComponent.LoadInterfaces;
NBComponent.SetPortInterfRelInterfaces;
NBComponent.SetInterfacesParallel;
SendInterfacesPortsToMemTable(NBComponent, true, true);
end;
liProperty: ;
end;
finally
NBComponent.Free;
end;
EnableButtons;
end;
end;
procedure TF_AddComponent.CurrencyEdit_Price1Exit(Sender: TObject);
begin
if TcxCurrencyEdit(Sender).Text = '' then
TcxCurrencyEdit(Sender).Value := 0;
end;
procedure TF_AddComponent.cbApplyComponDataClick(Sender: TObject);
begin
FApplyComponElementsChecked[Grid.ActiveLevel.Index] := BoolToInt(TcxCheckBox(Sender).Checked);
if Grid.ActiveLevel.Index = liPort then
FApplyComponElementsChecked[liInterface] := FApplyComponElementsChecked[liPort];
if Grid.ActiveLevel.Index = liInterface then
FApplyComponElementsChecked[liPort] := FApplyComponElementsChecked[liInterface];
if (FApplyComponElementsChecked[liProperty] = biTrue) then
cbApplyForFocusedProp.Enabled := cbApplyForCurrentDir.Checked
else
cbApplyForFocusedProp.Enabled := False;
cbAutoAddInter.Enabled := cbApplyForCurrentDir.Checked;
end;
procedure TF_AddComponent.Act_DublicatePortInterfaceExecute(
Sender: TObject);
var
meInterfacePortRel: TmeInterfaceRel;
dsrcPortInterface: TDataSource;
IsPort: Integer;
ComponentType: TComponentType;
begin
if ReadOnly then
Exit; ///// EXIT /////
dsrcPortInterface := nil;
IsPort := biFalse;
case Grid.ActiveLevel.Index of
liInterface:
begin
dsrcPortInterface := TF_Main(GForm).DM.DataSource_MT_INTERFACERelEd;
IsPort := biFalse;
end;
liPort:
begin
dsrcPortInterface := TF_Main(GForm).DM.DataSource_MT_PortEd;
IsPort := biTrue;
end;
end;
if dsrcPortInterface <> nil then
begin
meInterfacePortRel := TF_Main(GForm).DM.GetInterfaceRel(dsrcPortInterface, nil);
if meInterfacePortRel.IsNative = false then
MessageModal(cImpossibleDupNoNativeInterface, ApplicationName, MB_ICONINFORMATION or MB_OK)
else
begin
ComponentType := GetComponentType;
meInterfacePortRel.Count := 1;
meInterfacePortRel.IsPort := IsPort;
meInterfacePortRel.IsBusy := biFalse;
meInterfacePortRel.DataSource := nil;
meInterfacePortRel.IsLineCompon := ComponentType.IsLine;
meInterfacePortRel.ServiceIsPair := (meInterfacePortRel.IsLineCompon = biTrue) and (meInterfacePortRel.ID_Adverse > 0);
if meInterfacePortRel.ServiceIsPair then
Inc(meInterfacePortRel.Count);
AddInterfaceToMT(meInterfacePortRel);
end;
end;
end;
procedure TF_AddComponent.GT_InterfaceRNumberGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: string);
begin
AText := IntToStr(AREcord.Index + 1);
end;
procedure TF_AddComponent.GT_PortRNumberGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: string);
begin
AText := IntToStr(AREcord.Index + 1);
end;
procedure TF_AddComponent.GT_NORMSNPPGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: string);
begin
AText := IntToStr(ARecord.Index + 1);
end;
procedure TF_AddComponent.gbOkCancelResize(Sender: TObject);
begin
SetMiddleControlChilds(TControl(Sender), Self);
end;
procedure TF_AddComponent.Act_TurnFromMemTableToSpravochnikExecute(
Sender: TObject);
var
InterfPortMemTable: TkbmMemTable;
begin
if ReadOnly then
Exit; ///// EXIT /////
InterfPortMemTable := GetInterfPortMemTable;
if InterfPortMemTable <> nil then
ShowSpravochnikForInterface(GForm, InterfPortMemTable);
end;
procedure TF_AddComponent.Act_AddCrossConnectionExecute(Sender: TObject);
begin
AddEditCrossConnection(meMake);
EnableButtons;
end;
procedure TF_AddComponent.Act_EditCrossConnectionExecute(Sender: TObject);
begin
AddEditCrossConnection(meEdit);
end;
procedure TF_AddComponent.Act_DelCrossConnectionExecute(Sender: TObject);
var
DelID: Integer;
begin
if MessageModal(cQuastDelCurrCrossConnection,
Application.Title, MB_ICONQUESTION or MB_YESNO) = IDYES then
begin
DelID := TF_Main(GForm).DM.mtCrossConnectionEd.FieldByName(fnID).AsInteger;
if TF_Main(GForm).DM.mtCrossConnectionEd.FieldByName(fnIsNew).AsBoolean = false then
GDeletedCrossConnections.Add(DelID);
TF_Main(GForm).DM.mtCrossConnectionEd.Delete;
end;
EnableButtons;
end;
procedure TF_AddComponent.seIndexPropertiesChange(Sender: TObject);
begin
GChangedIndex := true;
if TF_Main(GForm).GDBMode = bkProjectManager then
if rbMarkByTemplate.Checked then
begin
Edit_NameMark.Text := GetComponentNameMarkByTemplate;
end;
end;
procedure TF_AddComponent.Act_EnterExecute(Sender: TObject);
begin
BitBtn_OK.Click;
end;
procedure TF_AddComponent.cbDismountClick(Sender: TObject);
var
//BookmarkStr: string;
BookmarkStr: TBookMark;
MemTableNorms: TkbmMemTable;
begin
try
cbUseDismounted.Enabled := cbDismount.Checked;
{$IF Not Defined(NORMSCS_PE) and Not Defined(SCS_SPA)}
if cbDismount.Checked then
begin
MemTableNorms := TF_Main(GForm).DM.MemTable_NormsEd;
if MemTableNorms.Active then
if MessageModal(cAddComponent_Msg14, ApplicationName, MB_ICONQUESTION or MB_YESNO) = IDYES then
begin
//BookmarkStr := MemTableNorms.Bookmark;
BookmarkStr := MemTableNorms.GetBookmark;
MemTableNorms.DisableControls;
try
MemTableNorms.First;
while not MemTableNorms.Eof do
begin
if not MemTableNorms.FieldByName(fnIsResource).AsBoolean and
(MemTableNorms.FieldByName(fnIsOn).AsInteger = biTrue) then
begin
MemTableNorms.Edit;
MemTableNorms.FieldByName(fnIsOn).AsInteger := biFalse;
MemTableNorms.FieldByName(fnIsModified).AsBoolean := true;
MemTableNorms.Post;
end;
MemTableNorms.Next;
end;
finally
if BookmarkStr <> nil then
begin
MemTableNorms.GotoBookMark(BookmarkStr);
MemTableNorms.FreeBookMark(BookmarkStr);
end;
MemTableNorms.EnableControls;
end;
Act_AddNorm.Execute;
cbUseDismounted.Checked := true;
end
else
cbUseDismounted.Checked := false;
end;
{$IFEND}
except
on E: Exception do
AddExceptionToLogEx('TF_AddComponent.cbDismountClick', E.Message);
end;
end;
procedure TF_AddComponent.GT_CableCanalConnectorsDblClick(Sender: TObject);
begin
Act_EditCableCanalConnector.Execute;
end;
procedure TF_AddComponent.ComboBox_ComponentTypeExit(Sender: TObject);
begin
FChangedComponTypeInCombo := false;
if GFormMode <> fmView then
ApplyChangedComponentType;
end;
procedure TF_AddComponent.GT_NORMSEditChanged(
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
begin
//
end;
procedure TF_AddComponent.GT_NORMSEditValueChanged(
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
begin
//
end;
procedure TF_AddComponent.btImportComponByArtProducerClick(
Sender: TObject);
var
IDComponent: Integer;
NewComponentType: TComponentType;
SavedOnChange: TNotifyEvent;
begin
IDComponent := 0;
if Edit_ArticulProducer.Text <> '' then
begin
IDComponent := TF_Main(GForm).DM.GetComponIDByArtProducer(Edit_ArticulProducer.Text, GIDComponent);
if IDComponent <> 0 then
begin
FCurrComponentType := TF_Main(GForm).DM.GetComponentTypeByIDCompon(IDComponent);
if FCurrComponentType.ID <> 0 then
begin
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SavedOnChange := ComboBox_ComponentType.Properties.OnChange;
ComboBox_ComponentType.Properties.OnChange := nil;
try
SelectItemByIDinCombo(ComboBox_ComponentType, FCurrComponentType.ID);
finally
ComboBox_ComponentType.Properties.OnChange := SavedOnChange;
end;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
ImportComponentByID(IDComponent);
EnableButtons;
SetControls(nil);
end;
end
else
MessageModal(cAddComponent_Msg15, ApplicationName, MB_OK or MB_ICONINFORMATION);
end;
end;
procedure TF_AddComponent.lbSelectFieldsFromApplyInPMClick(
Sender: TObject);
begin
ShowPopupMenuForControl(lbSelectFieldsFromApplyInPM, pmSelectApplyFields);
end;
procedure TF_AddComponent.lbSelectFieldsFromApplyInNBClick(
Sender: TObject);
begin
ShowPopupMenuForControl(lbSelectFieldsFromApplyInNB, pmSelectApplyFields);
end;
procedure TF_AddComponent.Act_SelectAllApplyFieldsExecute(Sender: TObject);
begin
SetValueToAllApplyCheckBoxes(true);
end;
procedure TF_AddComponent.Act_DeSelectAllApplyFieldsExecute(
Sender: TObject);
begin
SetValueToAllApplyCheckBoxes(false);
end;
procedure TF_AddComponent.Act_SelectCurrPageAllApplyFieldsExecute(
Sender: TObject);
begin
SetValueToCurrPageApplyCheckBoxes(true);
end;
procedure TF_AddComponent.Act_DeSelectCurrPagetAllApplyFieldsExecute(
Sender: TObject);
begin
SetValueToCurrPageApplyCheckBoxes(false);
end;
procedure TF_AddComponent.GT_PropertyIzmGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: String);
begin
SetDisplayTextToGridTablePropIzm(AText, ARecord, 7, TF_Main(GForm).FUOM);
end;
procedure TF_AddComponent.GT_NORMSExpenseForLengthGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: String);
begin
try
AText := GetDisplayTextToNORMExpenseForLength(AText, TF_Main(GForm).FUOM);
except
end;
end;
procedure TF_AddComponent.GT_NORMSExpenseForLengthPropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
var
ValueFloat: Double;
//added by Tolik
ExpenseForIzm : string;
//
begin
try
ExpenseForIzm := (TF_Main(GForm).DM.MemTable_NormsEd.FieldByName(fnIzm).AsString);
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> TF_Main(GForm).FUOM <20><> <20><><EFBFBD><EFBFBD>
if DisplayValue = '' then
begin
DisplayValue := FloatToStr(TF_Main(GForm).DM.MemTable_NormsEd.FieldByName(fnExpenseForLength).AsFloat);
Exit; ///// EXIT /////
end
// added by Tolik
else
if TF_Main(GForm).DM.GetExpenceFromIzm(ExpenseForIzm) <> 1 then
DisplayValue := FloatToStr(StrToFloat_My(DisplayValue)*TF_Main(GForm).DM.GetExpenceFromIzm(ExpenseForIzm));
//
ValueFloat := StrToFloat_My(DisplayValue);
ValueFloat := FloatInUOM(ValueFloat, umMetr, TF_Main(GForm).FUOM);
with TF_Main(GForm).DM do
begin
MemTable_NormsEd.Edit;
MemTable_NormsEd.FieldByName(fnExpenseForLength).AsFloat := RoundCP(ValueFloat);
if MemTable_NormsEd.FieldByName(fnIsResource).AsBoolean then
MemTable_NormsEd.FieldByName(fnTotalCost).AsFloat := 0;
MemTable_NormsEd.FieldByName(fnKolvo).AsFloat := 0;
MemTable_NormsEd.FieldByName(fnCountForPoint).AsFloat := 0;
MemTable_NormsEd.FieldByName(fnStepOfPoint).AsFloat := 0;
MemTable_NormsEd.Post;
CalcNormTatalCostInMT(MemTable_NormsEd, FTraccaLength);
end;
CalcWorkCost;
except
end;
end;
procedure TF_AddComponent.GT_NORMSCountForPointPropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
var
ValueFloat: Double;
begin
try
if DisplayValue = '' then
begin
DisplayValue := FloatToStr(TF_Main(GForm).DM.MemTable_NormsEd.FieldByName(fnCountForPoint).AsFloat);
Exit; ///// EXIT /////
end
else
if TF_Main(GForm).DM.GetExpenceFromIzm(TF_Main(GForm).DM.MemTable_NormsEd.FieldByName(fnIzm).AsString) <> 1 then
DisplayValue := DisplayValue*TF_Main(GForm).DM.GetExpenceFromIzm(TF_Main(GForm).DM.MemTable_NormsEd.FieldByName(fnIzm).AsString);
ValueFloat := StrToFloat_My(DisplayValue);
with TF_Main(GForm).DM do
begin
InputFloatToRelatedZeroFieldInMT(MemTable_NormsEd, ValueFloat, fnCountForPoint, fnStepOfPoint,
fnKolvo+';'+fnTotalCost+';'+fnExpenseForLength, cAddComponent_Msg20_1, true, TF_Main(GForm).FUOM);
CalcNormTatalCostInMT(MemTable_NormsEd, FTraccaLength);
//MemTable_NormsEd.Edit;
//MemTable_NormsEd.FieldByName(fnCountForPoint).AsFloat := RoundCP(ValueFloat);
//MemTable_NormsEd.Post;
end;
CalcWorkCost;
except
end;
end;
procedure TF_AddComponent.GT_NORMSStepOfPointGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: String);
begin
AText := GetDisplayTextInFLoatUOM(AText, TF_Main(GForm).FUOM);
end;
procedure TF_AddComponent.GT_NORMSStepOfPointPropertiesValidate(
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
var Error: Boolean);
var
ValueFloat: Double;
begin
try
if DisplayValue = '' then
begin
DisplayValue := FloatToStr(TF_Main(GForm).DM.MemTable_NormsEd.FieldByName(fnStepOfPoint).AsFloat);
Exit; ///// EXIT /////
end;
ValueFloat := StrToFloat_My(DisplayValue);
ValueFloat := FloatInUOM(ValueFloat, TF_Main(GForm).FUOM, umMetr);
with TF_Main(GForm).DM do
begin
InputFloatToRelatedZeroFieldInMT(MemTable_NormsEd, ValueFloat, fnStepOfPoint, fnCountForPoint,
fnKolvo+';'+fnTotalCost+';'+fnExpenseForLength, cAddComponent_Msg20_2, false, TF_Main(GForm).FUOM);
CalcNormTatalCostInMT(MemTable_NormsEd, FTraccaLength);
//MemTable_NormsEd.Edit;
//MemTable_NormsEd.FieldByName(fnStepOfPoint).AsFloat := RoundCP(ValueFloat);
//MemTable_NormsEd.Post;
end;
CalcWorkCost;
except
end;
end;
procedure TF_AddComponent.GT_NORMSInitEdit(Sender: TcxCustomGridTableView;
AItem: TcxCustomGridTableItem; AEdit: TcxCustomEdit);
begin
if AItem = GT_NORMSExpenseForLength then
AEdit.EditValue := GetDisplayTextToNORMExpenseForLength(AEdit.EditValue, TF_Main(GForm).FUOM)
else
if AItem = GT_NORMSStepOfPoint then
AEdit.EditValue := GetDisplayTextInFLoatUOM(AEdit.EditValue, TF_Main(GForm).FUOM);
end;
procedure TF_AddComponent.GT_InterfaceCoordZGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: String);
begin
AText := GetDisplayTextInFLoatUOM(AText, TF_Main(GForm).FUOM);
end;
procedure TF_AddComponent.pcMainChanging(Sender: TObject;
NewIndex: Integer; var AllowChange: Boolean);
begin
if pcMain.ActivePage = tsWorkingAndResources then
if GT_Norms.DataController.IsEditing then
SetFocusToControl(Grid_NORMS);
end;
procedure TF_AddComponent.Act_DelAllExecute(Sender: TObject);
begin
if ReadOnly then
Exit; ///// EXIT /////
case Grid.ActiveLevel.Index of
liInterface:
DelAllInterfacesPorts(false);
liPort:
DelAllInterfacesPorts(true);
liProperty:
DelAllProperties;
liComplects:
;
liCableCanalConnectors:
DelAllCableCanalConnectors;
liCrossConnections:
DelAllCrossConnections;
end;
EnableButtons;
end;
procedure TF_AddComponent.GT_NORMSCustomDrawCell(
Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin
OnNormsResourcesCustomDrawCell(ACanvas, AViewInfo, GT_NORMSIsResource.Index,
GT_NORMSGUIDNBCompon.Index, GT_NORMSTotalKolvo.Index, true);
end;
procedure TF_AddComponent.GT_NORMSTotalKolvoGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: String);
begin
//AText := GetDisplayTextInFLoatUOM(AText, TF_Main(GForm).FUOM);
end;
procedure TF_AddComponent.ComboBox_ProducerPropertiesChange(
Sender: TObject);
begin
GWasChanging := true;
end;
procedure TF_AddComponent.cePriceSupplyPropertiesChange(Sender: TObject);
begin
GWasChanging := true;
end;
procedure TF_AddComponent.Edit_NoticePropertiesChange(Sender: TObject);
begin
GWasChanging := true;
end;
procedure TF_AddComponent.Timer_ChoiceCompTypeTimer(Sender: TObject);
var
GUIDCompType: String;
begin
TTimer(Sender).Enabled := false;
GUIDCompType := ExecuteChoiceComponType(GForm);
if GUIDCompType <> '' then
begin
if SelectItemByGUIDinCombo(ComboBox_ComponentType, GUIDCompType) then
ComboBox_ComponentTypeExit(ComboBox_ComponentType);
end
else
begin
ComboBox_ComponentType.SetFocus;
ComboBox_ComponentType.DroppedDown := true;
end;
end;
function TF_AddComponent.Execute(AFormMode: TFormMode; AIsTemplate: Boolean): Boolean;
begin
Result := false;
try
GFormMode := AFormMode;
FIsTemplate := AIsTemplate;
if ShowModal = mrOK then
Result := true;
except
on E: Exception do AddExceptionToLogExt(ClassName, MethodName(@TF_AddComponent.Execute), E.Message);
end;
end;
procedure TF_AddComponent.btChangeSpecificationClick(Sender: TObject);
var
IDObject: Integer;
begin
IDObject := GetIDFromComboBox(cbSpecification);
if TF_Main(GForm).GDBMode = bkNormBase then
begin
F_NormBase.F_CaseForm.GIDNotDel := IDObject;
F_NormBase.F_CaseForm.GIDToLocate := IDObject;
if (F_NormBase.F_CaseForm.Execute(vkCompSpecifications, fmEdit)) then
begin
IDObject := F_NormBase.DM.dsetCompSpecifications.FN(fnID).AsInteger;
FillComboBox(cbSpecification, F_NormBase, true, tnFiles, fnID, fnFileName, '', IDObject);
GWasChanging := true;
end
else
FillComboBox(cbSpecification, F_NormBase, true, tnFiles, fnID, fnFileName, '', IDObject);
end;
end;
procedure TF_AddComponent.OnChangeComponPropertyVal(AProperty: PProperty; AOldProperty: PProperty=nil);
begin
if AProperty.SysName = pnHeightInUnits then
begin
SetPropertyValueBySysNameAsFloat(pnHeight, StrToFloatU(AProperty^.Value) * cUnitHeight);
end;
end;
procedure TF_AddComponent.OnSetComponPropertyVal(AMakeEdit: TMakeEdit; AProperty: PProperty; AOldProperty: PProperty=nil);
begin
OnChangeComponPropertyVal(AProperty, AOldProperty);
end;
procedure TF_AddComponent.OnControlChange(Sender: TObject);
begin
if Not FIsLoadingForm then
GWasChanging := true;
end;
procedure TF_AddComponent.GT_NORMSLaborTimeGetDisplayText(
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
var AText: String);
begin
AText := GetDisplayTextToNORMLaborTime(AText);
end;
procedure TF_AddComponent.Act_ShowInNormBaseExecute(Sender: TObject);
var
InterfPortMemTable: TkbmMemTable;
Spravochnick: TSpravochnik;
Node: TTreeNode;
SCSComponent : TSCSComponent;
currInterFace: TSCSInterface;
sprInterf: TNBInterface;
currNormGuid: string;
i,j,k : Integer;
currNorm: TSCSNorm;
begin
currNormGuid := TF_Main(GForm).DM.MemTable_NormsEd.FieldByName(fnGuidNB).Value;
SCSComponent := nil;
SCScomponent := F_ProjMan.GSCSBase.SCSComponent;
if SCScomponent <> nil then
begin
Node := F_NormBase.FindComponentByGUIDWithBlink(SCSComponent.GuidNB);
if Node <> nil then
begin
Node.Selected := True;
if F_NormBase.GSCSBase.SCSComponent <> nil then
begin
F_NormBase.OnClickCompon(F_NormBase.GSCSBase.SCScomponent);
F_NormBase.GSCSBase.SCSComponent.LoadInterfaces;
SCScomponent := F_NormBase.GSCSBase.SCSComponent;
InterfPortMemTable := TF_MAIN(F_NormBase).DM.MemTable_InterfaceRelEd;
//InterfPortMemTable := TF_Main(F_NormBase).DM.MemTable_InterfaceRel;
if InterfPortMemTable <> nil then
begin
if not InterfPortMemTable.Active then
InterfPortMemTable.Open;
F_NormBase.GT_Interface.Focused := True;
end;
SCSComponent := F_ProjMan.GSCSBase.CurrProject.GetComponentFromReferences(F_ProjMan.GSCSBase.SCSComponent.ID);
if SCSComponent <> nil then
begin
for i := 0 to SCSComponent.NormsResources.Norms.Count - 1 do
begin
currNorm := SCSComponent.NormsResources.Norms[i];
if (currNorm.IsFromInterface = biTrue) then
begin
for j := 0 to SCSComponent.Interfaces.Count - 1 do
begin
currInterFace := TSCSInterface(SCSComponent.Interfaces[j]);
if (currInterFace.IsBusy = biTrue) or (currInterFace.BusyPositions.Count > 0) then
begin
sprInterf := F_ProjMan.GSCSBase.CurrProject.Spravochnik.GetInterfaceWithAssign(currInterFace.GUIDInterface, F_ProjMan.GSCSBase.NBSpravochnik, false, false);
if sprInterf <> nil then
begin
for k := 0 to sprInterF.InterfaceNorms.Count - 1 do
begin
if TNBInterFaceNorm(sprInterf.InterfaceNorms[k]).GuidNBNorm = currNormGuid then
begin
break;
end;
end;
end;
end;
end;
end;
end;
end;
{ TF_Main(F_NormBase).F_CaseForm.GUseMemTable := TF_MAIN(F_NormBase).DM.MemTable_InterfaceRel;//AMemTable;
TF_Main(F_NormBase).F_CaseForm.GIDToLocate := currInterFace.ID_Interface;
TF_Main(F_NormBase).DM.SelectInterfaces(TF_Main(F_NormBase).Tree_Catalog.Selected);
TF_Main(F_NormBase).F_CaseForm.Execute(vkInterface, fmView); }
TF_Main(F_NormBase).F_CaseForm.GUseMemTable := TF_MAIN(F_NormBase).DM.MemTable_InterfaceRel;//AMemTable;
TF_Main(F_NormBase).F_CaseForm.GIDToLocate := sprInterf.ID;
TF_Main(F_NormBase).DM.SelectInterfaces(TF_Main(F_NormBase).Tree_Catalog.Selected);
TF_Main(F_NormBase).F_CaseForm.Execute(vkInterface, fmView);
// ShowSpravochnikForInterface(TF_Main(F_NormBase), InterfPortMemTable);
//TF_MAIN(F_NormBase).DM.MemTable_InterfaceRel.Refresh;
{ ShowSpravochnikForInterface(TF_Main(F_NormBase), InterfPortMemTable);
TF_Main(F_NormBase).DM.SelectInterfaces(TF_Main(F_NormBase).Tree_Catalog.Selected);}
// end;
//F_NormBase.F_CaseForm.Execute(vkInterface, fmView);
{ F_NormBase.F_CaseForm.Execute(vkInterface, fmView);
TF_Main(F_NormBase).DM.SelectInterfaces(TF_Main(F_NormBase).Tree_Catalog.Selected);}
end;
end;
end;
{ IDInterface: Integer;
GUIDInterface: String;
OldName: String;
CurrSprInterface: TNBInterface;
RecNo: Integer;
i: Integer;
DBMode: TDBKind;
begin
Spravochnick := nil;
IDInterface := -1;
GUIDInterface := '';
IDInterface := AMemTable.FieldByName(fnIDInterface).AsInteger;
GUIDInterface := AMemTable.FieldByName(fnGuidInterface).AsString;
OldName := AMemTable.FieldByName(fnName).AsString;
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Spravochnick := TF_Main(F_NormBase).GSCSBase.NBSpravochnik;
TF_Main(AForm).F_CaseForm.GUseMemTable := AMemTable;
TF_Main(AForm).F_CaseForm.GIDToLocate := IDInterface;
TF_Main(AForm).F_CaseForm.Execute(vkInterface, fmView);
//*** <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> AMemTable
if Spravochnick <> nil then
begin
CurrSprInterface := nil;
if GUIDInterface <> '' then
CurrSprInterface := Spravochnick.GetInterfaceWithAssign(GUIDInterface, F_NormBase.GSCSBase.NBSpravochnik, false, false)
else
CurrSprInterface := Spravochnick.GetInterfaceByID(IDInterface);
if CurrSprInterface <> nil then
if CurrSprInterface.Name <> OldName then
begin
RecNo := AMemTable.RecNo;
AMemTable.DisableControls;
try
for i := 0 to AMemTable.RecordCount - 1 do
begin
AMemTable.RecNo := i+1;
if ((GUIDInterface <> '') and (AMemTable.FieldByName(fnGuidInterface).AsString = GUIDInterface)) or
(AMemTable.FieldByName(fnIDInterface).AsInteger = IDInterface) then
begin
AMemTable.Edit;
AMemTable.FieldByName(fnName).AsString := CurrSprInterface.Name;
AMemTable.Post;
end;
end;
finally
AMemTable.RecNo := RecNo;
AMemTable.EnableControls;
end;
end;
end; }
end;
end.
//IDCatalog := 0;
// if GFormMode = fmMake then
// IDCatalog := TF_Main(GForm).GSCSBase.SCSCatalog.ID
// else
// IDCatalog := TF_Main(GForm).DM.GetComponCatalogOwnerID(GIDComponent);
// FNBCurrency := TF_Main(GForm).FNormBas