mirror of
http://gitlab.expertsoft.com.ua/git/expertcad
synced 2026-01-11 17:25:39 +02:00
3984 lines
128 KiB
ObjectPascal
3984 lines
128 KiB
ObjectPascal
unit U_Kalc;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|
Dialogs, RzRadChk, RzButton, StdCtrls, Mask, RzEdit, RzSpnEdt, ExtCtrls,
|
|
RzPanel, RzTabs, exgrid, RapTree, FlytreePro, ActnList, Menus, RzRadGrp,
|
|
DB, kbmMemTable, cxStyles, cxCustomData, cxGraphics, cxFilter, cxData,
|
|
cxDataStorage, cxEdit, cxDBData, cxGridLevel, cxClasses, cxControls,
|
|
cxGridCustomView, cxGridCustomTableView, cxGridTableView,
|
|
cxGridDBTableView, cxGrid, cxSpinEdit, cxTextEdit, cxProgressBar,
|
|
cxDBLookupComboBox, Buttons,
|
|
U_Kalc_DM, U_BaseCommon, cxContainer, cxMaskEdit, cxDropDownEdit, cxLookupEdit,
|
|
cxDBLookupEdit, cxDBExtLookupComboBox, RzCmboBx, cxCheckComboBox,
|
|
cxCheckBox, cxCurrencyEdit, cxColorComboBox, cxMemo, xmldom, Provider,
|
|
// QGrids,
|
|
U_BaseConstants, U_SCSComponent,
|
|
XMLIntf, {XMLDom, } XMLDoc,//MSXML2_TLB,
|
|
ToolWin, ComCtrls, ImgList, RzGroupBar, siComp, siLngLnk,
|
|
cxGridBandedTableView, cxGridDBBandedTableView, cxLookAndFeels,
|
|
U_Common_Classes, cxLookAndFeelPainters, cxNavigator;
|
|
//const // for captions
|
|
// strCalcCapt1 = 'Øèðèíà ýòàæà, ';
|
|
// strCalcCapt2 = 'Äëèíà ýòàæà, ';
|
|
// strCalcCapt3 = 'Âûñîòà ýòàæà, ';
|
|
// strCalcCapt4 = 'Îáùàÿ ïëîùàäü, ';
|
|
// strCalcCapt5 = 'Ðàáî÷àÿ ïëîùàäü , ';
|
|
// strCalcCapt6 = 'Ñðåäíÿÿ S êîìíàòû, ';
|
|
// strCalcCapt7 = 'Ñð. øèðèíà êîìíàòû, ';
|
|
// strCalcCapt8 = 'Ñð. äëèíà êîìíàòû, ';
|
|
// strCalcCapt9 = 'Ïëîùàäü äëÿ 1 ÐÌ, ';
|
|
// strCalcCapt10 = 'Ðàññòîÿíèå îò êðîññà ê ñàìîìó áëèçêîìó ÐÌ, ';
|
|
// strCalcCapt11 = 'Ðàññòîÿíèå îò êðîññà ê ñàìîìó äàëüíåìó ÐÌ, ';
|
|
// strCalcCapt12 = 'Ðàñõîä êîðîáà íà 1 ÐÌ, ';
|
|
// strCalcCapt13 = 'Ðàñõîä êîðîáà íà 1 êîìíàòó, ';
|
|
// strCalcCapt14 = '= ';
|
|
// strCalcCapt15 = 'Ê-âî êàáåëÿ â óïàêîâêå, ';
|
|
// strCalcCapt16 = 'Âûñîòà ðàçìåùåíèÿ ÐÌ, ';
|
|
// strCalcCapt17 = 'Çàïàñ äëÿ âûïîëíåíèÿ ðàçäåëêè êàáåëÿ, ';
|
|
// strCalcCapt18 = 'Âûñîòà ïîäâåñíîãî ïîòîëêà, ';
|
|
|
|
const
|
|
idwCC = 1; //'Ïðîêëàäêà êàáåëüíûõ êàíàëîâ (ì)';
|
|
idwCable = 2; // 'Óêëàäêà êàáåëÿ (ì)';
|
|
idwRM = 3; //'Óñòàíîâêà ðîáî÷åãî ìåñòà (øò.)';
|
|
idwShelf = 4; // 'Ìîíòàæ øêàôà (øò.)';
|
|
idwPP = 5; //'Ìîíòàæ ïàò÷-ïàíåëè â øêàô/ñòîéêó (øò.)';
|
|
idwOrg = 6; //'Ìîíòàæ îðãàíèçàòîðà â øêàô /ñòîéêó (øò.) ';
|
|
idwCrossPort = 7; //'Êðîññèðîâêà (1 ïîðò)';
|
|
idwTestPort = 8; //'Òåñòèðîâàíèå ñîåäèíåíèé (1 ïîðò)';
|
|
idwProectPort = 9; //'Ïðîåêòíûå ðàáîòû (1 ïîðò)';
|
|
idwTransport = 10; //'Òðàíñïîðòíûå ðàñõîäû';
|
|
idwAnother = 11; //'Äðóãèå ïóñêîíàëàäî÷íûå ðàáîòû';
|
|
idwKoef = 12; //'Êîýôèöèåíò íà ðàáîòû (ñîãëàñíî îñîáîìó õàðàêòåðó ðàáîò)';
|
|
const //äëÿ òèïà îò÷¸òíîé ñòðîêè
|
|
idTypePozMaterial = '1';
|
|
idTypePozWorks = '2';
|
|
|
|
type
|
|
T_KalcDocument = class(TMyObject)
|
|
// CoXML: CoDOMDocument;
|
|
Xml: TXMLDocument;
|
|
TopNode: IDOMDocument;
|
|
RootNode: IDomNode;
|
|
// FNodeList: IXMLDOMNodeList;
|
|
FOwner: TForm;
|
|
private
|
|
//coXML: CoDOMDocument;
|
|
FName: string;
|
|
procedure InitXMl;
|
|
procedure AddParamToXMl(AName: string; Value: string = '');
|
|
procedure AddToXmlGrid(AGrid: TcxGridDBTableView);
|
|
procedure LoadGridFromXML(AGrid: TcxGridDBTableView);
|
|
|
|
public
|
|
constructor Create(AOwner: TObject; AFileName: string = '');
|
|
destructor Destroy; override;
|
|
procedure SaveComponentValue(AComponent: TComponent);
|
|
procedure LoadComponentValue(AComponent: TComponent);
|
|
procedure CreateXML(AFieldName: string);
|
|
procedure SaveToFile(AFileName: string);
|
|
procedure LoadFromFile(AFileName: string);
|
|
|
|
end;
|
|
|
|
TF_Kalc = class(TForm)
|
|
Main_PageControl: TRzPageControl;
|
|
TabProject: TRzTabSheet;
|
|
TabComponent: TRzTabSheet;
|
|
RMGroup: TRzGroupBox;
|
|
BuildGroupBox5: TRzGroupBox;
|
|
Label2: TLabel;
|
|
vKolRM: TRzSpinEdit;
|
|
Label1: TLabel;
|
|
vKolPortForRM: TRzSpinEdit;
|
|
vKKolDopMest: TRzSpinEdit;
|
|
Label3: TLabel;
|
|
Label4: TLabel;
|
|
vKolFloor: TRzSpinEdit;
|
|
Label5: TLabel;
|
|
vWidthFloor: TRzSpinEdit;
|
|
Label6: TLabel;
|
|
vLengthFloor: TRzSpinEdit;
|
|
Label7: TLabel;
|
|
vSTotalPlase: TRzSpinEdit;
|
|
vKSWorkPlase: TRzSpinEdit;
|
|
Label8: TLabel;
|
|
vSWorkPlase: TRzSpinEdit;
|
|
Label9: TLabel;
|
|
Label10: TLabel;
|
|
vSKab_Edit: TRzSpinEdit;
|
|
Label11: TLabel;
|
|
vHeighFloor: TRzSpinEdit;
|
|
Label13: TLabel;
|
|
vSForRM: TRzSpinEdit;
|
|
Label14: TLabel;
|
|
vTotalKolRM: TRzSpinEdit;
|
|
vTotalKolPort: TRzSpinEdit;
|
|
Label15: TLabel;
|
|
Label16: TLabel;
|
|
StaticText1: TStaticText;
|
|
StaticText2: TStaticText;
|
|
vKolRMForFloor: TFlyTreeViewPro;
|
|
pmForGrid: TPopupMenu;
|
|
ActionList1: TActionList;
|
|
actAddRecord: TAction;
|
|
actAddRecord1: TMenuItem;
|
|
actDelRecord: TAction;
|
|
N1: TMenuItem;
|
|
RzGroupBox3: TRzGroupBox;
|
|
TypeConnectEuipment_RadioGroup: TRzRadioGroup;
|
|
CableCanalSheet: TRzTabSheet;
|
|
actAddCableCanal: TAction;
|
|
actDelCableCanal: TAction;
|
|
TabSheet1: TRzTabSheet;
|
|
RzPanel1: TRzPanel;
|
|
RzPanel2: TRzPanel;
|
|
AllComponent_GridDBTableView1: TcxGridDBTableView;
|
|
AllComponent_GridLevel1: TcxGridLevel;
|
|
AllComponent_Grid: TcxGrid;
|
|
AllComponent_Grid_Name: TcxGridDBColumn;
|
|
AllComponent_Grid_Arcticul: TcxGridDBColumn;
|
|
AllComponent_Grid_Kolvo: TcxGridDBColumn;
|
|
AllComponent_Grid_Cost: TcxGridDBColumn;
|
|
AllComponent_Grid_price: TcxGridDBColumn;
|
|
RzGroupBox4: TRzGroupBox;
|
|
Label36: TLabel;
|
|
vKolReservCable: TRzSpinEdit;
|
|
Label37: TLabel;
|
|
vKolPortForMCable: TRzSpinEdit;
|
|
actAddCable: TAction;
|
|
actDelCable: TAction;
|
|
vKolPKForRM: TRzSpinEdit;
|
|
Label39: TLabel;
|
|
TypeWayCC_Panel: TRzPanel;
|
|
TypeWeyCC_PageControl: TRzPageControl;
|
|
CableInFloor_Sheet: TRzTabSheet;
|
|
CableUnderCeil_Sheet: TRzTabSheet;
|
|
CableInCC_Sheet: TRzTabSheet;
|
|
TypeWayCC_TopPanel: TRzPanel;
|
|
FixCableWey_ComboBox: TRzComboBox;
|
|
Label22: TLabel;
|
|
CCForFloor_Grid: TcxGrid;
|
|
CCForFloor_GridTableView: TcxGridDBTableView;
|
|
CCForFloor_Grid_ID: TcxGridDBColumn;
|
|
CCForFloor_Grid_Name: TcxGridDBColumn;
|
|
CCForFloor_Grid_Articul: TcxGridDBColumn;
|
|
CCForFloor_Grid_Price: TcxGridDBColumn;
|
|
CCForFloor_Grid_Percent: TcxGridDBColumn;
|
|
CCForFloor_GridLevel: TcxGridLevel;
|
|
Label23: TLabel;
|
|
RzGroupBox1: TRzGroupBox;
|
|
ScrollBox1: TScrollBox;
|
|
FormulaFloor_Group: TRzRadioGroup;
|
|
FormulaFloor1_Panel: TRzPanel;
|
|
Label43: TLabel;
|
|
Label44: TLabel;
|
|
vFormulaFloor1_X: TRzSpinEdit;
|
|
vFormulaFloor1_Y: TRzSpinEdit;
|
|
FormulaFloor2_Panel: TRzPanel;
|
|
Label42: TLabel;
|
|
Label45: TLabel;
|
|
vFormulaFloor2_X: TRzSpinEdit;
|
|
Label46: TLabel;
|
|
vKolRooms: TRzSpinEdit;
|
|
Label40: TLabel;
|
|
vWidthRoom: TRzSpinEdit;
|
|
Label41: TLabel;
|
|
vLengthRoom: TRzSpinEdit;
|
|
CCUnderCeil_Grid: TcxGrid;
|
|
CCUnderCeil_GridTableView: TcxGridDBTableView;
|
|
CCUnderCeil_Grid_id: TcxGridDBColumn;
|
|
CCUnderCeil_Grid_Name: TcxGridDBColumn;
|
|
CCUnderCeil_Grid_Articul: TcxGridDBColumn;
|
|
CCUnderCeil_Grid_price: TcxGridDBColumn;
|
|
CCUnderCeil_Grid_Percent: TcxGridDBColumn;
|
|
CCUnderCeil_GridLevel: TcxGridLevel;
|
|
vHeigthFalseCeil: TRzSpinEdit;
|
|
Label12: TLabel;
|
|
Label48: TLabel;
|
|
FormulaUnderCail_Group: TRzGroupBox;
|
|
ScrollBox2: TScrollBox;
|
|
FormulaUnderCail_RadioGroup: TRzRadioGroup;
|
|
FormulaUnderCail1_Panel: TRzPanel;
|
|
Label49: TLabel;
|
|
Label50: TLabel;
|
|
vFormulaUnderCeil1_X: TRzSpinEdit;
|
|
vFormulaUnderCeil1_Y: TRzSpinEdit;
|
|
FormulaUnderCail2_Panel: TRzPanel;
|
|
Label51: TLabel;
|
|
vFormulaUnderCeil2_X: TRzSpinEdit;
|
|
FormulaDekorCC_Group: TRzGroupBox;
|
|
ScrollBox3: TScrollBox;
|
|
FormulaDekorCC_RadioGroup: TRzRadioGroup;
|
|
FormulaDekorCC1_Panel: TRzPanel;
|
|
Label53: TLabel;
|
|
Label54: TLabel;
|
|
FormulaDekorCC2_Panel: TRzPanel;
|
|
Label56: TLabel;
|
|
vFormulaDekorCC2_X: TRzSpinEdit;
|
|
Label55: TLabel;
|
|
Label59: TLabel;
|
|
vHeigthCC: TRzSpinEdit;
|
|
RzGroupBox5: TRzGroupBox;
|
|
ScrollBox4: TScrollBox;
|
|
FormulaInCC_Group: TRzRadioGroup;
|
|
FormulaInCC3_Panel: TRzPanel;
|
|
Label65: TLabel;
|
|
vFormulaInCC3_X: TRzSpinEdit;
|
|
Label57: TLabel;
|
|
Label66: TLabel;
|
|
vFormulaInCC3_Y: TRzSpinEdit;
|
|
FormulaInCC1_Panel: TRzPanel;
|
|
Label63: TLabel;
|
|
Label64: TLabel;
|
|
Label17: TLabel;
|
|
vFormulaInCC1_X: TRzSpinEdit;
|
|
Openwir_Sheet: TRzTabSheet;
|
|
ElPointFix_Grid: TcxGrid;
|
|
ElPointFix_GridTableView: TcxGridDBTableView;
|
|
ElPointFix_Grid_id: TcxGridDBColumn;
|
|
ElPointFix_Grid_Name: TcxGridDBColumn;
|
|
ElPointFix_Grid_Articul: TcxGridDBColumn;
|
|
ElPointFix_Grid_Price: TcxGridDBColumn;
|
|
ElPointFix_Grid_Percent: TcxGridDBColumn;
|
|
ElPointFix_GridLevel: TcxGridLevel;
|
|
Label60: TLabel;
|
|
RzGroupBox6: TRzGroupBox;
|
|
ScrollBox5: TScrollBox;
|
|
OpenWir_RadioGroup: TRzRadioGroup;
|
|
MetodOpenWir1_panel: TRzPanel;
|
|
Label61: TLabel;
|
|
vMetodOpenWir1_Rashod: TRzSpinEdit;
|
|
Label70: TLabel;
|
|
FormulaInCC2_Panel: TRzPanel;
|
|
Label68: TLabel;
|
|
Label69: TLabel;
|
|
Label72: TLabel;
|
|
vFormulaInCC2_X: TRzSpinEdit;
|
|
Label31: TLabel;
|
|
vDistShot: TRzSpinEdit;
|
|
vDistLong: TRzSpinEdit;
|
|
Label21: TLabel;
|
|
Label47: TLabel;
|
|
Label73: TLabel;
|
|
Label74: TLabel;
|
|
ZakazchikName_Edit: TRzEdit;
|
|
PodradchikName_edit: TRzEdit;
|
|
Curr_ComboBox: TcxComboBox;
|
|
actExit: TAction;
|
|
EIncludHarProj: TRzCheckBox;
|
|
CC_PopupMenu: TPopupMenu;
|
|
MenuItem1: TMenuItem;
|
|
MenuItem2: TMenuItem;
|
|
Cable_PopupMenu: TPopupMenu;
|
|
MenuItem3: TMenuItem;
|
|
MenuItem4: TMenuItem;
|
|
OpenDialog1: TOpenDialog;
|
|
SaveDialog1: TSaveDialog;
|
|
ToolBar1: TToolBar;
|
|
OpenFile_Btn: TRzBitBtn;
|
|
SaveFile_Btn: TRzBitBtn;
|
|
ClearProject_Btn: TRzBitBtn;
|
|
gbFloorsProperties: TRzGroupBox;
|
|
gbSquare: TRzGroupBox;
|
|
gbRoomProperties: TRzGroupBox;
|
|
ToolBar2: TToolBar;
|
|
tbOpen: TToolButton;
|
|
tbSave: TToolButton;
|
|
tbClear: TToolButton;
|
|
ImageList1: TImageList;
|
|
pcComponentTypes: TRzPageControl;
|
|
tsWorkPlaces: TRzTabSheet;
|
|
CostRMGrid: TcxGrid;
|
|
CostRMGridTableView: TcxGridDBTableView;
|
|
ID_Column: TcxGridDBColumn;
|
|
Name_Column: TcxGridDBColumn;
|
|
Articul_Column: TcxGridDBColumn;
|
|
Price_Column: TcxGridDBColumn;
|
|
CostRMGrid_Kolvo: TcxGridDBColumn;
|
|
CostRMGridLevel1: TcxGridLevel;
|
|
tsPathCords: TRzTabSheet;
|
|
CostPK_Grid: TcxGrid;
|
|
CostPKDBTableView: TcxGridDBTableView;
|
|
CostPKColumn_ID: TcxGridDBColumn;
|
|
CostPKColumn_Name: TcxGridDBColumn;
|
|
CostPKColumn_Articul: TcxGridDBColumn;
|
|
CostPKColumn_Price: TcxGridDBColumn;
|
|
CostPK_Missing: TcxGridDBColumn;
|
|
CostPK_Persent: TcxGridDBColumn;
|
|
CostPK_GridLevel1: TcxGridLevel;
|
|
tsPathPanals: TRzTabSheet;
|
|
CostPP_Grid: TcxGrid;
|
|
CostPP_GridDBTableView: TcxGridDBTableView;
|
|
CostPP_GridColumn_ID: TcxGridDBColumn;
|
|
CostPP_GridColumn_Name: TcxGridDBColumn;
|
|
CostPP_GridColumn_Articul: TcxGridDBColumn;
|
|
CostPP_GridColumn_Price: TcxGridDBColumn;
|
|
CostPP_GridLevel1: TcxGridLevel;
|
|
tsOrganizator: TRzTabSheet;
|
|
CostOrg_Grid: TcxGrid;
|
|
GT_CostOrg: TcxGridDBTableView;
|
|
CostOrg_GridColumn_ID: TcxGridDBColumn;
|
|
CostOrg_GridColumn_Name: TcxGridDBColumn;
|
|
CostOrg_GridColumn_Articul: TcxGridDBColumn;
|
|
CostOrg_GridColumn_Price: TcxGridDBColumn;
|
|
CostOrg_GridLevel1: TcxGridLevel;
|
|
tsConsolidationPoints: TRzTabSheet;
|
|
StaticText3: TStaticText;
|
|
CostShelf_Grid: TcxGrid;
|
|
CostShelf_GridDBTableView: TcxGridDBTableView;
|
|
CostShelf_GridColumn_Id: TcxGridDBColumn;
|
|
CostShelf_GridColumnName: TcxGridDBColumn;
|
|
CostShelf_GridColumnArticul: TcxGridDBColumn;
|
|
CostShelf_GridColumn_Price: TcxGridDBColumn;
|
|
CostShelf_GridLevel: TcxGridLevel;
|
|
RzPanel4: TRzPanel;
|
|
Label29: TLabel;
|
|
vCm_Shelf: TRzSpinEdit;
|
|
OnceShelfCheck: TRzCheckBox;
|
|
StaticText7: TStaticText;
|
|
ServFloor_ComboBox: TcxLookupComboBox;
|
|
RzPanel5: TRzPanel;
|
|
ECostShelfGridCheck: TRzCheckBox;
|
|
RzPanel6: TRzPanel;
|
|
pnShelfForFloorOpt: TRzPanel;
|
|
FixAllEcxeptSelCheck: TRzCheckBox;
|
|
ShelfForFloor_Grid: TcxGrid;
|
|
ShelfForFloor_GridDBTableView: TcxGridDBTableView;
|
|
ShelfForFloor_GridColumn_Floor: TcxGridDBColumn;
|
|
ShelfForFloor_GridColumn_id_Shelf: TcxGridDBColumn;
|
|
ShelfForFloor_GridColumn_Price: TcxGridDBColumn;
|
|
ShelfForFloor_Grid_Id: TcxGridDBColumn;
|
|
ShelfForFloor_GridLevel: TcxGridLevel;
|
|
Splitter1: TSplitter;
|
|
tsAdditionalEquipment: TRzTabSheet;
|
|
RzPanel7: TRzPanel;
|
|
Label30: TLabel;
|
|
vCostDopEq: TRzSpinEdit;
|
|
RzPanel8: TRzPanel;
|
|
EDopEqGrid_Check: TRzCheckBox;
|
|
DopEq_Grid: TcxGrid;
|
|
DopEq_TableView: TcxGridDBTableView;
|
|
DopEq_Grid_id: TcxGridDBColumn;
|
|
DopEq_Grid_Name: TcxGridDBColumn;
|
|
DopEq_Grid_Articul: TcxGridDBColumn;
|
|
DopEq_Grid_Price: TcxGridDBColumn;
|
|
DopEq_Kolvo: TcxGridDBColumn;
|
|
DopEq_Level: TcxGridLevel;
|
|
RzPanel9: TRzPanel;
|
|
Label20: TLabel;
|
|
vCPK: TRzSpinEdit;
|
|
eKalcPKForRM_Check: TRzCheckBox;
|
|
RzPanel10: TRzPanel;
|
|
ECostPKGridCheck: TRzCheckBox;
|
|
RzPanel11: TRzPanel;
|
|
Label19: TLabel;
|
|
vCPP: TRzSpinEdit;
|
|
Label34: TLabel;
|
|
vKolPortPP: TRzSpinEdit;
|
|
RzPanel12: TRzPanel;
|
|
ECostPPGrid_Check: TRzCheckBox;
|
|
RzPanel13: TRzPanel;
|
|
Label28: TLabel;
|
|
vCOrg: TRzSpinEdit;
|
|
RzPanel14: TRzPanel;
|
|
ECostOrgGrid_Check: TRzCheckBox;
|
|
RzPanel15: TRzPanel;
|
|
RzPanel16: TRzPanel;
|
|
Label18: TLabel;
|
|
vCRM: TRzSpinEdit;
|
|
RzPanel17: TRzPanel;
|
|
ECostRMGrid_Check: TRzCheckBox;
|
|
RzGroupBar1: TRzGroupBar;
|
|
grComponentTypes: TRzGroup;
|
|
pcChannelComponTypes: TRzPageControl;
|
|
TabSheet2: TRzTabSheet;
|
|
RzPanel18: TRzPanel;
|
|
StaticText4: TStaticText;
|
|
CableCanalGrid: TcxGrid;
|
|
CableCanalGrid_TableView1: TcxGridDBTableView;
|
|
CableCanalGrid_NPP: TcxGridDBColumn;
|
|
CableCanalGrid_Name: TcxGridDBColumn;
|
|
CableCanalGrid_Articul: TcxGridDBColumn;
|
|
CableCanalGrid_Price: TcxGridDBColumn;
|
|
CableCanalGrid_Percent: TcxGridDBColumn;
|
|
CableCanalGridLevel1: TcxGridLevel;
|
|
TabSheet4: TRzTabSheet;
|
|
RzPanel19: TRzPanel;
|
|
StaticText5: TStaticText;
|
|
Cable_Grid: TcxGrid;
|
|
Cable_Grid_DBTableView: TcxGridDBTableView;
|
|
Cable_Grid_Name: TcxGridDBColumn;
|
|
Cable_Grid_Articul: TcxGridDBColumn;
|
|
Cable_Grid_Price: TcxGridDBColumn;
|
|
Cable_Grid_Percent: TcxGridDBColumn;
|
|
Cable_Grid_TypeUse: TcxGridDBColumn;
|
|
Cable_GridLevel1: TcxGridLevel;
|
|
RzPanel20: TRzPanel;
|
|
Label35: TLabel;
|
|
vKolCableInPark: TRzSpinEdit;
|
|
Label33: TLabel;
|
|
vHeigthRM: TRzSpinEdit;
|
|
Label32: TLabel;
|
|
vKolTehreserv: TRzSpinEdit;
|
|
Label26: TLabel;
|
|
vKCableRezerv: TRzSpinEdit;
|
|
Label24: TLabel;
|
|
vCableEndRezerv: TRzSpinEdit;
|
|
gbChannelComponTypes: TRzGroupBar;
|
|
RzPanel21: TRzPanel;
|
|
grChannelComponTypes: TRzGroup;
|
|
RzPanel22: TRzPanel;
|
|
btCalc: TSpeedButton;
|
|
btPrintReport: TSpeedButton;
|
|
btEditReport: TSpeedButton;
|
|
Clear_Btn: TSpeedButton;
|
|
FixBtn: TSpeedButton;
|
|
KolRMBtn: TSpeedButton;
|
|
cxStyleRepository1: TcxStyleRepository;
|
|
cxBackNormal: TcxStyle;
|
|
cxBackDisabled: TcxStyle;
|
|
Splitter2: TSplitter;
|
|
RzGroupBox2: TRzGroupBox;
|
|
ElementOfCC_Grid: TcxGrid;
|
|
ElementOfCC_Grid_DBTableView: TcxGridDBTableView;
|
|
id: TcxGridDBColumn;
|
|
Npp_CC: TcxGridDBColumn;
|
|
Id_Type: TcxGridDBColumn;
|
|
Articul: TcxGridDBColumn;
|
|
price: TcxGridDBColumn;
|
|
rashod: TcxGridDBColumn;
|
|
cxGridLevel1: TcxGridLevel;
|
|
lng_Forms: TsiLangLinked;
|
|
TabSheet3: TRzTabSheet;
|
|
RzPanel3: TRzPanel;
|
|
RzPanel23: TRzPanel;
|
|
btClearPriceWorks: TSpeedButton;
|
|
PriceWorks_Grid: TcxGrid;
|
|
PriceWorks_TableView: TcxGridDBTableView;
|
|
PriceWorks_Grid_Name: TcxGridDBColumn;
|
|
PriceWorks_Grid_Price: TcxGridDBColumn;
|
|
cxGridLevel2: TcxGridLevel;
|
|
AllComponent_Grid_TypePoz: TcxGridDBColumn;
|
|
cxFoter: TcxStyle;
|
|
Label25: TLabel;
|
|
vKoefDistShot: TRzSpinEdit;
|
|
Label27: TLabel;
|
|
vKoefDistLong: TRzSpinEdit;
|
|
Label38: TLabel;
|
|
procedure vKSWorkPlaseChange(Sender: TObject);
|
|
procedure vWidthFloorChange(Sender: TObject);
|
|
procedure vLengthFloorChange(Sender: TObject);
|
|
procedure vSTotalPlaseChange(Sender: TObject);
|
|
procedure vKolFloorChange(Sender: TObject);
|
|
procedure vKolPortForRMChange(Sender: TObject);
|
|
procedure vTotalKolRMChange(Sender: TObject);
|
|
procedure vKolRMChange(Sender: TObject);
|
|
procedure KolRMBtnClick(Sender: TObject);
|
|
{ procedure vKolRMForFloorEdited(Sender: TObject; Node: TFlyNode;
|
|
var S: String);}
|
|
procedure ECostRMGrid_CheckClick(Sender: TObject);
|
|
procedure ECostPPGrid_CheckClick(Sender: TObject);
|
|
procedure actAddRecordExecute(Sender: TObject);
|
|
procedure ECostPKGridCheckClick(Sender: TObject);
|
|
procedure actDelRecordExecute(Sender: TObject);
|
|
procedure ECostOrgGrid_CheckClick(Sender: TObject);
|
|
procedure ECostShelfGridCheckClick(Sender: TObject);
|
|
procedure Main_PageControlChanging(Sender: TObject; NewIndex: Integer;
|
|
var AllowChange: Boolean);
|
|
procedure actAddCableCanalExecute(Sender: TObject);
|
|
function GetFreePercent(count: integer): integer;
|
|
function GetFreePercentForCable: Integer;
|
|
// Procedure InitTypeOfElementCC_MemTable;
|
|
// Procedure InitTypeUseCable_MemTable;
|
|
procedure actDelCableCanalExecute(Sender: TObject);
|
|
procedure CableCanalMemTableChange(Sender: TField);
|
|
procedure CableCanalGrid_TableView1EditValueChanged(
|
|
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
|
|
procedure CableCanalMemTableAfterDelete(DataSet: TDataSet);
|
|
procedure btCalcClick(Sender: TObject);
|
|
procedure actAddCableExecute(Sender: TObject);
|
|
procedure actDelCableExecute(Sender: TObject);
|
|
procedure CableCanalGrid_TableView1KeyDown(Sender: TObject;
|
|
var Key: Word; Shift: TShiftState);
|
|
procedure Cable_Grid_DBTableViewKeyDown(Sender: TObject; var Key: Word;
|
|
Shift: TShiftState);
|
|
procedure CostRMGridKeyDown(Sender: TObject; var Key: Word;
|
|
Shift: TShiftState);
|
|
procedure FixBtnClick(Sender: TObject);
|
|
procedure Clear_BtnClick(Sender: TObject);
|
|
procedure EDopEqGrid_CheckClick(Sender: TObject);
|
|
procedure DopEq_TableViewEditValueChanged(
|
|
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
|
|
procedure CostPP_GridDBTableViewEditValueChanged(
|
|
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
|
|
procedure GT_CostOrgEditValueChanged(
|
|
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
|
|
procedure Cable_Grid_DBTableViewEditValueChanged(
|
|
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
|
|
procedure vKKolDopMestChange(Sender: TObject);
|
|
procedure FixCableWey_ComboBoxCloseUp(Sender: TObject);
|
|
procedure FormulaFloor_GroupChanging(Sender: TObject;
|
|
NewIndex: Integer; var AllowChange: Boolean);
|
|
procedure FormulaUnderCail_RadioGroupChanging(Sender: TObject;
|
|
NewIndex: Integer; var AllowChange: Boolean);
|
|
procedure FormulaDekorCC_RadioGroupChanging(Sender: TObject;
|
|
NewIndex: Integer; var AllowChange: Boolean);
|
|
procedure FormulaInCC_GroupChanging(Sender: TObject; NewIndex: Integer;
|
|
var AllowChange: Boolean);
|
|
procedure ServFloor_ComboBoxPropertiesChange(Sender: TObject);
|
|
procedure vWidthRoomChange(Sender: TObject);
|
|
procedure vLengthRoomChange(Sender: TObject);
|
|
procedure PrintClick(Sender: TObject);
|
|
procedure actExitExecute(Sender: TObject);
|
|
procedure btPrintReportClick(Sender: TObject);
|
|
procedure btEditReportClick(Sender: TObject);
|
|
procedure Curr_ComboBoxPropertiesChange(Sender: TObject);
|
|
procedure vHeighFloorChange(Sender: TObject);
|
|
procedure vSKab_EditChange(Sender: TObject);
|
|
procedure vSForRMChange(Sender: TObject);
|
|
procedure AllComponent_GridDBTableView1EditValueChanged(
|
|
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
|
|
procedure OpenFile_BtnClick(Sender: TObject);
|
|
procedure SaveFile_BtnClick(Sender: TObject);
|
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
|
procedure CostShelf_GridDBTableViewEditValueChanged(
|
|
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
|
|
procedure CostRMGridTableViewDragOver(Sender, Source: TObject; X,
|
|
Y: Integer; State: TDragState; var Accept: Boolean);
|
|
procedure CostRMGridTableViewDragDrop(Sender, Source: TObject; X,
|
|
Y: Integer);
|
|
procedure CostPKDBTableViewDragDrop(Sender, Source: TObject; X,
|
|
Y: Integer);
|
|
procedure CostPP_GridDBTableViewDragDrop(Sender, Source: TObject; X,
|
|
Y: Integer);
|
|
procedure GT_CostOrgDragDrop(Sender, Source: TObject; X,
|
|
Y: Integer);
|
|
procedure CostShelf_GridDBTableViewDragDrop(Sender, Source: TObject; X,
|
|
Y: Integer);
|
|
procedure DopEq_TableViewDragDrop(Sender, Source: TObject; X,
|
|
Y: Integer);
|
|
procedure CableCanalGrid_TableView1DragDrop(Sender, Source: TObject; X,
|
|
Y: Integer);
|
|
procedure ElPointFix_GridTableViewDragDrop(Sender, Source: TObject; X,
|
|
Y: Integer);
|
|
procedure CCForFloor_GridTableViewDragDrop(Sender, Source: TObject; X,
|
|
Y: Integer);
|
|
procedure CCUnderCeil_GridTableViewDragDrop(Sender, Source: TObject; X,
|
|
Y: Integer);
|
|
procedure AllComponent_GridDBTableView1FocusedItemChanged(
|
|
Sender: TcxCustomGridTableView; APrevFocusedItem,
|
|
AFocusedItem: TcxCustomGridTableItem);
|
|
procedure AllComponent_Grid_pricePropertiesValidate(Sender: TObject;
|
|
var DisplayValue: Variant; var ErrorText: TCaption;
|
|
var Error: Boolean);
|
|
procedure AllComponent_Grid_KolvoPropertiesValidate(Sender: TObject;
|
|
var DisplayValue: Variant; var ErrorText: TCaption;
|
|
var Error: Boolean);
|
|
procedure Cable_Grid_DBTableViewDragDrop(Sender, Source: TObject; X,
|
|
Y: Integer);
|
|
procedure ClearProject_BtnClick(Sender: TObject);
|
|
procedure grComponentTypesItems0Click(Sender: TObject);
|
|
procedure grChannelComponTypesItems0Click(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure CostRMGridTableViewEditValueChanged(
|
|
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
|
|
procedure Name_ColumnPropertiesEditValueChanged(Sender: TObject);
|
|
procedure DopEq_GridExit(Sender: TObject);
|
|
procedure btClearPriceWorksClick(Sender: TObject);
|
|
procedure AllComponent_Grid_TypePozGetDisplayText(
|
|
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
|
|
var AText: String);
|
|
procedure vKolRMForFloorEdited(Sender: TObject; Node: TFlyNode;
|
|
var S: WideString);
|
|
private
|
|
{ Private declarations }
|
|
TotalKolCable, TotalKolCC: integer;
|
|
// FCountCC, FCountECC: integer;
|
|
procedure CalculateCC;
|
|
procedure PutHaracterProjectInMT;
|
|
procedure AddCCElements;
|
|
|
|
procedure EnableTableView(ATableView: TcxGridDBTableView; AEnabled: Boolean);
|
|
function GetKoefForWorks: double;
|
|
|
|
procedure FixLabeles;
|
|
public
|
|
{ Public declarations }
|
|
Kalc_DM: TKalc_DM;
|
|
KoefForWorks: double;
|
|
ServerFloor: integer;
|
|
procedure ClearProject;
|
|
procedure AutoKomplectFloorByRM;
|
|
function CmpFloorsWithKolRM: integer;
|
|
//constructor Create(AOwner: TComponent);
|
|
destructor Destroy; override;
|
|
function CalculateProject: double;
|
|
procedure AddRecordInReport(AName: string; AArticul: String; AKol: integer;
|
|
APrice, ACost: double; AidTypePoz: string = idTypePozMaterial);
|
|
Procedure AddRecordInHaracterProject_MemTable(AName, AZnach: string);
|
|
Function getCostOfProjectReportParams: TCostOfProjectReportParams;
|
|
|
|
procedure Execute;
|
|
|
|
function GetPriceForKalcFromDragCompon(ACompon: TSCSComponent): double;
|
|
|
|
procedure PutToReportWork(AIdWorks: integer; AKolWorks: integer; AKoef: double = 1);
|
|
end;
|
|
|
|
Const
|
|
TempFile = 'spe.tmp';
|
|
|
|
const
|
|
//íàçâàíèå ïîëåé
|
|
fnPercent = 'Percent';
|
|
fnArticul = 'Articul';
|
|
|
|
Const
|
|
//íàçâàíèå ñâîéñòâ
|
|
pnPORTCOUNT = 'PORTCOUNT';
|
|
|
|
var
|
|
F_Kalc: TF_Kalc;
|
|
|
|
|
|
|
|
implementation
|
|
|
|
uses Math, U_SCSLists, Treecoll, U_Main, U_ResourceReport, DBConsts, U_Common;
|
|
{$R *.dfm}
|
|
//***************************************************
|
|
function TF_Kalc.GetFreePercent(count: integer): integer;
|
|
var
|
|
i: integer;
|
|
RecNo: integer;
|
|
begin
|
|
Result := 100;
|
|
// RecNo := CableCanalMemTable.RecNo;
|
|
Kalc_DM.CableCanalMemTable.First;
|
|
for i := 0 to Count - 1 do
|
|
begin
|
|
Result := Result - Kalc_DM.CableCanalMemTable.FieldByName('Percent').AsInteger;
|
|
if i = count then
|
|
begin
|
|
end
|
|
else
|
|
Kalc_DM.CableCanalMemTable.Next;
|
|
end;
|
|
end;
|
|
//****************************************************
|
|
//***************************************************
|
|
function TF_Kalc.GetFreePercentForCable: integer;
|
|
var
|
|
i: integer;
|
|
RecNo: integer;
|
|
per1, per2: integer;
|
|
begin
|
|
per1 := 100;
|
|
per2 := 100;
|
|
Result := -1;
|
|
// RecNo := CableCanalMemTable.RecNo;
|
|
Kalc_DM.Cable_MemTable.First;
|
|
for i := 0 to Kalc_DM.Cable_MemTable.RecordCount - 1 do
|
|
begin
|
|
if Kalc_DM.Cable_MemTable.FieldByName('Id_Missing').AsInteger = tcuRaspred then
|
|
begin
|
|
Per1 := Per1 - Kalc_DM.Cable_MemTable.FieldByName('Percent').AsInteger;
|
|
end
|
|
else
|
|
Per2 := Per2 - Kalc_DM.Cable_MemTable.FieldByName('Percent').AsInteger;
|
|
Kalc_DM.Cable_MemTable.Next;
|
|
end;
|
|
if (per1 < 0) and ((Per2 >0) and (per2 <> 100)) then
|
|
begin
|
|
Result := 1;
|
|
end
|
|
else
|
|
if (per1 > 0) and (Per2 < 0) then
|
|
begin
|
|
Result := 2;
|
|
end
|
|
else
|
|
if (per1 = 0) and ((Per2 = 0) or (per2 = 100)) then
|
|
begin
|
|
Result := 0;
|
|
end;
|
|
if (per1 < 0) and (per2 < 0) then
|
|
Result := 3;
|
|
if (per1 >0) and (result = -1) then
|
|
result := 4;
|
|
if (per2 >0) and (result = -1) then
|
|
result := 5;
|
|
if (per1 <0) and (result = -1) then
|
|
result := 6;
|
|
if (per2 <0) and (result = -1) then
|
|
result := 7;
|
|
end;
|
|
//****************************************************
|
|
|
|
///*********------------------------******************
|
|
procedure TF_Kalc.CableCanalMemTableChange(Sender: TField);
|
|
begin
|
|
if GetFreePercent(Kalc_DM.CableCanalMemTable.RecordCount)< 0 then
|
|
begin
|
|
StaticText4.Show;
|
|
end
|
|
else
|
|
begin
|
|
StaticText4.Hide;
|
|
end;
|
|
end;
|
|
//****************************************************
|
|
|
|
|
|
|
|
procedure ValCostFromGrid(AEdit: TRzSpinEdit; ATable: TkbmMemTable);
|
|
var
|
|
I, kolvo: integer;
|
|
sum: double;
|
|
val: double;
|
|
KolvoFlag: boolean;
|
|
Field: TField;
|
|
begin
|
|
kolvo := 1;
|
|
Field := ATable.FindField('Kolvo');
|
|
if Field <> nil then
|
|
KolvoFlag := true
|
|
else
|
|
KolvoFlag := false;
|
|
Sum := 0;
|
|
ATable.first;
|
|
for i := 0 to ATable.RecordCount - 1 do
|
|
begin
|
|
if ATable.FieldByName('Price').AsString <> '' then
|
|
begin
|
|
if KolvoFlag then
|
|
kolvo := ATable.FieldByName('Kolvo').AsInteger;
|
|
if kolvo < 1 then
|
|
kolvo := 1;
|
|
val := ATable.FieldByName('Price').AsFloat;
|
|
Sum := Sum + Val * kolvo;
|
|
kolvo := 1;
|
|
end;
|
|
ATable.Next;
|
|
end;
|
|
AEdit.Value := Sum;
|
|
end;
|
|
|
|
procedure TF_Kalc.DopEq_TableViewDragDrop(Sender, Source: TObject; X,
|
|
Y: Integer);
|
|
var price: double;
|
|
begin
|
|
price := GetPriceForKalcFromDragCompon(GDropComponent);
|
|
U_Kalc_DM.AddRecordInMemTable(Kalc_DM.DopEq_MemTable, GDropComponent.Name, GDropComponent.ArticulProducer,Price,1);
|
|
// TcxGridTableView(Sender).Refresh;
|
|
ValCostFromGrid(vCostDopEq, Kalc_DM.DopEq_MemTable);
|
|
end;
|
|
|
|
|
|
function TF_Kalc.CmpFloorsWithKolRM: integer;
|
|
var
|
|
KolRM, RMOfFloor, i: integer;
|
|
begin
|
|
result := 0;
|
|
KolRm := trunc(vTotalKolRM.Value);
|
|
for i := 0 to vKolRMForFloor.Items.Count - 1 do
|
|
begin
|
|
if vKolRMForFloor.Items[i].Cells[1] = '' then
|
|
RMOfFloor := 0
|
|
else
|
|
RMOfFloor := StrToInt(vKolRMForFloor.Items[i].Cells[1]);
|
|
KolRM := KolRm - RMOfFloor;
|
|
end;
|
|
Result := KolRM; //* (-1);
|
|
end;
|
|
|
|
procedure TF_Kalc.AutoKomplectFloorByRM;
|
|
var
|
|
KolRm, KolFloor: integer;
|
|
KolRmForFloor : integer;
|
|
i, count: integer;
|
|
begin
|
|
KolFloor := trunc(vKolFloor.Value);
|
|
if KolFloor <= 0 then
|
|
KolFloor := 1;
|
|
KolRm := trunc(vTotalKolRM.Value);
|
|
KolRmForFloor := trunc(KolRm / KolFloor);
|
|
count := vKolRMForFloor.Items.Count -1;
|
|
for i := 0 to Count do
|
|
begin
|
|
if i = Count then
|
|
begin
|
|
vKolRMForFloor.Items[i].Cells[1] := IntToStr(KolRmForFloor + KolRm mod KolFloor);
|
|
end
|
|
else
|
|
begin
|
|
vKolRMForFloor.Items[i].Cells[1] := IntToStr(KolRmForFloor);
|
|
end;
|
|
end;
|
|
end;
|
|
procedure TF_Kalc.vKSWorkPlaseChange(Sender: TObject);
|
|
var
|
|
SVal: double;
|
|
begin
|
|
If vSTotalPlase.Value <> 0 then
|
|
begin
|
|
SVal := vSTotalPlase.Value;
|
|
vSWorkPlase.Value := SVal * vKSWorkPlase.Value / 100;
|
|
// KolRMBtnClick(Self);
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.vWidthFloorChange(Sender: TObject);
|
|
|
|
begin
|
|
vSTotalPlase.Value := vWidthFloor.Value * vLengthFloor.Value;
|
|
end;
|
|
|
|
procedure TF_Kalc.vLengthFloorChange(Sender: TObject);
|
|
begin
|
|
vSTotalPlase.Value := vWidthFloor.Value * vLengthFloor.Value;
|
|
end;
|
|
|
|
procedure TF_Kalc.vSTotalPlaseChange(Sender: TObject);
|
|
begin
|
|
vSWorkPlase.Value := vSTotalPlase.Value * vKSWorkPlase.Value / 100;
|
|
// vKolRM.Value := vSWorkPlase.Value / vSKab_Edit.Value;
|
|
end;
|
|
|
|
|
|
procedure TF_Kalc.vKolFloorChange(Sender: TObject);
|
|
var
|
|
RowCount, Val: integer;
|
|
Count: integer;
|
|
begin
|
|
if vKolFloor.Value <= vKolFloor.Max then
|
|
begin
|
|
vSTotalPlase.Value := vKolFloor.Value * vWidthFloor.Value * vLengthFloor.Value;
|
|
// Sleep(100);
|
|
vKolRooms.Value := trunc(vSWorkPlase.Value / vSKab_Edit.Value);
|
|
//
|
|
vKolRMForFloor.Items.BeginUpdate;
|
|
try
|
|
RowCount := vKolRMForFloor.Items.Count;
|
|
Val := trunc(vKolFloor.Value);
|
|
If VaL <= 0 then
|
|
Val := 1;
|
|
if RowCount < Val then
|
|
begin
|
|
For Count := RowCount to Val-1 do
|
|
begin
|
|
vKolRMForFloor.Items.Add(vKolRMForFloor.Items[count-1], IntToStr(Count+1) + cKalc_Msg1);
|
|
Kalc_DM.AddShelfForFloor(IntToStr(Count+1) + cKalc_Msg1);
|
|
end;
|
|
end;
|
|
if RowCount > Val then
|
|
begin
|
|
For Count := RowCount-1 downto Val do
|
|
begin
|
|
vKolRMForFloor.Items.Delete(vKolRMForFloor.Items[count]);
|
|
Kalc_DM.ShelfForFloor_MemTable.Last;
|
|
Kalc_DM.ShelfForFloor_MemTable.Delete;
|
|
end;
|
|
end;
|
|
if vTotalKolRM.Value > 0 then
|
|
begin
|
|
AutoKomplectFloorByRM;
|
|
end;
|
|
finally
|
|
vKolRMForFloor.Items.EndUpdate;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.vKolPortForRMChange(Sender: TObject);
|
|
begin
|
|
vTotalKolPort.Value := trunc(vTotalKolRM.Value * vKolPortForRM.Value);
|
|
|
|
end;
|
|
|
|
procedure TF_Kalc.vTotalKolRMChange(Sender: TObject);
|
|
begin
|
|
vTotalKolPort.Value := trunc(vTotalKolRM.Value * vKolPortForRM.Value);
|
|
AutoKomplectFloorByRM;
|
|
if StaticText1.Visible then
|
|
begin
|
|
StaticText1.Hide;
|
|
StaticText2.Hide;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.vKolRMChange(Sender: TObject);
|
|
begin
|
|
vTotalKolRM.Value := vKolRM.Value + trunc(vKolRM.Value * vKKolDopMest.Value/100);
|
|
end;
|
|
|
|
procedure TF_Kalc.vKolRMForFloorEdited(Sender: TObject; Node: TFlyNode;
|
|
var S: WideString);
|
|
var razn: integer;
|
|
begin
|
|
Node.Cells[1] := S;
|
|
razn := CmpFloorsWithKolRM ;
|
|
if razn <> 0 then
|
|
begin
|
|
StaticText1.Show;
|
|
StaticText2.Caption := cKalc_Msg2 + IntToStr(razn);
|
|
StaticText2.Show;
|
|
end
|
|
else
|
|
begin
|
|
StaticText1.Hide;
|
|
StaticText2.Hide;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.KolRMBtnClick(Sender: TObject);
|
|
begin
|
|
vKolRM.Value := trunc(vKolRooms.Value * trunc(vSKab_Edit.Value / vSForRM.Value));
|
|
end;
|
|
|
|
{procedure TF_Kalc.vKolRMForFloorEdited(Sender: TObject; Node: TFlyNode;
|
|
var S: String);
|
|
var
|
|
razn: integer;
|
|
begin
|
|
Node.Cells[1] := S;
|
|
razn := CmpFloorsWithKolRM ;
|
|
if razn <> 0 then
|
|
begin
|
|
StaticText1.Show;
|
|
StaticText2.Caption := cKalc_Msg2 + IntToStr(razn);
|
|
StaticText2.Show;
|
|
end
|
|
else
|
|
begin
|
|
StaticText1.Hide;
|
|
StaticText2.Hide;
|
|
end;
|
|
end; }
|
|
|
|
procedure TF_Kalc.ECostRMGrid_CheckClick(Sender: TObject);
|
|
begin
|
|
if ECostRMGrid_Check.Checked then
|
|
begin
|
|
CostRMGrid.Enabled := true;
|
|
vCRM.Value := 0;
|
|
vCRM.Enabled := False;
|
|
if Kalc_DM.CostRM_MemTable.RecordCount > 0 then
|
|
ValCostFromGrid(vCRM, Kalc_DM.CostRM_MemTable);
|
|
|
|
//CostRMGridTableView.Styles.Background := nil; //cxBackNormal;
|
|
EnableTableView(CostRMGridTableView, true);
|
|
end
|
|
else
|
|
begin
|
|
vCRM.Enabled := True;
|
|
CostRMGrid.Enabled := false;
|
|
|
|
//CostRMGridTableView.Styles.Background := cxBackDisabled;
|
|
//CostRMGridTableView.Styles.Content := cxBackDisabled;
|
|
EnableTableView(CostRMGridTableView, false);
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.ECostPPGrid_CheckClick(Sender: TObject);
|
|
begin
|
|
if ECostPPGrid_Check.Checked then
|
|
begin
|
|
CostPP_Grid.Enabled := true;
|
|
vCPP.Value := 0;
|
|
vCPP.Enabled := false;
|
|
if Kalc_DM.CostPP_MemTable.RecordCount > 0 then
|
|
ValCostFromGrid(vCPP, Kalc_DM.CostPP_MemTable);
|
|
|
|
EnableTableView(CostPP_GridDBTableView, true);
|
|
end
|
|
else
|
|
begin
|
|
CostPP_Grid.Enabled := false;
|
|
vCPP.Enabled := true;
|
|
|
|
EnableTableView(CostPP_GridDBTableView, false);
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.actAddRecordExecute(Sender: TObject);
|
|
var
|
|
resultCmp, OstPer: integer;
|
|
begin
|
|
if CostRMGrid.IsFocused then
|
|
begin
|
|
U_Kalc_DM.AddRecordInMemTable(Kalc_DM.CostRM_MemTable, 'Êîìïîíåíò ' + IntToStr(Kalc_DM.CostRM_MemTable.RecordCount + 1), '', 0, 1 );
|
|
CostRMGrid.Refresh;
|
|
end;
|
|
if CostPK_Grid.IsFocused then
|
|
begin
|
|
resultCmp := Kalc_DM.CmpPerFromCostPk_MemTable(OstPer);
|
|
case resultCmp of
|
|
1 : U_Kalc_DM.AddRecordInMemTable(Kalc_DM.CostPK_Memtable, cKalc_Msg4 + IntToStr(Kalc_DM.CostPK_MemTable.RecordCount + 1), '', 0, -1, OstPer, mpkCross);
|
|
2,3 : U_Kalc_DM.AddRecordInMemTable(Kalc_DM.CostPK_Memtable, cKalc_Msg4 + IntToStr(Kalc_DM.CostPK_MemTable.RecordCount + 1), '', 0, -1, OstPer, mpkRM);
|
|
end;
|
|
end;
|
|
if CostPP_Grid.IsFocused then
|
|
begin
|
|
if Kalc_DM.CostPP_MemTable.RecordCount = 0 then
|
|
U_Kalc_DM.AddRecordInMemTable(Kalc_DM.CostPP_MemTable, cKalc_Msg5 + IntToStr(Kalc_DM.CostPP_MemTable.RecordCount + 1));
|
|
end;
|
|
if CostOrg_Grid.IsFocused then
|
|
begin
|
|
if Kalc_DM.CostOrg_MemTable.RecordCount= 0 then
|
|
U_Kalc_DM.AddRecordInMemTable(Kalc_DM.CostOrg_MemTable, cKalc_Msg6 + IntToStr(Kalc_DM.CostOrg_MemTable.RecordCount + 1));
|
|
end;
|
|
if CostShelf_Grid.IsFocused then
|
|
begin
|
|
U_Kalc_DM.AddRecordInMemTable(Kalc_DM.CostShelf_MemTable, cKalc_Msg7 + IntToStr(Kalc_DM.CostShelf_MemTable.RecordCount + 1));
|
|
end;
|
|
if DopEq_Grid.IsFocused then
|
|
begin
|
|
U_Kalc_DM.AddRecordInMemTable(Kalc_DM.DopEq_MemTable, cKalc_Msg8 + IntToStr(Kalc_DM.DopEq_MemTable.RecordCount + 1));
|
|
end;
|
|
if CCForFloor_Grid.IsFocused then
|
|
begin
|
|
OstPer := Kalc_DM.CmpPerFromCCFloor_MemTable;
|
|
U_Kalc_DM.AddRecordInMemTable(Kalc_DM.CCFloor_MemTable, cKalc_Msg9 + IntToStr(Kalc_DM.CCFLoor_MemTable.RecordCount + 1),
|
|
'', 0, -1, OstPer);
|
|
end;
|
|
if CCUnderCeil_Grid.IsFocused then
|
|
begin
|
|
OstPer := Kalc_DM.CmpPerFromCCUnderCeil_MemTable;
|
|
U_Kalc_DM.AddRecordInMemTable(Kalc_DM.CCUnderCeil_MemTable, cKalc_Msg10 + IntToStr(Kalc_DM.CCUnderCeil_MemTable.RecordCount + 1),
|
|
'', 0, -1, OstPer);
|
|
end;
|
|
if ElPointFix_Grid.IsFocused then
|
|
begin
|
|
OstPer := Kalc_DM.CmpPerFromElPointFix_MemTable;
|
|
U_Kalc_DM.AddRecordInMemTable(Kalc_DM.ElPointFix_MemTable, cKalc_Msg11 + IntToStr(Kalc_DM.ElPointFix_MemTable.RecordCount + 1),
|
|
'', 0, -1, OstPer);
|
|
end;
|
|
|
|
|
|
|
|
end;
|
|
|
|
procedure TF_Kalc.ECostPKGridCheckClick(Sender: TObject);
|
|
begin
|
|
if ECostPKGridCheck.Checked then
|
|
begin
|
|
CostPK_Grid.Enabled := true;
|
|
vCPK.Value := 0;
|
|
vCPK.Enabled := False;
|
|
|
|
EnableTableView(CostPKDBTableView, true);
|
|
end
|
|
else
|
|
begin
|
|
CostPK_Grid.Enabled := false;
|
|
vCPK.Enabled := True;
|
|
|
|
EnableTableView(CostPKDBTableView, false);
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.actDelRecordExecute(Sender: TObject);
|
|
var
|
|
price: double;
|
|
id, i: integer;
|
|
Kolvo: integer;
|
|
begin
|
|
if CostRMGrid.IsFocused then
|
|
begin
|
|
Kolvo := 1;
|
|
if Kalc_DM.CostRM_MemTable.RecordCount > 0 then
|
|
begin
|
|
if Kalc_DM.CostRM_MemTable.FieldByName('Price').AsString <> '' then
|
|
begin
|
|
price := Kalc_DM.CostRM_MemTable.FieldByName('Price').AsFloat;
|
|
Kolvo := Kalc_DM.CostRM_MemTable.FieldByName('Kolvo').AsInteger;
|
|
if Kolvo < 1 then
|
|
Kolvo := 1;
|
|
end;
|
|
vCRM.Value := vCRM.Value - price * kolvo;
|
|
Kalc_DM.CostRM_MemTable.Delete;
|
|
end;
|
|
end;
|
|
if CostPK_Grid.IsFocused then
|
|
begin
|
|
if Kalc_DM.CostPK_MemTable.RecordCount > 0 then
|
|
begin
|
|
Kalc_DM.CostPK_MemTable.Delete;
|
|
end;
|
|
end;
|
|
if CostPP_Grid.IsFocused then
|
|
begin
|
|
if Kalc_DM.CostPP_MemTable.RecordCount > 0 then
|
|
begin
|
|
vCPP.Value := 0;
|
|
Kalc_DM.CostPP_MemTable.Delete;
|
|
end;
|
|
end;
|
|
if CostOrg_Grid.IsFocused then
|
|
begin
|
|
if Kalc_DM.CostOrg_MemTable.RecordCount > 0 then
|
|
begin
|
|
vCOrg.Value := 0;
|
|
Kalc_DM.CostOrg_MemTable.Delete;
|
|
end;
|
|
end;
|
|
if CostShelf_Grid.IsFocused then
|
|
begin
|
|
if Kalc_DM.CostShelf_MemTable.RecordCount > 0 then
|
|
begin
|
|
id := Kalc_DM.CostShelf_MemTable.FieldByName('Id').AsInteger;
|
|
with Kalc_DM.ShelfForFloor_MemTable do
|
|
begin
|
|
First;
|
|
while Not Eof do
|
|
begin
|
|
if FieldbyName('id_shelf').AsInteger = id then
|
|
begin
|
|
Edit;
|
|
FieldbyName('id_shelf').Clear;
|
|
FieldbyName('price').Clear;
|
|
Post;
|
|
end;
|
|
Next;
|
|
end;
|
|
end;
|
|
Kalc_DM.CostShelf_MemTable.Delete;
|
|
end;
|
|
end;
|
|
if DopEq_Grid.IsFocused then
|
|
begin
|
|
price := 0;
|
|
kolvo := 1;
|
|
if Kalc_DM.DopEq_MemTable.RecordCount > 0 then
|
|
begin
|
|
if Kalc_DM.DopEq_MemTable.FieldByName('price').AsString <> '' then
|
|
price := Kalc_DM.DopEq_MemTable.FieldByName('price').AsFloat;
|
|
Kolvo := Kalc_DM.DopEq_MemTable.FieldByName('Kolvo').AsInteger;
|
|
if Kolvo < 1 then
|
|
Kolvo := 1;
|
|
vCostDopEq.Value := vCostDopEq.Value - price * kolvo;
|
|
Kalc_DM.DopEq_MemTable.Delete;
|
|
end;
|
|
end;
|
|
if CCForFloor_Grid.IsFocused then
|
|
begin
|
|
Kalc_DM.CCFloor_MemTable.Delete;
|
|
end;
|
|
if CCUnderCeil_Grid.IsFocused then
|
|
begin
|
|
Kalc_DM.CCUnderCeil_MemTable.Delete;
|
|
end;
|
|
if ElPointFix_Grid.IsFocused then
|
|
begin
|
|
Kalc_DM.ElPointFix_MemTable.Delete;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.ECostOrgGrid_CheckClick(Sender: TObject);
|
|
begin
|
|
if ECostOrgGrid_Check.Checked then
|
|
begin
|
|
CostOrg_Grid.Enabled := true;
|
|
vCOrg.Value := 0;
|
|
vCOrg.Enabled := false;
|
|
if Kalc_DM.CostOrg_MemTable.RecordCount > 0 then
|
|
ValCostFromGrid(vCOrg, Kalc_DM.CostOrg_MemTable);
|
|
|
|
EnableTableView(GT_CostOrg, true);
|
|
end
|
|
else
|
|
begin
|
|
CostOrg_Grid.Enabled := false;
|
|
vCOrg.Enabled := true;
|
|
|
|
EnableTableView(GT_CostOrg, false);
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.ECostShelfGridCheckClick(Sender: TObject);
|
|
begin
|
|
if ECostShelfGridCheck.Checked then
|
|
begin
|
|
vCm_Shelf.Value := 0;
|
|
vCm_Shelf.Enabled := false;
|
|
OnceShelfCheck.visible := false;
|
|
CostShelf_Grid.Enabled := true;
|
|
ShelfForFloor_Grid.Enabled := true;
|
|
|
|
EnableTableView(CostShelf_GridDBTableView, true);
|
|
EnableTableView(ShelfForFloor_GridDBTableView, true);
|
|
end
|
|
else
|
|
begin
|
|
vCm_Shelf.Enabled := true;
|
|
OnceShelfCheck.Visible := true;
|
|
CostShelf_Grid.Enabled := false;
|
|
ShelfForFloor_Grid.Enabled := false;
|
|
|
|
EnableTableView(CostShelf_GridDBTableView, false);
|
|
EnableTableView(ShelfForFloor_GridDBTableView, false);
|
|
end;
|
|
CostShelf_Grid.Enabled := ECostShelfGridCheck.Checked;
|
|
pnShelfForFloorOpt.Enabled := ECostShelfGridCheck.Checked;
|
|
end;
|
|
|
|
procedure TF_Kalc.Main_PageControlChanging(Sender: TObject;
|
|
NewIndex: Integer; var AllowChange: Boolean);
|
|
var
|
|
ActivePage: integer;
|
|
OperTableView: TcxGridDBTableView;
|
|
begin
|
|
//çäåñü íóæíî ïðîâåðÿòü êîíòðîëû è çàíîñèòü çíà÷åíèÿ
|
|
ActivePage := Main_PageControl.ActivePageIndex;
|
|
OperTableView := Nil;
|
|
if ActivePage = 4 then
|
|
begin
|
|
if AllComponent_Grid.Visible and F_Kalc.Visible then
|
|
AllComponent_Grid.SetFocus;
|
|
if AllComponent_GridDBTableView1.DataController.IsEditing then
|
|
OperTableView := AllComponent_GridDBTableView1;
|
|
// AllowChange :=false;
|
|
end;
|
|
|
|
if ActivePage = 3 then
|
|
begin
|
|
if PriceWorks_Grid.Visible and F_Kalc.Visible then
|
|
PriceWorks_Grid.SetFocus;
|
|
if PriceWorks_TableView.DataController.IsEditing then
|
|
OperTableView := PriceWorks_TableView;
|
|
//AllowChange :=false;
|
|
end;
|
|
if ActivePage = 1 then
|
|
begin
|
|
if pcComponentTypes.Visible and F_Kalc.Visible then
|
|
pcComponentTypes.SetFocus;
|
|
if CostRMGridTableView.DataController.IsEditing then
|
|
OperTableView := CostRMGridTableView;
|
|
if CostPKDBTableView.DataController.IsEditing then
|
|
OperTableView := CostPKDBTableView;
|
|
if CostPP_GridDBTableView.DataController.IsEditing then
|
|
OperTableView := CostPP_GridDBTableView;
|
|
if GT_CostOrg.DataController.IsEditing then
|
|
OperTableView := GT_CostOrg;
|
|
if CostShelf_GridDBTableView.DataController.IsEditing then
|
|
OperTableView := CostShelf_GridDBTableView;
|
|
if ShelfForFloor_GridDBTableView.DataController.IsEditing then
|
|
OperTableView := ShelfForFloor_GridDBTableView;
|
|
if DopEq_TableView.DataController.IsEditing then
|
|
OperTableView := DopEq_TableView;
|
|
|
|
|
|
end;
|
|
if ActivePage = 2 then
|
|
begin
|
|
if pcChannelComponTypes.Visible and F_Kalc.Visible then
|
|
pcChannelComponTypes.SetFocus;
|
|
if CCForFloor_GridTableView.DataController.IsEditing then
|
|
OperTableView := CCForFloor_GridTableView;
|
|
if CCUnderCeil_GridTableView.DataController.IsEditing then
|
|
OperTableView := CCUnderCeil_GridTableView;
|
|
if ElPointFix_GridTableView.DataController.IsEditing then
|
|
OperTableView := CCUnderCeil_GridTableView;
|
|
if CableCanalGrid_TableView1.DataController.IsEditing then
|
|
OperTableView := CableCanalGrid_TableView1;
|
|
if ElementOfCC_Grid_DBTableView.DataController.IsEditing then
|
|
OperTableView := ElementOfCC_Grid_DBTableView;
|
|
//then
|
|
// AllowChange := false;
|
|
end;
|
|
if Assigned(OperTableView) then
|
|
if OperTableView.DataController.IsEditing then
|
|
begin
|
|
AllowChange := false;
|
|
OperTableView.DataController.Cancel;
|
|
if not OperTableView.DataController.IsEditing then
|
|
AllowChange := true;
|
|
end;
|
|
|
|
if ActivePage = 0 then
|
|
begin
|
|
if vKoefDistShot.Value + vKoefDistLong.Value > 100 then
|
|
begin
|
|
MessageModal(cKalc_Msg88, cKalc_Msg15, MB_ICONINFORMATION);
|
|
AllowChange :=false;
|
|
if vKoefDistShot.Visible and F_Kalc.Visible then
|
|
vKoefDistShot.SetFocus;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TF_Kalc.actAddCableCanalExecute(Sender: TObject);
|
|
var
|
|
FCountCC,Count: integer;
|
|
Ost: integer;
|
|
i, z : integer;
|
|
NewCount: Integer;
|
|
begin
|
|
FCountCC := 0;
|
|
if Kalc_DM.CableCanalMemTable.RecordCount > 0 then
|
|
begin
|
|
Kalc_DM.CableCanalMemTable.Last;
|
|
FCountCC := Kalc_DM.CableCanalMemTable.FieldbyName('Npp').AsInteger +1;
|
|
end;
|
|
|
|
|
|
with Kalc_DM.CableCanalMemTable do
|
|
begin
|
|
Open;
|
|
Ost := GetFreePercent(RecordCount);
|
|
if Ost < 0 then
|
|
Ost := 0;
|
|
Append;
|
|
// FieldByName('Npp').AsInteger := FCountCC;
|
|
if FCountCC = 0 then
|
|
FieldByName('Name').AsString := cKalc_Msg12
|
|
else
|
|
FieldByName('Name').AsString := cKalc_Msg12 + ' ' + IntToStr(FCountCC);
|
|
FieldByName('Price').AsFloat := 0;
|
|
FieldByName('Percent').AsFloat := Ost;
|
|
Post;
|
|
end;
|
|
AddCCElements;
|
|
end;
|
|
|
|
procedure TF_Kalc.actDelCableCanalExecute(Sender: TObject);
|
|
var
|
|
npp: integer;
|
|
begin
|
|
SetFocusToControl(CableCanalGrid);
|
|
npp := Kalc_DM.CableCanalMemTable.FieldByName('Npp').AsInteger;
|
|
Kalc_DM.ElemForCabcanal_MemTable.First;
|
|
While not Kalc_DM.ElemForCabcanal_MemTable.Eof do
|
|
begin
|
|
if Kalc_DM.ElemForCabcanal_MemTable.FieldByName('Npp_CC').AsInteger = npp then Kalc_DM.ElemForCabcanal_MemTable.Delete
|
|
else Kalc_DM.ElemForCabcanal_MemTable.Next; end;Kalc_DM.CableCanalMemTable.Delete; end;
|
|
procedure TF_Kalc.CableCanalGrid_TableView1EditValueChanged(
|
|
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
|
|
begin
|
|
// Kalc_DM.CableCanalMemTable.Refresh;
|
|
if GetFreePercent(Kalc_DM.CableCanalMemTable.RecordCount)< 0 then
|
|
begin
|
|
StaticText4.Show;
|
|
end
|
|
else
|
|
begin
|
|
StaticText4.Hide;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.CableCanalMemTableAfterDelete(DataSet: TDataSet);
|
|
begin
|
|
if GetFreePercent(Kalc_DM.CableCanalMemTable.RecordCount)< 0 then
|
|
begin
|
|
StaticText4.Show;
|
|
end
|
|
else
|
|
begin
|
|
StaticText4.Hide;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.btCalcClick(Sender: TObject);
|
|
begin
|
|
CalculateProject;
|
|
end;
|
|
|
|
function TF_Kalc.CalculateProject: double;
|
|
var
|
|
i: integer;
|
|
Nodecells: string;
|
|
Node: TFlyNode;
|
|
CostRM: double;
|
|
KolRM, KolPort, KolPortForRM: integer;
|
|
KRezervCable, DistShot, DistLong, RezervCableEnd, KoefShot, KoefLong: double;
|
|
KolCableInPark, {KolCableForMagistral, }KolCableForRm, KolReservCable: integer;
|
|
KolPortForMCable, LengthMagCable : double;
|
|
KableShtuk, KableShtukForFlor, KolCable : integer;
|
|
CableShtukList: TIntList;
|
|
KolPP, KolPPforPort: integer;
|
|
PointedMCable, PointedRaspredCable: boolean;
|
|
KolOrg: integer;
|
|
KolPKForPort, KolPKForRM, TotalKolPK: integer;
|
|
Kolvo, id_Shelf, TotalKolShelf: integer;
|
|
KolEq: integer;
|
|
CostProject: double;
|
|
NameOfElementCC: String;
|
|
KoefWorks: double;
|
|
///ðàñ÷¸ò êàáåëÿ
|
|
SredLengthCable: double;
|
|
KolWorkCable, KolWorkConduit: double;
|
|
function GetSredLength(ADistShot, ADistLong, AKoefShot, AKoefLong: double): double;
|
|
var
|
|
koefForSred, SredDist: double;
|
|
begin
|
|
//êîýôèöèåíòû ïîäëàþòñÿ â öåëîì âèäå
|
|
koefForSred := 0; SredDist := 0;
|
|
if AKoefShot + AKoefLong < 100 then
|
|
begin
|
|
koefForSred := 100 - AKoefShot - AKoefLong;
|
|
SredDist := (ADistShot + ADistLong)/2;
|
|
end;
|
|
Result := (ADistShot*AKoefShot + ADistLong*AKoefLong + koefForSred*SredDist)/100
|
|
end;
|
|
|
|
function LengthMCable(AList: TIntList): double;
|
|
var
|
|
HeigthFloor: double;
|
|
TotalLenght: double;
|
|
TotalKolCable: integer;
|
|
i: integer;
|
|
begin
|
|
Result := 0;
|
|
HeigthFloor := vHeighFloor.Value;
|
|
TotalLenght := 0;
|
|
for i := 0 to Alist.Count-1 do
|
|
begin
|
|
TotalLenght := TotalLenght + abs(ServerFloor - i - 1) * HeigthFloor * Alist[i];
|
|
end;
|
|
Result := TotalLenght;
|
|
end;
|
|
|
|
Function PointOnceShelf: boolean;
|
|
var
|
|
Flag : boolean;
|
|
begin
|
|
Result := True;
|
|
Flag := False;
|
|
with Kalc_DM.ShelfForFloor_MemTable do
|
|
begin
|
|
if RecordCount > 0 then
|
|
begin
|
|
First;
|
|
while Not Eof do
|
|
begin
|
|
if not FieldByName('id_shelf').IsNull then
|
|
begin
|
|
if flag then
|
|
begin
|
|
Result := false;
|
|
Break;
|
|
end
|
|
else
|
|
Flag := True;
|
|
end
|
|
else
|
|
Next;
|
|
end;
|
|
end;
|
|
|
|
end;
|
|
end;
|
|
|
|
begin
|
|
Result := 0;
|
|
KoefForWorks := GetKoefForWorks;
|
|
|
|
CableShtukList := TIntList.Create;
|
|
try
|
|
//Ïîäñ÷åò ñòîèìîñòè ÐÌ
|
|
Kalc_DM.AllComponent_MemTable.Active := False;
|
|
Kalc_DM.AllComponent_MemTable.Active := True;
|
|
CostRM := vCRM.Value;
|
|
KolEq := 1;
|
|
KolRM := trunc(vTotalKolRM.Value);
|
|
//ðàáîòû ïî ìîíòàæó ðì
|
|
PutToReportWork(idwRM, KolRm,KoefForWorks);
|
|
If ECostRMGrid_Check.Checked and (Kalc_DM.CostRM_MemTable.RecordCount > 0) then
|
|
begin
|
|
with Kalc_DM.CostRM_MemTable do
|
|
begin
|
|
First;
|
|
while not eof do
|
|
begin
|
|
if FieldByName('Kolvo').AsString = '' then
|
|
KolEq := 1
|
|
else
|
|
KolEq := FieldByName('Kolvo').AsInteger;
|
|
if kolEq < 1 then
|
|
KolEq := 1;
|
|
KolEq := trunc(KolEq * KolRM);
|
|
AddRecordInReport( FieldByName('Name').AsString,
|
|
FieldByName('Articul').AsString,
|
|
KolEq,
|
|
FieldByName('Price').AsFloat,
|
|
KolRM * FieldByName('Price').AsFloat);
|
|
Next;
|
|
KolEq := 1;
|
|
end;
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
AddRecordInReport( cKalc_Msg93, '', KolRM, CostRM, KolRM * CostRM);
|
|
end;
|
|
//Ïîäñ÷¸ò ñòîèìîñòè êàáåëÿ
|
|
KolPort := trunc(vTotalKolPort.Value);
|
|
KolPortForRM := trunc(vKolPortForRM.Value);
|
|
KolPortForMCable := vKolPortForMCable.Value;
|
|
DistShot := vDistShot.Value;
|
|
DistLong := vDistLong.Value;
|
|
KRezervCable := 1 + trunc(vKCableRezerv.Value)/100;
|
|
RezervCableEnd := vCableEndRezerv.Value;
|
|
KolCableInPark := trunc(vKolCableInPark.Value);
|
|
//êàáåëü äëÿ ÐÌ
|
|
KoefShot := vKoefDistShot.Value;
|
|
KoefLong := vKoefDistLong.Value;
|
|
SredLengthCable := GetSredLength(DistShot, DistLong, KoefShot, KoefLong);
|
|
KolCableForRm :=trunc(ceil(KolPort / trunc(KolCableInPark / (SredLengthCable * KRezervCable + RezervCableEnd))) * KolCableInPark);
|
|
//Êàáåëü äëÿ ìàãèñòðàëåé
|
|
LengthMagCable := 0;
|
|
KolReservCable := trunc(vKolReservCable.Value);
|
|
Kalc_DM.ShelfForFloor_MemTable.First;
|
|
for i := 0 to vKolRMForFloor.Items.Count - 1 do
|
|
begin
|
|
if vKolRMForFloor.Items[i].Cells[1] <> ''then
|
|
KableShtukForFlor := ceil( StrToFloat_My(vKolRMForFloor.Items[i].Cells[1])*KolPortForRM/KolPortForMCable)
|
|
else
|
|
KableShtukForFlor := 0;
|
|
if KableShtukForFlor > 0 then
|
|
begin
|
|
if not(OnceShelfCheck.Checked and OnceShelfCheck.Enabled) then
|
|
begin
|
|
if Kalc_DM.ShelfForFloor_MemTable.FieldByName('id_shelf').IsNull then
|
|
begin
|
|
MessageModal(cKalc_Msg13 +' ' + IntToStr(i + 1) + ' ' + cKalc_Msg14, cKalc_Msg15, MB_ICONINFORMATION) ;
|
|
KableShtukForFlor := 0;
|
|
end
|
|
else
|
|
KableShtukForFlor := KableShtukForFlor + KolReservCable;
|
|
end
|
|
else
|
|
KableShtukForFlor := KableShtukForFlor + KolReservCable;
|
|
end;
|
|
if not Kalc_DM.ShelfForFloor_MemTable.Eof then
|
|
Kalc_DM.ShelfForFloor_MemTable.Next;
|
|
CableShtukList.Add(KableShtukForFlor);
|
|
end;
|
|
|
|
//åñëè âñ¸ ðàáîòàåò íå ñ îäíîé ñåðâåðíîé
|
|
if ((not OnceShelfCheck.Checked) or (Not OnceShelfCheck.Enabled)) and (vKolFloor.Value > 1) then
|
|
begin
|
|
//íàõîäèì îáùóþ äëèíó ìàãèñòðàëüíîãî êàáåëÿ
|
|
LengthMagCable := LengthMCable(CableShtukList);
|
|
PointedMCable := False;
|
|
with Kalc_DM.Cable_MemTable do
|
|
begin
|
|
First;
|
|
for i := 0 to RecordCount - 1 do
|
|
begin
|
|
if FieldByName('Id_Missing').AsInteger = tcuMagistral then
|
|
begin
|
|
PointedMCable := true;
|
|
break;
|
|
end;
|
|
Next;
|
|
end;
|
|
if not PointedMCable then
|
|
begin
|
|
KolCableForRm := ceil(LengthMagCable + KolCableForRm);
|
|
|
|
end;
|
|
PointedRaspredCable := false;
|
|
First;
|
|
while Not Eof do
|
|
begin
|
|
if FieldByName('Id_Missing').AsInteger = tcuMagistral then
|
|
begin
|
|
KolCable := round(LengthMagCable * fieldByname('Percent').AsFloat / 100);
|
|
end
|
|
else
|
|
begin
|
|
PointedRaspredCable := true;
|
|
KolCable := round(ceil(KolCableForRm * fieldByname('Percent').AsFloat /100/KolCableInPark)* KolCableInPark);
|
|
end;
|
|
AddRecordInReport( FieldByName('Name').AsString,
|
|
FieldByName('Articul').AsString,
|
|
KolCable,
|
|
FieldByName('Price').AsFloat,
|
|
KolCable * FieldByName('Price').AsFloat);
|
|
Next;
|
|
end;
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
PointedRaspredCable := false;
|
|
with Kalc_DM.Cable_MemTable do
|
|
begin
|
|
First;
|
|
while Not Eof do
|
|
begin
|
|
if FieldByName('Id_Missing').AsInteger = tcuRaspred then
|
|
begin
|
|
PointedRaspredCable := true;
|
|
KolCable := round(ceil(KolCableForRm * fieldByname('Percent').AsFloat / 100/KolCableInPark)* KolCableInPark);
|
|
AddRecordInReport( FieldByName('Name').AsString,FieldByName('Articul').AsString,
|
|
KolCable, FieldByName('Price').AsFloat, KolCable * FieldByName('Price').AsFloat);
|
|
end;
|
|
Next;
|
|
end;
|
|
end;
|
|
end;
|
|
if not PointedRaspredCable then
|
|
MessageModal(cKalc_Msg87, cKalc_Msg15, MB_ICONINFORMATION);
|
|
//çàíîñèì çíà÷åíèå ñóìû âñåõ÷ êàáåëåé â ïåðåìåííóþ ôîðìû
|
|
TotalKolCable := round(LengthMagCable + KolPort * SredLengthCable);
|
|
//ðàáîòû ïî ïðîêëàäêå êàáåëÿ
|
|
PutToReportWork(idwCable, TotalKolCable, KoefForWorks);
|
|
//êîëè÷åñòâî ïàò÷ ïàíåëåé äëÿ ïðîåêòà
|
|
Case TypeConnectEuipment_RadioGroup.ItemIndex of
|
|
0 : KolPPforPort := 2;
|
|
1 : KolPPforPort := 1;
|
|
2 : KolPPforPort := 3;
|
|
end;
|
|
if (OnceShelfCheck.Checked and OnceShelfCheck.Enabled) or PointOnceShelf then
|
|
begin //äëÿ âñåãî ïðîåêòà
|
|
KolPP := trunc(ceil(trunc(vTotalKolPort.Value) / trunc(vKolPortPP.Value)) * KolPPforPort);
|
|
end
|
|
else
|
|
begin
|
|
KolPP := 0; //îïðåäåëÿåì ÏÏ äëÿ ýòàæåé
|
|
for i := 0 to vKolRMForFloor.Items.Count - 1 do
|
|
begin
|
|
KolPP := KolPP + ceil(StrToInt(vKolRMForFloor.Items[i].Cells[1]) / trunc(vKolPortPP.Value)) * KolPPforPort;
|
|
end;
|
|
//îïðåäåëèì êîëè÷åñòâî ÏÏ äëÿ ìàãèñòàðëüíûõ ÏÏ
|
|
KableShtuk := 0;
|
|
For i := 0 to CableShtukList.Count - 1 do
|
|
begin
|
|
KableShtuk := KableShtuk + CableShtukList[i];
|
|
end;
|
|
KolPP := KolPP + ceil(KableShtuk / vKolPortPP.Value);
|
|
|
|
end;
|
|
if ECostPPGrid_Check.Checked and (Kalc_DM.CostPP_MemTable.RecordCount > 0) then
|
|
begin
|
|
with Kalc_DM.CostPP_MemTable do
|
|
begin
|
|
First;
|
|
AddRecordInReport( FieldByName('Name').AsString,
|
|
FieldByName('Articul').AsString,
|
|
KolPP,
|
|
FieldByName('Price').AsFloat,
|
|
KolPP * FieldByName('Price').AsFloat);
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
AddRecordInReport(cKalc_Msg16, '', KolPP, vCPP.Value, KolPP * vCPP.Value);
|
|
end;
|
|
//ðàáîòû ïî óñòàíîâêå ïàò÷-ïàíåëåé
|
|
PutToReportWork(idwPP, KolPP, KoefForWorks);
|
|
//êîëè÷åñòâî îðãàíèçàòîðîâ äëÿ ïðîåêòà
|
|
KolOrg := KolPP;
|
|
if ECostOrgGrid_Check.Checked and (Kalc_DM.CostOrg_MemTable.RecordCount > 0) then
|
|
begin
|
|
with Kalc_DM.CostOrg_MemTable do
|
|
begin
|
|
First;
|
|
AddRecordInReport( FieldByName('Name').AsString,
|
|
FieldByName('Articul').AsString,
|
|
KolOrg,
|
|
FieldByName('Price').AsFloat,
|
|
KolOrg * FieldByName('Price').AsFloat);
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
AddRecordInReport(cKalc_Msg17, '', KolOrg, vCOrg.Value, KolOrg * vCOrg.Value);
|
|
end;
|
|
//ðàáîòû ïî óñòàíîâêå îðãàíèçàòîðîâ
|
|
PutToReportWork(idwOrg, KolOrg, KoefForWorks);
|
|
//Êîëè÷åñòâî ïàò÷êîðäîâ äëÿ ïðîåêòà
|
|
Case TypeConnectEuipment_RadioGroup.ItemIndex of
|
|
0 : KolPKforPort := 1;
|
|
1 : KolPKforPort := 1;
|
|
2 : KolPKforPort := 1;
|
|
end;
|
|
TotalKolPK := trunc(KolPP / KolPPforPort * vKolPortPP.Value);
|
|
if eKalcPKForRM_Check.Checked then
|
|
begin
|
|
KolPKForRM := trunc(vKolPKForRM.Value);
|
|
TotalKolPK := TotalKolPK + trunc(KolRM * KolPKForRM);
|
|
end;
|
|
if ECostPKGridCheck.Checked and (Kalc_DM.CostPK_MemTable.RecordCount > 0) then
|
|
begin
|
|
with Kalc_DM.CostPK_MemTable do
|
|
begin
|
|
First;
|
|
AddRecordInReport( FieldByName('Name').AsString,
|
|
FieldByName('Articul').AsString,
|
|
TotalKolPK,
|
|
FieldByName('Price').AsFloat,
|
|
TotalKolPK * FieldByName('Price').AsFloat);
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
AddRecordInReport(cKalc_Msg18, '', TotalKolPK, vCPK.Value, TotalKolPK * vCPK.Value);
|
|
end;
|
|
//Êîëè÷åñòâî øêàôîâ ïî ïðîåêòó
|
|
TotalKolShelf := 0;
|
|
if not ECostShelfGridCheck.Checked or (Kalc_DM.CostShelf_MemTable.RecordCount < 1) then
|
|
begin
|
|
if OnceShelfCheck.Checked and OnceShelfCheck.Enabled then
|
|
begin
|
|
AddRecordInReport(cKalc_Msg19, '', 1, vCm_Shelf.Value, vCm_Shelf.Value);
|
|
TotalKolShelf := 1;
|
|
end
|
|
else
|
|
begin
|
|
AddRecordInReport(cKalc_Msg19, '', trunc(vKolFloor.Value), vCm_Shelf.Value, vCm_Shelf.Value * trunc(vKolFloor.Value));
|
|
TotalKolShelf := trunc(vKolFloor.Value);
|
|
end;
|
|
end
|
|
else
|
|
if Kalc_DM.CostShelf_MemTable.RecordCount > 0 then
|
|
begin
|
|
with Kalc_DM.CostShelf_MemTable do
|
|
begin
|
|
First;
|
|
while Not Eof do
|
|
begin
|
|
id_Shelf := FieldByName('id').asInteger;
|
|
Kolvo := 0;
|
|
begin
|
|
Kalc_DM.ShelfForFloor_MemTable.First;
|
|
while Not Kalc_DM.ShelfForFloor_MemTable.Eof do
|
|
begin
|
|
if (Not Kalc_DM.ShelfForFloor_MemTable.FieldByName('id_shelf').IsNull)
|
|
and (Kalc_DM.ShelfForFloor_MemTable.FieldByName('id_shelf').AsInteger = id_Shelf)
|
|
then
|
|
begin
|
|
inc(kolvo);
|
|
end;
|
|
Kalc_DM.ShelfForFloor_MemTable.Next;
|
|
end;
|
|
end;
|
|
if kolvo > 0 then
|
|
begin
|
|
TotalKolShelf := TotalKolShelf + Kolvo;
|
|
AddRecordInReport(FieldByName('Name').AsString,
|
|
FieldByName('Articul').AsString,
|
|
Kolvo,
|
|
FieldByName('Price').AsFloat,
|
|
Kolvo * FieldByName('Price').AsFloat);
|
|
end;
|
|
Next;
|
|
end;
|
|
end;
|
|
end;
|
|
//Ðàáîòû ïî ìîíòàæó øêàôîâ
|
|
PutToReportWork(idwShelf, TotalKolShelf, KoefForWorks);
|
|
// Êîëè÷åñòâî äîïîëíèòåëüíîãî îáîðóäîâàíèÿ
|
|
If EDopEqGrid_Check.Checked and (Kalc_DM.DopEq_MemTable.RecordCount > 0) then
|
|
begin
|
|
with Kalc_DM.DopEq_MemTable do
|
|
begin
|
|
First;
|
|
while not Eof do
|
|
begin
|
|
if FieldByName('Kolvo').AsString = '' then
|
|
KolEq := 1
|
|
else
|
|
KolEq := FieldByName('Kolvo').AsInteger;
|
|
if kolEq < 1 then
|
|
KolEq := 1;
|
|
|
|
AddRecordInReport( FieldByName('Name').AsString,
|
|
FieldByName('Articul').AsString,
|
|
KolEq,
|
|
FieldByName('Price').AsFloat,
|
|
KolEq * FieldByName('Price').AsFloat);
|
|
Next;
|
|
end;
|
|
end;
|
|
end
|
|
else
|
|
begin
|
|
AddRecordInReport(cKalc_Msg20, '', 1, vCostDopEq.Value, vCostDopEq.Value);
|
|
end;
|
|
|
|
//Êîëè÷åñòâî êàáåëüíûõ êàíàëîâ
|
|
//if FixCableWey_ComboBox.ItemIndex = 3 then
|
|
// begin
|
|
// with Kalc_DM.CableCanalMemTable do
|
|
// begin
|
|
// First;
|
|
// while Not Eof do
|
|
// actDelCableCanalExecute(Self);
|
|
// end;
|
|
// end;
|
|
CalculateCC;
|
|
//Ïîäñ÷¸ò ñòîèìîñòè âñåãî ïðîåêòà
|
|
CostProject := 0;
|
|
with Kalc_DM.AllComponent_MemTable do
|
|
begin
|
|
First;
|
|
while Not Eof do
|
|
begin
|
|
KolEq := FieldByName('Kolvo').AsInteger;
|
|
CostProject := CostProject + KolEq * FieldByName('price').AsFloat;
|
|
Next;
|
|
end;
|
|
end;
|
|
Result := CostProject;
|
|
//äîáàâèì îñòàëüíûå ðàáîòû
|
|
PutToReportWork(idwCrossPort,KolPort, KoefForWorks); //'Êðîññèðîâêà (1 ïîðò)';
|
|
PutToReportWork(idwTestPort,KolPort, KoefForWorks); //'Òåñòèðîâàíèå ñîåäèíåíèé (1 ïîðò)';
|
|
PutToReportWork(idwProectPort, KolPort, KoefForWorks); //'Ïðîåêòíûå ðàáîòû (1 ïîðò)';
|
|
PutToReportWork(idwTransport, 1, KoefForWorks); //'Òðàíñïîðòíûå ðàñõîäû';
|
|
PutToReportWork(idwAnother,1, KoefForWorks); //'Äðóãèå ïóñêîíàëàäî÷íûå ðàáîòû';
|
|
///idwKoef = 12; //'Êîýôèöèåíò íà ðàáîòû (ñîãëàñíî îñîáîìó õàðàêòåðó ðàáîò)';
|
|
/////////////////////////////
|
|
PutHaracterProjectInMt;
|
|
finally
|
|
CableShtukList.Free;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.AddRecordInReport(AName: string; AArticul: String; AKol: integer;
|
|
APrice, ACost: double; AidTypePoz: string = idTypePozMaterial);
|
|
begin
|
|
with Kalc_DM.AllComponent_MemTable do
|
|
begin
|
|
Open;
|
|
Append;
|
|
FieldByName('Name').AsString := AName;
|
|
FieldByName('Articul').AsString := AArticul;
|
|
FieldByName('Kolvo').AsInteger := AKol;
|
|
FieldByName('Price').AsFloat := APrice;
|
|
FieldByName('Cost').AsFloat := ACost;
|
|
FieldByName('TypePoz').AsString := AidTypePoz;
|
|
post;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.actAddCableExecute(Sender: TObject);
|
|
var
|
|
Count: integer;
|
|
Ost: integer;
|
|
i, z : integer;
|
|
begin
|
|
with Kalc_DM.Cable_MemTable do
|
|
begin
|
|
Open;
|
|
Append;
|
|
FieldByName('Name').AsString := cKalc_Msg21 + IntToStr(Kalc_DM.Cable_MemTable.RecordCount + 1);
|
|
FieldByName('Price').AsFloat := 0;
|
|
FieldByName('Percent').AsInteger := 100;
|
|
FieldByName('Id_Missing').AsInteger := tcuRaspred;
|
|
Post;
|
|
end;
|
|
Ost := GetFreePercentForCable;
|
|
if Ost > 0 then
|
|
StaticText5.Show
|
|
else
|
|
StaticText5.Hide;
|
|
end;
|
|
|
|
procedure TF_Kalc.actDelCableExecute(Sender: TObject);
|
|
begin
|
|
Kalc_DM.Cable_MemTable.Delete;
|
|
if GetFreePercentForCable > 0 then
|
|
StaticText5.Show
|
|
else
|
|
StaticText5.Hide;
|
|
end;
|
|
|
|
procedure TF_Kalc.CableCanalGrid_TableView1KeyDown(Sender: TObject;
|
|
var Key: Word; Shift: TShiftState);
|
|
begin
|
|
if key = 45 then //Insert
|
|
begin
|
|
actAddCableCanalExecute(Sender);
|
|
end;
|
|
if key = 46 then
|
|
begin
|
|
actDelCableCanalExecute(Sender);
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.Cable_Grid_DBTableViewKeyDown(Sender: TObject;
|
|
var Key: Word; Shift: TShiftState);
|
|
begin
|
|
if key = 45 then //Insert
|
|
begin
|
|
actAddCableExecute(Sender);
|
|
end;
|
|
if key = 46 then
|
|
begin
|
|
actDelCableExecute(Sender);
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.CostRMGridKeyDown(Sender: TObject; var Key: Word;
|
|
Shift: TShiftState);
|
|
begin
|
|
if key = 45 then //Insert
|
|
begin
|
|
actAddRecordExecute(Sender);
|
|
end;
|
|
if key = 46 then
|
|
begin
|
|
actDelRecordExecute(Sender);
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.FixBtnClick(Sender: TObject);
|
|
var
|
|
ID, id_Shelf: integer;
|
|
Price: double;
|
|
begin
|
|
id_Shelf := Kalc_DM.CostShelf_MemTable.FieldbyName('id').AsInteger;
|
|
Price := Kalc_DM.CostShelf_MemTable.FieldbyName('price').AsFloat;
|
|
if FixAllEcxeptSelCheck.Checked then
|
|
begin
|
|
with Kalc_DM.ShelfForFloor_MemTable do
|
|
begin
|
|
id := FieldbyName('id').AsInteger;
|
|
First;
|
|
while Not Eof do
|
|
begin
|
|
if id <> FieldbyName('id').AsInteger then
|
|
begin
|
|
Edit;
|
|
FieldbyName('id_shelf').AsInteger := id_Shelf;
|
|
FieldbyName('price').AsFloat := Price;
|
|
Post;
|
|
end;
|
|
Next;
|
|
end;
|
|
First;
|
|
MoveBy(ID);
|
|
end;
|
|
FixAllEcxeptSelCheck.Checked := false;
|
|
end
|
|
else
|
|
begin
|
|
with Kalc_DM.ShelfForFloor_MemTable do
|
|
begin
|
|
Edit;
|
|
FieldbyName('Id_Shelf').AsInteger := id_Shelf;
|
|
FieldbyName('price').AsFloat := Price;
|
|
Post;
|
|
end;
|
|
end;
|
|
ShelfForFloor_Grid.Refresh;
|
|
end;
|
|
|
|
procedure TF_Kalc.Clear_BtnClick(Sender: TObject);
|
|
|
|
begin
|
|
with Kalc_DM.ShelfForFloor_MemTable do
|
|
begin
|
|
First;
|
|
while Not Eof do
|
|
begin
|
|
Edit;
|
|
FieldbyName('id_shelf').Clear;
|
|
FieldbyName('price').Clear;
|
|
Post;
|
|
Next;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.EDopEqGrid_CheckClick(Sender: TObject);
|
|
begin
|
|
if EDopEqGrid_Check.Checked then
|
|
begin
|
|
DopEq_Grid.Enabled := true;
|
|
vCostDopEq.Value := 0;
|
|
if Kalc_DM.DopEq_MemTable.RecordCount > 0 then
|
|
ValCostFromGrid(vCostDopEq, Kalc_DM.DopEq_MemTable);
|
|
end
|
|
else
|
|
DopEq_Grid.Enabled := false;
|
|
|
|
EnableTableView(DopEq_TableView, EDopEqGrid_Check.Checked);
|
|
end;
|
|
|
|
procedure TF_Kalc.DopEq_TableViewEditValueChanged(
|
|
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
|
|
begin
|
|
ValCostFromGrid(vCostDopEq, Kalc_DM.DopEq_MemTable);
|
|
end;
|
|
|
|
procedure TF_Kalc.CostPP_GridDBTableViewEditValueChanged(
|
|
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
|
|
begin
|
|
ValCostFromGrid(vCPP, Kalc_DM.CostPP_MemTable);
|
|
end;
|
|
|
|
procedure TF_Kalc.GT_CostOrgEditValueChanged(
|
|
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
|
|
begin
|
|
ValCostFromGrid(vCOrg, Kalc_DM.CostOrg_MemTable);
|
|
end;
|
|
|
|
procedure TF_Kalc.Cable_Grid_DBTableViewEditValueChanged(
|
|
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
|
|
begin
|
|
|
|
if GetFreePercentForCable > 0 then
|
|
StaticText5.Show
|
|
else
|
|
StaticText5.Hide;
|
|
end;
|
|
|
|
procedure TF_Kalc.vKKolDopMestChange(Sender: TObject);
|
|
begin
|
|
vTotalKolRM.Value := vKolRM.Value + trunc(vKolRM.Value * vKKolDopMest.Value/100);
|
|
end;
|
|
|
|
procedure TF_Kalc.FixCableWey_ComboBoxCloseUp(Sender: TObject);
|
|
begin
|
|
case FixCableWey_ComboBox.ItemIndex of
|
|
0: TypeWeyCC_PageControl.ActivePageIndex := 0;
|
|
1: TypeWeyCC_PageControl.ActivePageIndex := 1;
|
|
2: TypeWeyCC_PageControl.ActivePageIndex := 2;
|
|
3: TypeWeyCC_PageControl.ActivePageIndex := 3;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.FormulaFloor_GroupChanging(Sender: TObject;
|
|
NewIndex: Integer; var AllowChange: Boolean);
|
|
begin
|
|
Case NewIndex of
|
|
0:begin
|
|
FormulaFloor2_Panel.Enabled := False;
|
|
FormulaFloor1_Panel.Enabled := true;
|
|
end;
|
|
1:begin
|
|
FormulaFloor1_Panel.Enabled := False;
|
|
FormulaFloor2_Panel.Enabled := true;
|
|
end;
|
|
end;
|
|
|
|
end;
|
|
|
|
procedure TF_Kalc.FormulaUnderCail_RadioGroupChanging(Sender: TObject;
|
|
NewIndex: Integer; var AllowChange: Boolean);
|
|
begin
|
|
Case NewIndex of
|
|
0:begin
|
|
FormulaUnderCail2_Panel.Enabled := False;
|
|
FormulaUnderCail1_Panel.Enabled := true;
|
|
end;
|
|
1:begin
|
|
FormulaUnderCail1_Panel.Enabled := False;
|
|
FormulaUnderCail2_Panel.Enabled := true;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.FormulaDekorCC_RadioGroupChanging(Sender: TObject;
|
|
NewIndex: Integer; var AllowChange: Boolean);
|
|
begin
|
|
Case NewIndex of
|
|
0:begin
|
|
FormulaDekorCC2_Panel.Enabled := False;
|
|
FormulaDekorCC1_Panel.Enabled := true;
|
|
end;
|
|
1:begin
|
|
FormulaDekorCC1_Panel.Enabled := False;
|
|
FormulaDekorCC2_Panel.Enabled := true;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.FormulaInCC_GroupChanging(Sender: TObject;
|
|
NewIndex: Integer; var AllowChange: Boolean);
|
|
begin
|
|
Case NewIndex of
|
|
0:begin
|
|
FormulaInCC2_Panel.Enabled := False;
|
|
FormulaInCC3_Panel.Enabled := False;
|
|
FormulaInCC1_Panel.Enabled := true;
|
|
end;
|
|
1:begin
|
|
FormulaInCC1_Panel.Enabled := False;
|
|
FormulaInCC3_Panel.Enabled := False;
|
|
FormulaInCC2_Panel.Enabled := true;
|
|
end;
|
|
2:begin
|
|
FormulaInCC1_Panel.Enabled := False;
|
|
FormulaInCC2_Panel.Enabled := False;
|
|
FormulaInCC3_Panel.Enabled := true;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.ServFloor_ComboBoxPropertiesChange(Sender: TObject);
|
|
begin
|
|
ServerFloor := ServFloor_ComboBox.EditValue;
|
|
end;
|
|
|
|
procedure TF_Kalc.CalculateCC;
|
|
var
|
|
PerTehreservCC, KolCC, KolCCForRm: double;
|
|
CCLength: integer;
|
|
KolElemCC: integer;
|
|
KoefWorks: double;
|
|
KolDopCC: integer;
|
|
procedure KalcElemOfCC(ACCLength: integer) ;
|
|
var
|
|
NameOfElementCC: string;
|
|
begin
|
|
while Not Kalc_DM.ElemForCabcanal_MemTable.Eof do
|
|
begin
|
|
KolElemCC := Ceil(ACCLength / 100 * Kalc_DM.ElemForCabcanal_MemTable.fieldByName('rashod').AsFloat);
|
|
Kalc_DM.TypeOfElementCC_MemTable.First;
|
|
Kalc_DM.TypeOfElementCC_MemTable.MoveBy(Kalc_DM.ElemForCabcanal_MemTable.FieldByName('id_type').AsInteger - 1);
|
|
NameOfElementCC := Kalc_DM.TypeOfElementCC_MemTable.FieldByName('name').AsString + ' (' + Kalc_DM.CableCanalMemTable.FieldByName('Name').AsString + ')';
|
|
AddRecordInReport(NameOfElementCC,
|
|
Kalc_DM.ElemForCabcanal_MemTable.FieldByName('Articul').AsString,
|
|
KolElemCC,
|
|
Kalc_DM.ElemForCabcanal_MemTable.FieldByName('price').AsFloat,
|
|
KolElemCC * Kalc_DM.ElemForCabcanal_MemTable.FieldByName('price').AsFloat);
|
|
Kalc_DM.ElemForCabcanal_MemTable.Next;
|
|
end;
|
|
end;
|
|
|
|
function CalcCCFloor: integer;
|
|
var
|
|
KolCCForFloor, Kolvo : integer;
|
|
KolRM: integer;
|
|
|
|
Function Metod1: integer;
|
|
var
|
|
LenghtRoom, WidthRoom, x, y: double;
|
|
KolRooms: integer;
|
|
KolRM: integer;
|
|
begin
|
|
Result := 0;
|
|
KolRooms := trunc(vKolRooms.Value);
|
|
LenghtRoom := vLengthRoom.Value;
|
|
WidthRoom := vWidthRoom.Value;
|
|
x := vFormulaFloor1_X.Value;
|
|
y := vFormulaFloor1_Y.Value;
|
|
Result := Ceil((LenghtRoom * x + WidthRoom * y) * KolRooms);
|
|
end;
|
|
|
|
Function Metod2: integer;
|
|
var
|
|
x: double;
|
|
KolRooms: integer;
|
|
begin
|
|
Result := 0;
|
|
x := vFormulaFloor2_X.Value;
|
|
KolRooms := trunc(vKolRooms.Value);
|
|
Result := Ceil(KolRooms * x );
|
|
end;
|
|
|
|
begin
|
|
if Kalc_DM.CCFloor_MemTable.RecordCount > 0 then
|
|
begin
|
|
Case FormulaFloor_Group.ItemIndex of
|
|
0: KolCCForFloor := Metod1;
|
|
1: KolCCForFloor := Metod2;
|
|
end;
|
|
KolDopCC := KolCCForFloor;
|
|
with Kalc_DM.CCFloor_MemTable do
|
|
begin
|
|
First;
|
|
while Not Eof do
|
|
begin
|
|
Kolvo := ceil(KolCCForFloor * FieldByName('Percent').AsFloat / 100);
|
|
AddRecordInReport( FieldByName('Name').AsString,
|
|
FieldByName('Articul').AsString,
|
|
Kolvo,
|
|
FieldByName('Price').AsFloat,
|
|
Kolvo * FieldByName('Price').AsFloat);
|
|
Next;
|
|
end;
|
|
end;
|
|
KolRM := trunc(vTotalKolRM.Value);
|
|
Result := trunc(KolRM * vHeigthRM.Value);
|
|
end;
|
|
end;
|
|
|
|
function CalcUndeCeil: integer;
|
|
var
|
|
Kolvo: integer;
|
|
KolCCUnderCeil: integer;
|
|
|
|
function Metod1ForUnderCeilCC: integer;
|
|
var
|
|
LenghtRoom, WidthRoom, x, y: double;
|
|
KolRooms: integer;
|
|
KolRM: integer;
|
|
begin
|
|
Result := 0;
|
|
KolRooms := trunc(vKolRooms.Value);
|
|
LenghtRoom := vLengthRoom.Value;
|
|
WidthRoom := vWidthRoom.Value;
|
|
x := vFormulaUnderCeil1_X.Value;
|
|
y := vFormulaUnderCeil1_Y.Value;
|
|
Result := Ceil(LenghtRoom * x + WidthRoom * y);
|
|
end;
|
|
|
|
Function Metod2ForUnderCeilCC: integer;
|
|
var
|
|
x: double;
|
|
KolRooms: integer;
|
|
begin
|
|
Result := 0;
|
|
x := vFormulaUnderCeil2_X.Value;
|
|
KolRooms := trunc(vKolRooms.Value);
|
|
Result := Ceil(KolRooms * x );
|
|
end;
|
|
|
|
Function Metod1ForDekorCC: integer;
|
|
var
|
|
KolRm: integer;
|
|
HeigthFalseCeil, HeigthRM: Double;
|
|
begin
|
|
Result := 0;
|
|
KolRm := trunc(vTotalKolRM.Value);
|
|
HeigthFalseCeil := vHeigthFalseCeil.Value;
|
|
HeigthRM := vHeigthRM.Value;
|
|
Result := ceil(KolRm * (HeigthFalseCeil - HeigthRM));
|
|
end;
|
|
|
|
Function Metod2ForDekorCC: integer;
|
|
var
|
|
KolRooms: integer;
|
|
LengthRoom, HeigthFalseCeil, HeigthRM: Double;
|
|
x: double;
|
|
begin
|
|
Result := 0;
|
|
x := vFormulaDekorCC2_X.Value;
|
|
KolRooms := trunc(vKolRooms.Value);
|
|
HeigthFalseCeil := vHeigthFalseCeil.Value;
|
|
HeigthRM := vHeigthRM.Value;
|
|
LengthRoom := vLengthRoom.Value;
|
|
Result := ceil(KolRooms * (LengthRoom + HeigthFalseCeil - HeigthRM));
|
|
end;
|
|
begin
|
|
case FormulaUnderCail_RadioGroup.ItemIndex of
|
|
0: KolCCUnderCeil := Metod1ForUnderCeilCC;
|
|
1: KolCCUnderCeil := Metod2ForUnderCeilCC;
|
|
end;
|
|
case FormulaDekorCC_RadioGroup.ItemIndex of
|
|
0: Result := Metod1ForDekorCC;
|
|
1: Result := Metod2ForDekorCC;
|
|
end;
|
|
KolDopCC := KolCCUnderCeil;
|
|
with Kalc_DM.CCUnderCeil_MemTable do
|
|
begin
|
|
First;
|
|
while Not Eof do
|
|
begin
|
|
Kolvo := ceil(KolCCUnderCeil * FieldByName('Percent').AsFloat / 100);
|
|
AddRecordInReport( FieldByName('Name').AsString,
|
|
FieldByName('Articul').AsString,
|
|
Kolvo,
|
|
FieldByName('Price').AsFloat,
|
|
Kolvo * FieldByName('Price').AsFloat);
|
|
Next;
|
|
end;
|
|
end;
|
|
end;
|
|
/////////////////////////////////////
|
|
function CalcInCC: integer;
|
|
function Metod1: integer;
|
|
var
|
|
x: double;
|
|
KolRM: integer;
|
|
begin
|
|
Result := 0;
|
|
x := vFormulaInCC1_X.Value;
|
|
KolRM := trunc(vTotalKolRM.Value);
|
|
Result := Ceil(KolRM * x );
|
|
end;
|
|
|
|
function Metod2: integer;
|
|
var
|
|
x: double;
|
|
KolRooms: integer;
|
|
begin
|
|
Result := 0;
|
|
x := vFormulaInCC2_X.Value;
|
|
KolRooms := trunc(vKolRooms.Value);
|
|
Result := Ceil(KolRooms * x);
|
|
end;
|
|
|
|
function Metod3: integer;
|
|
var
|
|
HeigthFalseCeil, HeigthRM: Double;
|
|
LenghtRoom, WidthRoom, x, y: double;
|
|
KolRooms: integer;
|
|
KolRM: integer;
|
|
begin
|
|
Result := 0;
|
|
HeigthFalseCeil := vHeigthFalseCeil.Value;
|
|
HeigthRM := vHeigthRM.Value;
|
|
KolRooms := trunc(vKolRooms.Value);
|
|
LenghtRoom := vLengthRoom.Value;
|
|
WidthRoom := vWidthRoom.Value;
|
|
x := vFormulaInCC3_X.Value;
|
|
y := vFormulaInCC3_Y.Value;
|
|
Result := Ceil(LenghtRoom * y + WidthRoom * x + KolRm * (HeigthFalseCeil - HeigthRM));
|
|
end;
|
|
begin
|
|
result := 0;
|
|
Case FormulaInCC_Group.ItemIndex of
|
|
0: Result := Metod1;
|
|
1: Result := Metod2;
|
|
2: Result := Metod3;
|
|
end;
|
|
end;
|
|
//////////////////////////////////////////////////
|
|
function CalcOpenWir: integer;
|
|
var
|
|
KolPoint, kolvo: integer;
|
|
|
|
function Metod1: integer;
|
|
var
|
|
Rashod,KolCableInBeam: double;
|
|
|
|
begin
|
|
Result := 0;
|
|
Rashod := vMetodOpenWir1_Rashod.Value;
|
|
//KolCableInBeam := vMetodOpenWir1_KolInBeam.Value;
|
|
Result := ceil(TotalKolCable * KolCableInBeam);
|
|
end;
|
|
begin
|
|
result := 0;
|
|
case OpenWir_RadioGroup.ItemIndex of
|
|
0: KolPoint := Metod1;
|
|
end;
|
|
with Kalc_DM.ElPointFix_MemTable do
|
|
begin
|
|
First;
|
|
while Not Eof do
|
|
begin
|
|
Kolvo := ceil(KolPoint * FieldByName('Percent').AsFloat / 100);
|
|
AddRecordInReport( FieldByName('Name').AsString,
|
|
FieldByName('Articul').AsString,
|
|
KolPoint,
|
|
FieldByName('Price').AsFloat,
|
|
KolPoint * FieldByName('Price').AsFloat);
|
|
Next;
|
|
end;
|
|
end;
|
|
end;
|
|
//////////////////////////////////////////////////
|
|
begin
|
|
KolDopCC := 0;
|
|
PerTehreservCC := vKolTehreserv.Value / 100;
|
|
case FixCableWey_ComboBox.ItemIndex of
|
|
0: CCLength := CalcCCFloor;
|
|
1: CCLength := CalcUndeCeil;
|
|
2: CCLength := CalcInCC;
|
|
3: CCLength := CalcOpenWir;
|
|
end;
|
|
KolCC := CCLength + ceil(CCLength * PerTehreservCC);
|
|
// ðàáîòû ïî ïðîêëàäêå êàáåëüíîãî êàíàëà
|
|
if FixCableWey_ComboBox.ItemIndex <> 3 then
|
|
begin
|
|
KoefWorks := KoefForWorks;
|
|
TotalKolCC := CCLength + KolDopCC;
|
|
PutToReportWork(idwCC, TotalKolCC,Koefworks);
|
|
end;
|
|
if FixCableWey_ComboBox.ItemIndex <> 3 then
|
|
with Kalc_DM.CableCanalMemTable do
|
|
begin
|
|
First;
|
|
while not Eof do
|
|
begin
|
|
CCLength := (Ceil(KolCC * FieldByName('percent').AsFloat / 100));
|
|
AddRecordInReport( FieldByName('Name').AsString,
|
|
FieldByName('Articul').AsString,
|
|
CCLength,
|
|
FieldByName('Price').AsFloat,
|
|
CCLength * FieldByName('Price').AsFloat);
|
|
KalcElemOfCC(CCLength);
|
|
Next;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.vWidthRoomChange(Sender: TObject);
|
|
var
|
|
val: double;
|
|
begin
|
|
val := vWidthRoom.Value;
|
|
if val = 0 then
|
|
val := 1;
|
|
vSKab_Edit.Value := Val * vLengthRoom.Value;
|
|
end;
|
|
|
|
procedure TF_Kalc.vLengthRoomChange(Sender: TObject);
|
|
var
|
|
val: double;
|
|
begin
|
|
val := vLengthRoom.Value;
|
|
if val = 0 then
|
|
val := 1;
|
|
vSKab_Edit.Value := vWidthRoom.Value * Val;
|
|
end;
|
|
|
|
procedure TF_Kalc.PrintClick(Sender: TObject);
|
|
var
|
|
CostOfProjectReportParams: TCostOfProjectReportParams;
|
|
begin
|
|
{PutHaracterProjectInMt;
|
|
CostOfProjectReportParams := getCostOfProjectReportParams;
|
|
F_ProjMan.F_ResourceReport.ShowPriorCostOfProjectReportWizard(Kalc_DM.AllComponent_MemTable, Kalc_DM.HaracterProject_MemTable,
|
|
CostOfProjectReportParams, false);}
|
|
end;
|
|
|
|
procedure TF_Kalc.PutHaracterProjectInMT;
|
|
begin
|
|
Kalc_DM.HaracterProject_MemTable.Active := False;
|
|
Kalc_DM.HaracterProject_MemTable.Active := true;
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg22, FloatToStr(vKolFloor.Value));
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg23 + GetNameUOM2(F_NormBase.FUOM), FloatToStr(vSTotalPlase.Value));
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg24, FloatToStr(vKSWorkPlase.Value)+ '%');
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg25 + GetNameUOM2(F_NormBase.FUOM), FloatToStr(vKolFloor.Value));
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg26 + GetNameUOM(F_NormBase.FUOM, true), FloatToStr(vHeighFloor.Value));
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg27, FloatToStr(vKolRooms.Value));
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg28 + GetNameUOM(F_NormBase.FUOM, true), FloatToStr(vWidthRoom.Value) + ' x ' + FloatToStr(vLengthRoom.Value));
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg29 + GetNameUOM2(F_NormBase.FUOM), FloatToStr(vSKab_Edit.Value));
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg30 + GetNameUOM2(F_NormBase.FUOM), FloatToStr(vSForRM.Value));
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg31, FloatToStr(vKolRM.Value));
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg32, FloatToStr(vKKolDopMest.Value));
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg33, FloatToStr(vTotalKolRM.Value));
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg34, FloatToStr(vKolPortForRM.Value));
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg35, FloatToStr(vSKab_Edit.Value));
|
|
if eKalcPKForRM_Check.Checked then
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg36, FloatToStr(vKolPKForRM.Value));
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg37 + GetNameUOM(F_NormBase.FUOM, true), FloatToStr(vHeigthRM.Value));
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg38 + GetNameUOM(F_NormBase.FUOM, true), FloatToStr(vDistShot.Value));
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg39 + GetNameUOM(F_NormBase.FUOM, true), FloatToStr(vDistLong.Value));
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg91, FloatToStr(vKoefDistShot.Value));
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg92, FloatToStr(vKoefDistLong.Value));
|
|
|
|
case TypeConnectEuipment_RadioGroup.ItemIndex of
|
|
0: AddRecordInHaracterProject_MemTable(cKalc_Msg40, cKalc_Msg41);
|
|
1: AddRecordInHaracterProject_MemTable(cKalc_Msg40, cKalc_Msg42);
|
|
2: AddRecordInHaracterProject_MemTable(cKalc_Msg40, cKalc_Msg43);
|
|
end;
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg44, FloatToStr(vKolPortForRM.Value));
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg45, FloatToStr(vKolReservCable.Value));
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg46, IntToStr(ServerFloor));
|
|
if OnceShelfCheck.Checked and (not ECostShelfGridCheck.Checked) then
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg47, cKalc_Msg48);
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg49 + GetNameUOM(F_NormBase.FUOM, true), FloatToStr(vKolCableInPark.Value));
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg50, FloatToStr(vKCableRezerv.Value) + '%');
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg51 + GetNameUOM(F_NormBase.FUOM, true), FloatToStr(vCableEndRezerv.Value));
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg52, FloatToStr(vKCableRezerv.Value) + '%');
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg53, FixCableWey_ComboBox.Text);
|
|
|
|
Case FixCableWey_ComboBox.ItemIndex of
|
|
0:begin
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg54,cKalc_Msg55);
|
|
if Kalc_DM.CCFloor_MemTable.RecordCount > 0 then
|
|
case FormulaFloor_Group.ItemIndex of
|
|
0: AddRecordInHaracterProject_MemTable(cKalc_Msg56, cKalc_Msg57 + FloatToStr(vFormulaFloor1_X.Value) +
|
|
cKalc_Msg58 + FloatToStr(vFormulaFloor1_Y.Value) + cKalc_Msg59);
|
|
1: AddRecordInHaracterProject_MemTable(cKalc_Msg56, cKalc_Msg60 + FloatToStr(vFormulaFloor2_X.Value) + cKalc_Msg61 + GetNameUOM(F_NormBase.FUOM, false));
|
|
end;
|
|
end;
|
|
1:begin
|
|
case FormulaDekorCC_RadioGroup.ItemIndex of
|
|
0: AddRecordInHaracterProject_MemTable(cKalc_Msg54, cKalc_Msg62);
|
|
1: AddRecordInHaracterProject_MemTable(cKalc_Msg54, cKalc_Msg63 + FloatToStr(vFormulaDekorCC2_X.Value) + cKalc_Msg64);
|
|
end;
|
|
if Kalc_DM.CCUnderCeil_MemTable.RecordCount > 0 then
|
|
case FormulaUnderCail_RadioGroup.ItemIndex of
|
|
0: AddRecordInHaracterProject_MemTable(cKalc_Msg65, cKalc_Msg66 + FloatToStr(vFormulaUnderCeil1_X.Value) +
|
|
cKalc_Msg67 + FloatToStr(vFormulaUnderCeil1_Y.Value) + cKalc_Msg68);
|
|
1: AddRecordInHaracterProject_MemTable(cKalc_Msg65, cKalc_Msg69 + FloatToStr(vFormulaUnderCeil2_X.Value) + cKalc_Msg70 + GetNameUOM(F_NormBase.FUOM, false));
|
|
end;
|
|
end;
|
|
2:begin
|
|
case FormulaInCC_Group.ItemIndex of
|
|
0: AddRecordInHaracterProject_MemTable(cKalc_Msg71, cKalc_Msg72);
|
|
1: AddRecordInHaracterProject_MemTable(cKalc_Msg54, cKalc_Msg73 + FloatToStr(vFormulaInCC2_X.Value) + cKalc_Msg70);
|
|
2: AddRecordInHaracterProject_MemTable(cKalc_Msg54, cKalc_Msg74 + FloatToStr(vFormulaInCC3_X.Value)
|
|
+ cKalc_Msg75 + FloatToStr(vFormulaInCC3_Y.Value) + ')' + #10#13 + cKalc_Msg76);
|
|
end;
|
|
end;
|
|
3:begin
|
|
case OpenWir_RadioGroup.ItemIndex of
|
|
0: AddRecordInHaracterProject_MemTable(cKalc_Msg77, cKalc_Msg78 + cKalc_Msg79 + FloatToStr(vMetodOpenWir1_Rashod.Value) +')');
|
|
end;
|
|
end;
|
|
end;
|
|
if FixCableWey_ComboBox.ItemIndex <> 3 then
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg90 + GetNameUOM(F_NormBase.FUOM, true), IntToStr(TotalKolCC));
|
|
AddRecordInHaracterProject_MemTable(cKalc_Msg89+ GetNameUOM(F_NormBase.FUOM, true), IntToStr(TotalKolCable));
|
|
end;
|
|
|
|
procedure TF_Kalc.AddRecordInHaracterProject_MemTable(AName, AZnach: string);
|
|
begin
|
|
with Kalc_DM.HaracterProject_MemTable do
|
|
begin
|
|
Append;
|
|
FieldByName('Name').AsString := AName;
|
|
FieldByName('Znach').AsString := AZnach;
|
|
Post;
|
|
end;
|
|
end;
|
|
//procedure TF_Kalc.Button2222Click(Sender: TObject);
|
|
//var
|
|
// CostOfProjectReportParams: TCostOfProjectReportParams;
|
|
//begin
|
|
// PutHaracterProjectInMt;
|
|
// CostOfProjectReportParams := getCostOfProjectReportParams;
|
|
// F_ProjMan.F_ResourceReport.ShowPriorCostOfProjectReportWizard(Kalc_DM.AllComponent_MemTable, Kalc_DM.HaracterProject_MemTable,
|
|
// CostOfProjectReportParams, true);
|
|
//end;
|
|
|
|
procedure TF_Kalc.actExitExecute(Sender: TObject);
|
|
begin
|
|
Self.Close;
|
|
end;
|
|
|
|
function TF_Kalc.getCostOfProjectReportParams: TCostOfProjectReportParams;
|
|
begin
|
|
Result.ZakazchikName := ZakazchikName_Edit.Text;
|
|
Result.PodradchikName := PodradchikName_edit.Text;
|
|
Result.CurrencyName := Curr_ComboBox.Text;
|
|
end;
|
|
|
|
procedure TF_Kalc.btPrintReportClick(Sender: TObject);
|
|
var
|
|
CostOfProjectReportParams: TCostOfProjectReportParams;
|
|
begin
|
|
F_ProjMan.CreateFResourceReport;
|
|
|
|
ValidateActiveFormControl(Self);
|
|
CostOfProjectReportParams := getCostOfProjectReportParams;
|
|
if EIncludHarProj.Checked then
|
|
F_ProjMan.F_ResourceReport.ShowPriorCostOfProjectReportWizard(Kalc_DM.AllComponent_MemTable, Kalc_DM.HaracterProject_MemTable,
|
|
CostOfProjectReportParams, true, false)
|
|
else
|
|
F_ProjMan.F_ResourceReport.ShowPriorCostOfProjectReportWizard(Kalc_DM.AllComponent_MemTable, Kalc_DM.HaracterProject_MemTable,
|
|
CostOfProjectReportParams, false, false);
|
|
|
|
ShowWindow(Handle, SW_MINIMIZE);
|
|
end;
|
|
|
|
procedure TF_Kalc.btEditReportClick(Sender: TObject);
|
|
var
|
|
CostOfProjectReportParams: TCostOfProjectReportParams;
|
|
begin
|
|
F_ProjMan.CreateFResourceReport;
|
|
|
|
CostOfProjectReportParams := getCostOfProjectReportParams;
|
|
if EIncludHarProj.Checked then
|
|
F_ProjMan.F_ResourceReport.ShowPriorCostOfProjectReportWizard(Kalc_DM.AllComponent_MemTable, Kalc_DM.HaracterProject_MemTable,
|
|
CostOfProjectReportParams, true, true)
|
|
else
|
|
F_ProjMan.F_ResourceReport.ShowPriorCostOfProjectReportWizard(Kalc_DM.AllComponent_MemTable, Kalc_DM.HaracterProject_MemTable,
|
|
CostOfProjectReportParams, false, true);
|
|
end;
|
|
|
|
|
|
procedure TF_Kalc.Curr_ComboBoxPropertiesChange(Sender: TObject);
|
|
var
|
|
FormatStr: string;
|
|
begin
|
|
FormatStr := cKalc_Msg80 + Curr_ComboBox.EditText;
|
|
AllComponent_GridDBTableView1.DataController.Summary.FooterSummaryItems[0].Format := FormatStr;
|
|
AllComponent_GridDBTableView1.DataController.Summary.DefaultGroupSummaryItems[0].Format := FormatStr;
|
|
end;
|
|
|
|
procedure TF_Kalc.vHeighFloorChange(Sender: TObject);
|
|
var
|
|
Heigth: double;
|
|
begin
|
|
Heigth := vHeighFloor.Value;
|
|
vHeigthCC.Max := Heigth;
|
|
vHeigthRM.Max := Heigth;
|
|
vHeigthFalseCeil.Max := Heigth;
|
|
end;
|
|
|
|
procedure TF_Kalc.vSKab_EditChange(Sender: TObject);
|
|
var
|
|
val: double;
|
|
begin
|
|
val := vSKab_Edit.Value;
|
|
if val <= 0 then
|
|
val := 1;
|
|
vKolRooms.Value := trunc(vSWorkPlase.Value / val);
|
|
end;
|
|
|
|
procedure TF_Kalc.vSForRMChange(Sender: TObject);
|
|
begin
|
|
// KolRMBtnClick(Self);
|
|
end;
|
|
|
|
procedure TF_Kalc.AllComponent_GridDBTableView1EditValueChanged(
|
|
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
|
|
begin
|
|
//with Kalc_DM.AllComponent_MemTable do
|
|
// begin
|
|
// Post;
|
|
// Edit;
|
|
// FieldByName(fnCost).AsFloat := FieldByName(fnKolvo).AsFloat * FieldByName(fnPrice).AsFloat;
|
|
// Post;
|
|
// end;
|
|
end;
|
|
|
|
{ T_KalcDocument }
|
|
|
|
procedure T_KalcDocument.AddParamToXMl(AName: string; Value : string = '');
|
|
var
|
|
Node, Atr: IDomNode;
|
|
Str: IDOMCharacterData;
|
|
begin
|
|
Node := TopNode.createElement(Aname);
|
|
|
|
if Value <> '' then
|
|
begin
|
|
Atr := TopNode.createAttribute('value');
|
|
Atr.nodeValue := Value; // ñîçäàíèå òåõñòîâîãî óçëà
|
|
Node.attributes.setNamedItem(Atr);
|
|
end;
|
|
|
|
RootNode.appendChild(Node);
|
|
end;
|
|
|
|
procedure T_KalcDocument.AddToXmlGrid(AGrid: TcxGridDBTableView);
|
|
var
|
|
MT: TkbmMemTable;
|
|
FieldDefs: TFieldDefs;
|
|
NameField, Value, str: string;
|
|
i, j: integer;
|
|
fieldNode, Node, RecordNode: IDOMNode;
|
|
Text: IDOMCharacterData;
|
|
CountTime: integer;
|
|
begin
|
|
MT := TkbmMemTable(AGrid.DataController.DataSource.DataSet);
|
|
FieldDefs := MT.FieldDefs;
|
|
// if mt.State <> dsBrowse then
|
|
// begin
|
|
// //AGrid.DataController.Cancel;
|
|
//// AGrid.DataController.Controller.EditingController.Edit.EditValue := AGrid.DataController.Controller.EditingController.Edit. ;
|
|
// // F_Kalc.Name_ColumnPropertiesEditValueChanged(AGrid.DataController.Controller.EditingController.Edit);
|
|
//
|
|
//// AGrid.DataController.UpdateData;
|
|
//
|
|
// // mt.CheckBrowseMode;
|
|
// //MT.CheckActive;
|
|
// // MT.DataEvent(deCheckBrowseMode, 0);
|
|
// // case mt.State of
|
|
//// dsEdit, dsInsert:
|
|
//// begin
|
|
//// mt.UpdateRecord;
|
|
//// if mt.Modified then mt.Post else mt.Cancel;
|
|
//// end;
|
|
//// end;
|
|
// // CountTime := 0;
|
|
//
|
|
// //end;
|
|
// end;
|
|
Node := TopNode.getElementsByTagName(Agrid.Name).item[0];
|
|
if (Node <> NIL) and (MT.RecordCount > 0) then
|
|
with MT do
|
|
begin
|
|
First;
|
|
j := 1;
|
|
while Not Eof do
|
|
begin
|
|
str := 'Record' + IntTostr(j);
|
|
RecordNode := TopNode.createElement(Str);
|
|
if RecordNode <> Nil then
|
|
begin
|
|
For i := 0 to FieldDefs.Count -1 do
|
|
begin
|
|
NameField := FieldDefs[i].Name;
|
|
fieldNode := TopNode.createAttribute(NameField);
|
|
fieldNode.nodeValue := FieldByName(NameField).AsString;
|
|
RecordNode.attributes.setNamedItem(fieldNode);
|
|
end;
|
|
Node.appendChild(RecordNode);
|
|
inc(j);
|
|
Next;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
constructor T_KalcDocument.Create(AOwner: TObject; AFileName: string = '');
|
|
begin
|
|
inherited Create();
|
|
FOwner := TForm(AOwner);
|
|
if AFileName <> '' then
|
|
begin
|
|
LoadFromFile(AFileName);
|
|
end
|
|
else
|
|
begin
|
|
CreateXML(AFileName);
|
|
end;
|
|
end;
|
|
|
|
procedure T_KalcDocument.CreateXML(AFieldName: string);
|
|
|
|
begin
|
|
Xml := TXMLDocument.Create(nil);
|
|
XML.Active := false;
|
|
Xml.XML.Text := ('');
|
|
XML.Active := true;
|
|
TopNode := XML.DOMDocument;
|
|
RootNode := TopNode.appendChild(topNode.createElement('params'));
|
|
// Xml.documentElement;
|
|
InitXMl;
|
|
|
|
|
|
|
|
end;
|
|
|
|
destructor T_KalcDocument.Destroy;
|
|
begin
|
|
Xml.Free;
|
|
inherited;
|
|
end;
|
|
|
|
procedure T_KalcDocument.InitXMl;
|
|
var
|
|
i, Count : integer;
|
|
Control: TControl;
|
|
procedure AddControlsToXML(AControl: TComponent);
|
|
var
|
|
i,j: integer;
|
|
PageControl: TRzPageControl;
|
|
begin
|
|
if (Acontrol is TcxCustomEdit) or (AControl is TcxGridDBTableView)
|
|
or(AControl is TRzCustomEdit) or (Acontrol is TRzCustomCheckBox)
|
|
or(Acontrol is TcxCustomComboBox) or(AControl is TCustomComboBox)
|
|
or(Acontrol is TFlyTreeViewPro) or(Acontrol is TRzRadioGroup)
|
|
then
|
|
begin
|
|
AddParamToXML(Acontrol.Name);
|
|
end
|
|
end;
|
|
begin
|
|
with FOwner do
|
|
begin
|
|
count := ComponentCount;
|
|
for i := 0 to Count - 1 do
|
|
begin
|
|
// if Components[i] is TCustomControl then
|
|
AddControlsToXML(Components[i]);
|
|
end;
|
|
end;
|
|
// SaveToFile('max.xml');
|
|
end;
|
|
|
|
procedure T_KalcDocument.LoadComponentValue(AComponent: TComponent);
|
|
var
|
|
Node, childNode: IDOMNode;
|
|
Text: IDOMCharacterData;
|
|
Str: string;
|
|
i: integer;
|
|
FlyTreeView: TFlyTreeViewPro;
|
|
FlyNode: TFlyNode;
|
|
begin
|
|
Node := TopNode.getElementsByTagName(AComponent.Name).item[0];
|
|
if (Node <> Nil) then
|
|
if node.attributes.length > 0 then
|
|
begin
|
|
Str := '';
|
|
if AComponent is TRzCheckBox then
|
|
TRzCheckBox(AComponent).Checked := StrToBool(Node.attributes.item[0].nodeValue);
|
|
if AComponent is TRzCustomEdit then
|
|
TRzCustomEdit(AComponent).EditText := Node.attributes.item[0].nodeValue;
|
|
if AComponent is TRzRadioGroup then
|
|
begin
|
|
if Node.attributes.item[0].nodeValue = '' then
|
|
TRzRadioGroup(AComponent).ItemIndex := 0
|
|
else
|
|
TRzRadioGroup(AComponent).ItemIndex := StrToInt(Node.attributes.item[0].nodeValue);
|
|
end;
|
|
if AComponent is TcxCustomEdit then
|
|
begin
|
|
if AComponent is TcxSpinEdit then
|
|
begin
|
|
TcxSpinEdit(AComponent).Value := StrToFloatU(Node.attributes.item[0].nodeValue);
|
|
end
|
|
else
|
|
if (AComponent is TcxComboBox) then
|
|
begin
|
|
TcxComboBox(AComponent).ItemIndex := StrToInt(Node.attributes.item[0].nodeValue)
|
|
end
|
|
else
|
|
TcxCustomEdit(AComponent).EditValue := Node.attributes.item[0].nodeValue;
|
|
end;
|
|
if AComponent is TFlyTreeViewPro then
|
|
begin
|
|
FlyTreeView := TFlyTreeViewPro(AComponent);
|
|
For i:= FlyTreeView.Items.Count - 1 downto 1 do
|
|
begin
|
|
FlyTreeView.Items.Delete(FlyTreeView.Items[i]);
|
|
end;
|
|
For i := 0 to Node.attributes.length - 1 do
|
|
begin
|
|
if i <> 0 then
|
|
FlyTreeView.Items.Add(FlyNode, IntToStr(i+1) + cKalc_Msg1);
|
|
FlyNode := FlyTreeView.Items[FlyTreeView.Items.Count - 1];
|
|
FlyNode.Cells[1] := Node.attributes.item[i].nodeValue;
|
|
|
|
end;
|
|
end
|
|
end
|
|
else
|
|
begin
|
|
if AComponent is TcxGridDBTableView then
|
|
LoadGridFromXML(TcxGridDBTableView(AComponent));
|
|
end;
|
|
end;
|
|
|
|
procedure T_KalcDocument.LoadGridFromXML(AGrid: TcxGridDBTableView);
|
|
var
|
|
MT: TDataSet;
|
|
FieldDefs: TFieldDefs;
|
|
NameField, Value, str: string;
|
|
i, j: integer;
|
|
fieldNode, Node, RecordNode: IDOMNode;
|
|
Text: IDOMCharacterData;
|
|
NodeList: IDOMNodeList;
|
|
count: integer;
|
|
begin
|
|
|
|
MT := AGrid.DataController.DataSource.DataSet;
|
|
MT.Active := false;
|
|
MT.Active := True;
|
|
FieldDefs := MT.FieldDefs;
|
|
NodeList := TopNode.getElementsByTagName(Agrid.Name);
|
|
|
|
Node := NodeList.item[0];
|
|
//MT.Active := false;
|
|
//MT.Active := true;
|
|
if (Node <> NIL) then
|
|
begin
|
|
RecordNode := Node.firstChild;
|
|
j := 1;
|
|
while RecordNode <> Nil do
|
|
begin
|
|
MT.Append;
|
|
for i := 0 to RecordNode.attributes.length-1 do
|
|
begin
|
|
fieldNode := RecordNode.attributes.item[i];
|
|
MT.FieldByName(fieldNode.nodeName).AsString := fieldNode.nodeValue;
|
|
end;
|
|
MT.Post;
|
|
RecordNode := RecordNode.nextSibling;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure T_KalcDocument.LoadFromFile(AFileName: string);
|
|
var
|
|
i: integer;
|
|
AControl: TComponent;
|
|
begin
|
|
TF_Kalc(FOwner).Kalc_DM.DisebleMasterDetail;
|
|
try
|
|
Xml := TXMLDocument.Create(nil);
|
|
Xml.LoadFromFile(AFileName);
|
|
Xml.Active := true;
|
|
TopNode := Xml.DOMDocument;
|
|
RootNode := TopNode.documentElement;
|
|
if RootNode <> nil then
|
|
begin
|
|
|
|
for i := 0 to FOwner.ComponentCount - 1 do
|
|
begin
|
|
AControl := FOwner.Components[i];
|
|
if (Acontrol is TcxCustomEdit) or (AControl is TcxGridDBTableView)
|
|
or(AControl is TRzCustomEdit) or (Acontrol is TRzCustomCheckBox)
|
|
or(Acontrol is TcxCustomComboBox) or(AControl is TCustomComboBox)
|
|
or(Acontrol is TFlyTreeViewPro) or(Acontrol is TRzRadioGroup)
|
|
then
|
|
LoadComponentValue(AControl);
|
|
end;
|
|
TF_Kalc(FOwner).Kalc_DM.AllComponent_MemTable.Active := False;
|
|
TF_Kalc(FOwner).Kalc_DM.AllComponent_MemTable.Active := True;
|
|
end;
|
|
Finally
|
|
TF_Kalc(FOwner).Kalc_DM.EnableMasterDetail;
|
|
end;
|
|
end;
|
|
|
|
procedure T_KalcDocument.SaveComponentValue(AComponent: TComponent);
|
|
var
|
|
Atr,Node, childNode: IDOMNode;
|
|
Text: IDOMCharacterData;
|
|
Str: string;
|
|
i: integer;
|
|
FlyTreeView: TFlyTreeViewPro;
|
|
begin
|
|
Str := '';
|
|
if AComponent is TRzCustomEdit then
|
|
Str := TRzCustomEdit(AComponent).EditText;
|
|
if AComponent is TRzCheckBox then
|
|
Str := BoolToStr(TRzCheckBox(AComponent).Checked);
|
|
if AComponent is TRzRadioGroup then
|
|
Str := IntToStr(TRzRadioGroup(AComponent).ItemIndex);
|
|
if AComponent is TcxCustomEdit then
|
|
begin
|
|
if AComponent is TcxSpinEdit then
|
|
Str := FloatToStrU(TcxSpinEdit(AComponent).Value)
|
|
else
|
|
if TcxCustomEdit(AComponent).EditValue = Null then
|
|
Str := ''
|
|
else
|
|
if (AComponent is TcxComboBox) then
|
|
begin
|
|
str := IntToStr(TcxComboBox(AComponent).ItemIndex);
|
|
end
|
|
else
|
|
Str := TcxCustomEdit(AComponent).EditValue;
|
|
end;
|
|
|
|
if Str <> '' then
|
|
begin
|
|
Node := TopNode.getElementsByTagName(AComponent.Name).item[0];
|
|
Atr := TopNode.createAttribute('Value');
|
|
Atr.nodeValue := Str;
|
|
Node.attributes.setNamedItem(Atr);
|
|
//TopNode.getElementById(AComponent.Name);
|
|
// Text := Xml.DOMDocument.createTextNode(Str);
|
|
// Node.appendChild(Text);
|
|
|
|
end
|
|
else
|
|
begin
|
|
if AComponent is TFlyTreeViewPro then
|
|
begin
|
|
Node := TopNode.getElementsByTagName(AComponent.Name).item[0];
|
|
FlyTreeView := TFlyTreeViewPro(AComponent);
|
|
For i:= 0 to FlyTreeView.Items.Count - 1 do
|
|
begin
|
|
str := 'Floor' + IntToStr(i + 1);
|
|
Atr := TopNode.createAttribute(Str);
|
|
Atr.nodeValue := FlyTreeView.Items[i].Cells[1];
|
|
Node.attributes.setNamedItem(Atr);
|
|
end;
|
|
end;
|
|
if AComponent is TcxGridDBTableView then
|
|
AddToXmlGrid(TcxGridDBTableView(AComponent));
|
|
end;
|
|
end;
|
|
|
|
procedure T_KalcDocument.SaveToFile(AFileName: string);
|
|
var
|
|
i: integer;
|
|
begin
|
|
TF_Kalc(FOwner).Kalc_DM.DisebleMasterDetail;
|
|
try
|
|
for i := 0 to FOwner.ComponentCount - 1 do
|
|
begin
|
|
SaveComponentValue(FOwner.Components[i]);
|
|
end;
|
|
finally
|
|
TF_Kalc(FOwner).Kalc_DM.EnableMasterDetail;
|
|
end;
|
|
Xml.SaveToFile(AFileName);
|
|
|
|
end;
|
|
|
|
procedure TF_Kalc.OpenFile_BtnClick(Sender: TObject);
|
|
var
|
|
x: T_KalcDocument;
|
|
Name: TFileName;
|
|
razn : integer;
|
|
begin
|
|
OpenDialog1.Filter := cKalc_Msg81;
|
|
OpenDialog1.Title := cKalc_Msg82;
|
|
if OpenDialog1.Execute then
|
|
begin
|
|
Name := OpenDialog1.FileName;
|
|
x := T_KalcDocument.Create(Self, Name);
|
|
x.Destroy;
|
|
|
|
//ïðîâåðÿåì è âûíîñèì ïðåäóïðåæäåíèÿ
|
|
if GetFreePercentForCable > 0 then
|
|
StaticText5.Show
|
|
else
|
|
StaticText5.Hide;
|
|
if GetFreePercent(Kalc_DM.CableCanalMemTable.RecordCount)< 0 then
|
|
begin
|
|
StaticText4.Show;
|
|
end
|
|
else
|
|
begin
|
|
StaticText4.Hide;
|
|
end;
|
|
razn := CmpFloorsWithKolRM ;
|
|
if razn <> 0 then
|
|
begin
|
|
StaticText1.Show;
|
|
StaticText2.Caption := cKalc_Msg2 + IntToStr(razn);
|
|
StaticText2.Show;
|
|
end
|
|
else
|
|
begin
|
|
StaticText1.Hide;
|
|
StaticText2.Hide;
|
|
end;
|
|
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.SaveFile_BtnClick(Sender: TObject);
|
|
var
|
|
x: T_KalcDocument;
|
|
Name: TFileName;
|
|
begin
|
|
|
|
SaveDialog1.Filter := cKalc_Msg83;
|
|
SaveDialog1.Title := cKalc_Msg84;
|
|
SaveDialog1.DefaultExt := '*.spe';
|
|
If SaveDialog1.Execute then
|
|
begin
|
|
Name := SaveDialog1.FileName;
|
|
x := T_KalcDocument.Create(Self);
|
|
x.SaveToFile(Name);
|
|
x.Destroy;
|
|
end;
|
|
|
|
|
|
|
|
end;
|
|
|
|
procedure TF_Kalc.FormClose(Sender: TObject; var Action: TCloseAction);
|
|
var
|
|
x: T_KalcDocument;
|
|
ActivePage: integer;
|
|
Error: Boolean;
|
|
begin
|
|
ValidateActiveFormControl(Self);
|
|
Error := true;
|
|
ActivePage := Main_PageControl.ActivePageIndex;
|
|
if ActivePage = 4 then
|
|
begin
|
|
if AllComponent_GridDBTableView1.DataController.IsEditing then
|
|
Error :=false;
|
|
end;
|
|
if ActivePage = 3 then
|
|
begin
|
|
if PriceWorks_TableView.DataController.IsEditing then
|
|
Error :=false;
|
|
end;
|
|
if ActivePage = 1 then
|
|
begin
|
|
if CostRMGridTableView.DataController.IsEditing
|
|
or CostPKDBTableView.DataController.IsEditing
|
|
or CostPP_GridDBTableView.DataController.IsEditing
|
|
or GT_CostOrg.DataController.IsEditing
|
|
or CostShelf_GridDBTableView.DataController.IsEditing
|
|
or ShelfForFloor_GridDBTableView.DataController.IsEditing
|
|
or DopEq_TableView.DataController.IsEditing
|
|
then
|
|
Error := false;
|
|
end;
|
|
if ActivePage = 2 then
|
|
begin
|
|
if CCForFloor_GridTableView.DataController.IsEditing
|
|
or CCUnderCeil_GridTableView.DataController.IsEditing
|
|
or ElPointFix_GridTableView.DataController.IsEditing
|
|
or CableCanalGrid_TableView1.DataController.IsEditing
|
|
or ElementOfCC_Grid_DBTableView.DataController.IsEditing
|
|
then
|
|
Error := false;
|
|
end;
|
|
|
|
try
|
|
if Error then
|
|
begin
|
|
x := T_KalcDocument.Create(Self);
|
|
x.SaveToFile(TempFile);
|
|
x.Destroy;
|
|
end
|
|
else
|
|
Action := caNone;
|
|
except
|
|
on E: Exception do AddExceptionToLogEx('TF_Kalc.FormClose', E.Message);
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.CostShelf_GridDBTableViewEditValueChanged(
|
|
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
|
|
var
|
|
price: double;
|
|
id: integer;
|
|
begin
|
|
// Kalc_DM.ShelfForFloor_MemTable.Refresh;
|
|
Sender.DataController.Post;
|
|
if AItem.Index = 3 then
|
|
begin
|
|
id := Kalc_DM.CostShelf_MemTable.FieldByName(fnID).AsInteger;
|
|
price := Kalc_DM.CostShelf_MemTable.FieldByName(fnPrice).AsFloat;
|
|
with Kalc_DM.ShelfForFloor_MemTable do
|
|
begin
|
|
First;
|
|
while not Eof do
|
|
begin
|
|
if (not FieldByName('Id_Shelf').IsNull) and(id = FieldByName('Id_Shelf').AsInteger) then
|
|
begin
|
|
Edit;
|
|
FieldByName(fnPrice).AsFloat := price;
|
|
Post;
|
|
end;
|
|
Next;
|
|
end;
|
|
end;
|
|
|
|
end;
|
|
|
|
end;
|
|
|
|
procedure TF_Kalc.CostRMGridTableViewDragOver(Sender, Source: TObject; X,
|
|
Y: Integer; State: TDragState; var Accept: Boolean);
|
|
begin
|
|
Accept := false;
|
|
if Source is TTreeView then
|
|
if TControl(Source).Owner is TF_Main then
|
|
begin
|
|
if TTreeView(Source).Selected <> nil then
|
|
begin
|
|
if IsComponentNode(TTreeView(Source).Selected) then
|
|
if GDropComponent.ID <> 0 then
|
|
begin
|
|
Accept := true;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.CostRMGridTableViewDragDrop(Sender, Source: TObject; X,
|
|
Y: Integer);
|
|
var
|
|
price: double;
|
|
OldCurrency, NewCurrency: TCurrency;
|
|
begin
|
|
if GDropComponent.IsLine = biFalse then
|
|
begin
|
|
with Kalc_DM.CostRM_MemTable do
|
|
begin
|
|
Append;
|
|
FieldByName(fnName).AsString := GDropComponent.Name;
|
|
FieldByName(fnArticul).AsString := GDropComponent.ArticulProducer;
|
|
price := GetPriceForKalcFromDragCompon(GDropComponent);
|
|
FieldByName(fnPrice).AsFloat := Price;
|
|
FieldByName(fnKolvo).AsInteger := 1;
|
|
Post;
|
|
end;
|
|
// TcxGridTableView(Sender).DataController.Refresh;
|
|
ValCostFromGrid(vCRM, Kalc_DM.CostRM_MemTable);
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.CostPKDBTableViewDragDrop(Sender, Source: TObject; X,
|
|
Y: Integer);
|
|
var
|
|
OstPer,resultCmp: integer;
|
|
price: double;
|
|
begin
|
|
if GDropComponent.ComponentType.SysName = ctsnPatchCord then
|
|
begin
|
|
resultCmp := Kalc_DM.CmpPerFromCostPk_MemTable(OstPer);
|
|
price := GetPriceForKalcFromDragCompon(GDropComponent);
|
|
case resultCmp of
|
|
1 : U_Kalc_DM.AddRecordInMemTable(Kalc_DM.CostPK_MemTable, GDropComponent.Name, GDropComponent.ArticulProducer, Price, -1, OstPer, mpkCross);
|
|
2,3 : U_Kalc_DM.AddRecordInMemTable(Kalc_DM.CostPK_MemTable, GDropComponent.Name, GDropComponent.ArticulProducer, Price, -1, OstPer, mpkRM);
|
|
else
|
|
U_Kalc_DM.AddRecordInMemTable(Kalc_DM.CostPK_MemTable, GDropComponent.Name, GDropComponent.ArticulProducer, Price, -1, 0, mpkCross);
|
|
end;
|
|
end;
|
|
TcxGridTableView(Sender).DataController.Refresh;
|
|
end;
|
|
|
|
procedure TF_Kalc.CostPP_GridDBTableViewDragDrop(Sender, Source: TObject;
|
|
X, Y: Integer);
|
|
var
|
|
Prop: PProperty;
|
|
i: integer;
|
|
price: double;
|
|
begin
|
|
if GDropComponent.ComponentType.SysName = ctsnPatchPanel then
|
|
begin
|
|
if Kalc_DM.CostPP_MemTable.RecordCount < 1 then
|
|
begin
|
|
price := GetPriceForKalcFromDragCompon(GDropComponent);
|
|
U_Kalc_DM.AddRecordInMemTable(Kalc_DM.CostPP_MemTable, GDropComponent.Name, GDropComponent.ArticulProducer, Price);
|
|
vCPP.Value := Price;
|
|
For i := 0 to GDropComponent.Properties.Count - 1 do
|
|
begin
|
|
Prop := GDropComponent.Properties.Items[i];
|
|
if prop.SysName = pnPORTCOUNT then
|
|
begin
|
|
vKolPortPP.Value := StrToInt(prop.Value);
|
|
break;
|
|
end;
|
|
end;
|
|
ValCostFromGrid(vCPP, Kalc_dm.CostPP_MemTable);
|
|
//TcxGridTableView(Sender).DataController.Refresh;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.GT_CostOrgDragDrop(Sender, Source: TObject;
|
|
X, Y: Integer);
|
|
var
|
|
price: double;
|
|
begin
|
|
if GDropComponent.ComponentType.SysName = ctsnOrganizer then
|
|
begin
|
|
if Kalc_DM.CostOrg_MemTable.RecordCount < 1 then
|
|
begin
|
|
price := GetPriceForKalcFromDragCompon(GDropComponent);
|
|
U_Kalc_DM.AddRecordInMemTable(Kalc_DM.CostOrg_MemTable, GDropComponent.Name, GDropComponent.ArticulProducer, Price);
|
|
end;
|
|
//TcxGridTableView(Sender).DataController.Refresh;
|
|
ValCostFromGrid(vCOrg, Kalc_dm.CostOrg_MemTable);
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.CostShelf_GridDBTableViewDragDrop(Sender,
|
|
Source: TObject; X, Y: Integer);
|
|
var
|
|
price: double;
|
|
begin
|
|
if GDropComponent.ComponentType.SysName = ctsnCupboard then
|
|
begin
|
|
price := GetPriceForKalcFromDragCompon(GDropComponent);
|
|
U_Kalc_DM.AddRecordInMemTable(Kalc_DM.CostShelf_MemTable, GDropComponent.Name, GDropComponent.ArticulProducer, Price);
|
|
TcxGridTableView(Sender).DataController.Refresh;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.CableCanalGrid_TableView1DragDrop(Sender,
|
|
Source: TObject; X, Y: Integer);
|
|
var
|
|
per: integer;
|
|
i: integer;
|
|
CCConnector: PCableCanalConnector;
|
|
Compon: TSCSComponent;
|
|
price: double;
|
|
|
|
Function GotoCableConnectorInMT(Id_typeCCConector: integer): boolean;
|
|
var
|
|
i: integer;
|
|
begin
|
|
result := true;
|
|
Kalc_DM.ElemForCabcanal_MemTable.First;
|
|
case Id_typeCCConector of
|
|
contCork: begin
|
|
Kalc_DM.ElemForCabcanal_MemTable.MoveBy(4);
|
|
end;
|
|
contAnglePlane: begin
|
|
// Kalc_DM.ElemForCabcanal_MemTable.MoveBy(2)
|
|
end;
|
|
contAngleIn: begin
|
|
Kalc_DM.ElemForCabcanal_MemTable.MoveBy(1);
|
|
end;
|
|
contAngleOut: begin
|
|
Kalc_DM.ElemForCabcanal_MemTable.MoveBy(2);
|
|
end;
|
|
contConnector: begin
|
|
Kalc_DM.ElemForCabcanal_MemTable.MoveBy(3);
|
|
end;
|
|
else
|
|
begin
|
|
Result := False;
|
|
end;
|
|
end;
|
|
end;
|
|
begin
|
|
If GDropComponent.ComponentType.SysName = ctsnCableChannel then
|
|
begin
|
|
per := GetFreePercent(Kalc_DM.CableCanalMemTable.RecordCount);
|
|
// inc(FCountCC);
|
|
Kalc_DM.CableCanalMemTable.FieldByName(fnNpp);
|
|
price := GetPriceForKalcFromDragCompon(GDropComponent);
|
|
with Kalc_DM.CableCanalMemTable do
|
|
begin
|
|
Append;
|
|
// FieldByName(fnNpp).AsInteger := FCountCC;
|
|
FieldByName(fnName).AsString := GDropComponent.Name;
|
|
FieldByName(fnArticul).AsString := GDropComponent.ArticulProducer;
|
|
FieldByName(fnPrice).AsFloat := Price;
|
|
FieldByName(fnPercent).AsInteger := per;
|
|
Post;
|
|
end;
|
|
AddCCElements;
|
|
Compon := TSCSComponent.Create(GDropComponent.ActiveForm);
|
|
try
|
|
for i := 0 to GDropComponent.CableCanalConnectors.Count - 1 do
|
|
begin
|
|
CCConnector := GDropComponent.CableCanalConnectors[i];
|
|
if GotoCableConnectorInMT(CCConnector.ConnectorType) then
|
|
begin
|
|
Compon.LoadComponentByID(CCConnector.IDNBConnector);
|
|
With Kalc_DM.ElemForCabcanal_MemTable do
|
|
begin
|
|
Edit;
|
|
FieldByName(fnArticul).AsString := Compon.ArticulProducer;
|
|
price := GetPriceForKalcFromDragCompon(Compon);
|
|
FieldByName(fnPrice).AsFloat := price;
|
|
Post;
|
|
end;
|
|
end;
|
|
end;
|
|
finally
|
|
Compon.Free;
|
|
end;
|
|
if GetFreePercent(Kalc_DM.CableCanalMemTable.RecordCount)< 0 then
|
|
begin
|
|
StaticText4.Show;
|
|
end
|
|
else
|
|
begin
|
|
StaticText4.Hide;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.AddCCElements;
|
|
var
|
|
z: integer;
|
|
FCountCC: integer;
|
|
begin
|
|
Kalc_DM.TypeOfElementCC_MemTable.First;
|
|
while not Kalc_DM.TypeOfElementCC_MemTable.Eof do
|
|
begin
|
|
FCountCC := Kalc_DM.CableCanalMemTable.FieldbyName(fnNpp).AsInteger;
|
|
z := Kalc_DM.TypeOfElementCC_MemTable.FieldByName('ID').AsInteger;
|
|
With Kalc_DM.ElemForCabcanal_MemTable do
|
|
begin
|
|
Append;
|
|
//inc(FCountECC);
|
|
// FieldByName('Id').AsInteger := FCountECC;
|
|
FieldByName('Npp_CC').AsInteger := FCountCC;
|
|
FieldByName('Id_Type').AsInteger := z;
|
|
FieldByName('Price').AsFloat := 0;
|
|
if z = 1 then
|
|
FieldByName('Rashod').AsInteger := 6;
|
|
if z = 2 then
|
|
FieldByName('Rashod').AsFloat := 6;
|
|
if z = 3 then
|
|
FieldByName('Rashod').AsFloat := 2.5;
|
|
if z = 4 then
|
|
FieldByName('Rashod').AsFloat := 6;
|
|
if z = 5 then
|
|
FieldByName('Rashod').AsFloat := 7;
|
|
post;
|
|
end;
|
|
Kalc_DM.TypeOfElementCC_MemTable.Next;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.EnableTableView(ATableView: TcxGridDBTableView; AEnabled: Boolean);
|
|
begin
|
|
if AEnabled then
|
|
begin
|
|
ATableView.Styles.Background := nil;
|
|
ATableView.Styles.Content := nil;
|
|
end
|
|
else
|
|
begin
|
|
ATableView.Styles.Background := cxBackDisabled;
|
|
ATableView.Styles.Content := cxBackDisabled;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.ElPointFix_GridTableViewDragDrop(Sender, Source: TObject;
|
|
X, Y: Integer);
|
|
var
|
|
prop: PProperty;
|
|
i: integer;
|
|
begin
|
|
if GDropComponent.ComponentType.SysName = ctsnCableChannelAccessory then
|
|
begin
|
|
begin
|
|
U_Kalc_DM.AddRecordInMemTable(Kalc_DM.ElPointFix_MemTable, GDropComponent.Name, GDropComponent.ArticulProducer, RoundX(GDropComponent.Price,2),-1, 0);
|
|
For i := 0 to GDropComponent.Properties.Count - 1 do
|
|
begin
|
|
Prop := GDropComponent.Properties.Items[i];
|
|
if prop.SysName = pnExpenseForMetr then
|
|
begin
|
|
vMetodOpenWir1_Rashod.Value := StrToFloatU(CorrectStrToFloat(prop.Value));
|
|
break;
|
|
end;
|
|
end;
|
|
|
|
//TcxGridTableView(Sender).DataController.Refresh;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.CCForFloor_GridTableViewDragDrop(Sender, Source: TObject;
|
|
X, Y: Integer);
|
|
begin
|
|
if GDropComponent.ComponentType.SysName = ctsnCableChannel then
|
|
begin
|
|
U_Kalc_DM.AddRecordInMemTable(Kalc_DM.CCFloor_MemTable, GDropComponent.Name, GDropComponent.ArticulProducer, RoundX(GDropComponent.Price,2),-1, 0);
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.CCUnderCeil_GridTableViewDragDrop(Sender,
|
|
Source: TObject; X, Y: Integer);
|
|
begin
|
|
if GDropComponent.ComponentType.SysName = ctsnCableChannel then
|
|
begin
|
|
U_Kalc_DM.AddRecordInMemTable(Kalc_DM.CCUnderCeil_MemTable, GDropComponent.Name, GDropComponent.ArticulProducer, RoundX(GDropComponent.Price,2),-1, 0);
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.AllComponent_GridDBTableView1FocusedItemChanged(
|
|
Sender: TcxCustomGridTableView; APrevFocusedItem,
|
|
AFocusedItem: TcxCustomGridTableItem);
|
|
begin
|
|
//
|
|
end;
|
|
|
|
procedure TF_Kalc.AllComponent_Grid_pricePropertiesValidate(
|
|
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
|
|
var Error: Boolean);
|
|
var
|
|
price: Double;
|
|
begin
|
|
price := DisplayValue;
|
|
|
|
if price < 0 then
|
|
begin
|
|
Error := true;
|
|
end
|
|
else
|
|
with Kalc_DM.AllComponent_MemTable do
|
|
begin
|
|
Edit;
|
|
if FieldByName('TypePoz').AsString = idTypePozWorks then
|
|
FieldByName(fnCost).AsFloat := FieldByName(fnKolvo).AsFloat * Price * getKoefForWorks
|
|
else
|
|
FieldByName(fnCost).AsFloat := FieldByName(fnKolvo).AsFloat * Price;
|
|
FieldByName(fnPrice).AsFloat := price;
|
|
Post;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.AllComponent_Grid_KolvoPropertiesValidate(
|
|
Sender: TObject; var DisplayValue: Variant; var ErrorText: TCaption;
|
|
var Error: Boolean);
|
|
var
|
|
kolvo: integer;
|
|
begin
|
|
Kolvo := DisplayValue;
|
|
if kolvo < 0 then
|
|
begin
|
|
Error := true;
|
|
end
|
|
else
|
|
with Kalc_DM.AllComponent_MemTable do
|
|
begin
|
|
Edit;
|
|
if FieldByName('TypePoz').AsString = idTypePozWorks then
|
|
FieldByName(fnCost).AsFloat := FieldByName(fnPrice).AsFloat * Kolvo * getKoefForWorks
|
|
else
|
|
FieldByName(fnCost).AsFloat := FieldByName(fnPrice).AsFloat * Kolvo;
|
|
FieldByName(fnKolvo).AsInteger := Kolvo;
|
|
Post;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.Cable_Grid_DBTableViewDragDrop(Sender, Source: TObject;
|
|
X, Y: Integer);
|
|
var
|
|
price: double;
|
|
begin
|
|
if GDropComponent.ComponentType.SysName = ctsnCable then
|
|
begin
|
|
price := GetPriceForKalcFromDragCompon(GDropComponent);
|
|
U_Kalc_DM.AddRecordInMemTable(Kalc_DM.Cable_MemTable, GDropComponent.Name, GDropComponent.ArticulProducer, Price,-1, 100, 0);
|
|
if GetFreePercentForCable >= 0 then
|
|
StaticText5.Show
|
|
else
|
|
StaticText5.Hide;
|
|
end;
|
|
end;
|
|
|
|
destructor TF_Kalc.Destroy;
|
|
begin
|
|
Kalc_DM.Free;
|
|
inherited;
|
|
end;
|
|
|
|
procedure TF_Kalc.ClearProject_BtnClick(Sender: TObject);
|
|
begin
|
|
ClearProject;
|
|
//ïðîâåðÿåì è âûíîñèì ïðåäóïðåæäåíèÿ
|
|
StaticText5.Hide;
|
|
StaticText4.Hide;
|
|
StaticText1.Hide;
|
|
StaticText2.Hide;
|
|
|
|
end;
|
|
|
|
procedure TF_Kalc.ClearProject;
|
|
var
|
|
Component: TComponent;
|
|
i, j, Count: integer;
|
|
FlyTreeViewPro: TFlyTreeViewPro;
|
|
Node: TFlyNode;
|
|
begin
|
|
for i := 0 to ComponentCount - 1 do
|
|
begin
|
|
Component := Components[i];
|
|
if (Component is TcxCustomEdit) then
|
|
begin
|
|
TcxCustomEdit(Component).EditValue := 0;
|
|
end;
|
|
if (Component is TcxGridDBTableView) then
|
|
begin
|
|
if (Component.Name <> 'PriceWorks_TableView' ) then
|
|
begin
|
|
TcxGridDBTableView(Component).DataController.DataSource.DataSet.Active := False;
|
|
TcxGridDBTableView(Component).DataController.DataSource.DataSet.Active := True;
|
|
end
|
|
else
|
|
begin
|
|
btClearPriceWorksClick(Self)
|
|
end;
|
|
end;
|
|
if (Component is TRzEdit) then
|
|
begin
|
|
TRzEdit(Component).EditText := '';
|
|
end;
|
|
|
|
if (Component is TRzSpinEdit) then
|
|
begin
|
|
TRzSpinEdit(Component).Value := 0;
|
|
end;
|
|
|
|
if (Component is TRzCheckBox) then
|
|
begin
|
|
TRzCheckBox(Component).Checked := False;
|
|
end;
|
|
|
|
if (Component is TcxComboBox) then
|
|
begin
|
|
TcxComboBox(Component).ItemIndex := 0;
|
|
end;
|
|
|
|
if (Component is TComboBox) then
|
|
begin
|
|
TComboBox(Component).ItemIndex := 0;
|
|
end;
|
|
|
|
if (Component is TFlyTreeViewPro) then
|
|
begin
|
|
FlyTreeViewPro := TFlyTreeViewPro(Component);
|
|
Count := FlyTreeViewPro.Items.Count -1;
|
|
For j := Count downto 1 do
|
|
begin
|
|
Node := FlyTreeViewPro.Items.GetLastNode;
|
|
FlyTreeViewPro.Items.Delete(Node);
|
|
end;
|
|
FlyTreeViewPro.Items[0].Cells[1] := '1';
|
|
end;
|
|
end;
|
|
Kalc_DM.AddShelfForFloor(cKalc_Msg85);
|
|
end;
|
|
|
|
procedure TF_Kalc.grComponentTypesItems0Click(Sender: TObject);
|
|
begin
|
|
pcComponentTypes.ActivePage.TabVisible := false;
|
|
pcComponentTypes.ActivePage := TRzTabSheet(TRzGroupItem(Sender).Tag);
|
|
pcComponentTypes.ActivePage.TabVisible := true;
|
|
end;
|
|
|
|
procedure TF_Kalc.grChannelComponTypesItems0Click(Sender: TObject);
|
|
begin
|
|
pcChannelComponTypes.ActivePage.TabVisible := false;
|
|
pcChannelComponTypes.ActivePage := TRzTabSheet(TRzGroupItem(Sender).Tag);
|
|
pcChannelComponTypes.ActivePage.TabVisible := true;
|
|
end;
|
|
|
|
procedure TF_Kalc.FormCreate(Sender: TObject);
|
|
//var
|
|
// x : T_KalcDocument;
|
|
|
|
|
|
procedure AddItemsToGroup(AGroup: TRzGroup; ASrcPageControl: TRzPageControl; AOnClick: TNotifyEvent);
|
|
var
|
|
i: Integer;
|
|
TabSheet: TRzTabSheet;
|
|
GroupItem: TRzGroupItem;
|
|
begin
|
|
AGroup.Items.Clear;
|
|
for i := 0 to ASrcPageControl.PageCount - 1 do
|
|
begin
|
|
TabSheet := ASrcPageControl.Pages[i];
|
|
TabSheet.TabVisible := false;
|
|
|
|
GroupItem := AGroup.Items.Add;
|
|
GroupItem.Caption := TabSheet.Caption;
|
|
GroupItem.OnClick := AOnClick;
|
|
GroupItem.Tag := Integer(TabSheet);
|
|
end;
|
|
// if AGroup.Items.Count > 0 then
|
|
// pcComponentTypes.ActivePageIndex := 0;
|
|
// AGroup.Items[0].Click;
|
|
end;
|
|
|
|
begin
|
|
try
|
|
Kalc_DM :=TKalc_DM.Create(Self);
|
|
|
|
//#From Oleg#
|
|
if Main_PageControl.PageCount > 0 then
|
|
Main_PageControl.ActivePage := Main_PageControl.Pages[0];
|
|
AddItemsToGroup(grComponentTypes, pcComponentTypes, grComponentTypesItems0Click);
|
|
|
|
//AddItemsToGroup(grChannelComponTypes, pcChannelComponTypes, grChannelComponTypesItems0Click);
|
|
gbChannelComponTypes.Visible := false;
|
|
except
|
|
on E: Exception do AddExceptionToLogEx('TF_Kalc.Create', E.Message);
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.Execute;
|
|
var
|
|
x : T_KalcDocument;
|
|
StrList: TStringList;
|
|
i, razn: integer;
|
|
node : tflyNode;
|
|
procedure SetDisplayFormat;
|
|
function cutFormatToInt(AStr: string): string;
|
|
//var len:integer;
|
|
begin
|
|
Result := AStr;
|
|
delete(Result,3,4);
|
|
end;
|
|
|
|
begin
|
|
{$IF Defined(SCS_PE) or Defined(SCS_SPA)}
|
|
Node := vKolRMForFloor.Items.GetFirstNode;
|
|
node.Cells[0] := strCalcCapt0;
|
|
{$IFEND}
|
|
TcxCurrencyEditProperties(Price_Column.Properties).DisplayFormat := GetDisplayFormatForFloat;
|
|
TcxCurrencyEditProperties(CostPKColumn_Price.Properties).DisplayFormat := GetDisplayFormatForFloat;
|
|
TcxCurrencyEditProperties(CostPP_GridColumn_Price.Properties).DisplayFormat := GetDisplayFormatForFloat;
|
|
TcxCurrencyEditProperties(CostOrg_GridColumn_Price.Properties).DisplayFormat := GetDisplayFormatForFloat;
|
|
TcxCurrencyEditProperties(CostShelf_GridColumn_Price.Properties).DisplayFormat := GetDisplayFormatForFloat;
|
|
TcxCurrencyEditProperties(DopEq_Grid_Price.Properties).DisplayFormat := GetDisplayFormatForFloat;
|
|
TcxCurrencyEditProperties(PriceWorks_Grid_Price.Properties).DisplayFormat := GetDisplayFormatForFloat;
|
|
TcxCurrencyEditProperties(Cable_Grid_Price.Properties).DisplayFormat := GetDisplayFormatForFloat;
|
|
TcxCurrencyEditProperties(Price.Properties).DisplayFormat := GetDisplayFormatForFloat;
|
|
TcxCurrencyEditProperties(CableCanalGrid_Price.Properties).DisplayFormat := GetDisplayFormatForFloat;
|
|
TcxCurrencyEditProperties(CCForFloor_Grid_Price.Properties).DisplayFormat := GetDisplayFormatForFloat;
|
|
TcxCurrencyEditProperties(CCUnderCeil_Grid_price.Properties).DisplayFormat := GetDisplayFormatForFloat;
|
|
TcxCurrencyEditProperties(ElPointFix_Grid_Price.Properties).DisplayFormat := GetDisplayFormatForFloat;
|
|
TcxCurrencyEditProperties(AllComponent_Grid_price.Properties).DisplayFormat := GetDisplayFormatForFloat;
|
|
TcxCurrencyEditProperties(ShelfForFloor_GridColumn_Price.Properties).DisplayFormat := GetDisplayFormatForFloat;
|
|
TcxCurrencyEditProperties(Cable_Grid_Percent.Properties).DisplayFormat := cutFormatToInt(GetDisplayFormatForFloat);
|
|
TcxCurrencyEditProperties(CableCanalGrid_Percent.Properties).DisplayFormat := cutFormatToInt(GetDisplayFormatForFloat);
|
|
TcxCurrencyEditProperties(rashod.Properties).DisplayFormat := cutFormatToInt(GetDisplayFormatForFloat);
|
|
TcxCurrencyEditProperties(CostRMGrid_Kolvo.Properties).DisplayFormat := cutFormatToInt(GetDisplayFormatForFloat);
|
|
TcxCurrencyEditProperties(CostPK_Persent.Properties).DisplayFormat := cutFormatToInt(GetDisplayFormatForFloat);
|
|
TcxCurrencyEditProperties(DopEq_Kolvo.Properties).DisplayFormat := cutFormatToInt(GetDisplayFormatForFloat);
|
|
TcxCurrencyEditProperties(CCUnderCeil_Grid_Percent.Properties).DisplayFormat := cutFormatToInt(GetDisplayFormatForFloat);
|
|
TcxCurrencyEditProperties(ElPointFix_Grid_Percent.Properties).DisplayFormat := cutFormatToInt(GetDisplayFormatForFloat);
|
|
TcxCurrencyEditProperties(CCForFloor_Grid_Percent.Properties).DisplayFormat := cutFormatToInt(GetDisplayFormatForFloat);
|
|
TcxCurrencyEditProperties(AllComponent_Grid_Kolvo.Properties).DisplayFormat := cutFormatToInt(GetDisplayFormatForFloat);
|
|
// TcxCurrencyEditProperties(Cable_Grid_Price.Properties).DisplayFormat := GetDisplayFormatForFloat;
|
|
// TcxCurrencyEditProperties(Cable_Grid_Price.Properties).DisplayFormat := GetDisplayFormatForFloat;
|
|
// TcxCurrencyEditProperties(Cable_Grid_Price.Properties).DisplayFormat := GetDisplayFormatForFloat;
|
|
// TcxCurrencyEditProperties(Cable_Grid_Price.Properties).DisplayFormat := GetDisplayFormatForFloat;
|
|
// TcxCurrencyEditProperties(Cable_Grid_Price.Properties).DisplayFormat := GetDisplayFormatForFloat;
|
|
|
|
end;
|
|
begin
|
|
SetDisplayFormat;
|
|
{$IF Defined(NORMSCS_PE) or Defined(SCS_SPA)}
|
|
TabSheet3.TabVisible := false;
|
|
{$IFEND}
|
|
if Self.Visible then
|
|
//Tolik 21/12/2019 --
|
|
// SetForegroundWindow(Self.Handle)
|
|
begin
|
|
SetForegroundWindow(Self.Handle);
|
|
ShowWindow(Handle, SW_SHOWNORMAL); // ïîñëå ïîêàçà îò÷åòà -- ñâîðà÷èâàåòñÿ, ïðè ïîâòîðíîì âûçîâå --
|
|
// ïîêàçûâàåòñÿ óæå ñâåðíóòûì, âîò ÷òîáû èçáåæàòü òàêîé ôèãíè ...
|
|
// íóæíî â ëþáîì ñëó÷àå ïîêàçàòü â íîðìàëüíîì âèäå
|
|
end
|
|
//
|
|
else
|
|
begin
|
|
Self.FormStyle := fsStayOnTop;
|
|
try
|
|
Screen.Cursor := crHourGlass;
|
|
try
|
|
FixLabeles;//óñòàíîâêà ïîäïèñåé
|
|
//óñòàíîâêà íàçâàíèé ñòîëáöîà â vKolRMForFloor
|
|
vKolRMForFloor.Columns[0].Caption := cKalc_Msg150;
|
|
vKolRMForFloor.Columns[1].Caption := cKalc_Msg151;
|
|
FixCableWey_ComboBox.ItemIndex := 2;
|
|
TypeWeyCC_PageControl.ActivePage := CableInCC_Sheet;
|
|
Curr_ComboBox.Properties.Items.Clear;
|
|
StrList := GetCurrenciesNameBriefListFromNB;
|
|
for i := 0 to StrList.Count - 1 do
|
|
begin
|
|
Curr_ComboBox.Properties.Items.AddObject(StrList.Strings[i], StrList.Objects[i]);
|
|
end;
|
|
Curr_ComboBox.ItemIndex := 0;
|
|
ServFloor_ComboBox.EditValue := 0;
|
|
ServerFloor := 0;
|
|
//FCountCC := 0;
|
|
// FCountECC := 0;
|
|
// actAddCableCanalExecute(Self);
|
|
// actAddCableExecute(Self);
|
|
try
|
|
if FileExists(TempFile) then
|
|
begin
|
|
x := T_KalcDocument.Create(Self, TempFile);
|
|
x.Destroy;
|
|
end
|
|
else
|
|
begin
|
|
ClearProject;
|
|
end;
|
|
except
|
|
MessageModal(cKalc_Msg86,cKalc_Msg15, MB_ICONWARNING );
|
|
ClearProject;
|
|
end;
|
|
|
|
ECostRMGrid_CheckClick(ECostRMGrid_Check);
|
|
ECostPKGridCheckClick(ECostPKGridCheck);
|
|
ECostPPGrid_CheckClick(ECostPPGrid_Check);
|
|
ECostOrgGrid_CheckClick(ECostOrgGrid_Check);
|
|
ECostShelfGridCheckClick(ECostShelfGridCheck);
|
|
EDopEqGrid_CheckClick(EDopEqGrid_Check);
|
|
|
|
// if Main_PageControl.PageCount > 0 then
|
|
// Main_PageControl.ActivePage := Main_PageControl.Pages[0];
|
|
//ïðîâåðÿåì è âûíîñèì ïðåäóïðåæäåíèÿ
|
|
pcComponentTypes.ActivePage.TabVisible := True;
|
|
if GetFreePercentForCable > 0 then
|
|
StaticText5.Show
|
|
else
|
|
StaticText5.Hide;
|
|
if GetFreePercent(Kalc_DM.CableCanalMemTable.RecordCount)< 0 then
|
|
begin
|
|
StaticText4.Show;
|
|
end
|
|
else
|
|
begin
|
|
StaticText4.Hide;
|
|
end;
|
|
razn := CmpFloorsWithKolRM ;
|
|
if razn <> 0 then
|
|
begin
|
|
StaticText1.Show;
|
|
StaticText2.Caption := cKalc_Msg2 + IntToStr(razn);
|
|
StaticText2.Show;
|
|
end
|
|
else
|
|
begin
|
|
StaticText1.Hide;
|
|
StaticText2.Hide;
|
|
end;
|
|
|
|
finally
|
|
if Main_PageControl.PageCount > 0 then
|
|
Main_PageControl.ActivePageIndex := 0;
|
|
Screen.Cursor := crDefault;
|
|
end;
|
|
except
|
|
end;
|
|
Self.Show;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.CostRMGridTableViewEditValueChanged(
|
|
Sender: TcxCustomGridTableView; AItem: TcxCustomGridTableItem);
|
|
begin
|
|
ValCostFromGrid(vCRM, Kalc_DM.CostRM_MemTable);
|
|
end;
|
|
|
|
procedure TF_Kalc.Name_ColumnPropertiesEditValueChanged(Sender: TObject);
|
|
var
|
|
MemTable: TDataSet;
|
|
Str: string;
|
|
DBColumn: TcxGridDBColumn;
|
|
GridTableView: TcxGridDBTableView;
|
|
|
|
begin
|
|
Str := VarToStr(TcxCustomEdit(Sender).EditValue);
|
|
GridTableView := TcxGridDBTableView(TCxGrid(TcxGridSite(TCxTextEdit(Sender).parent).Parent).ActiveView);
|
|
MemTable := GridTableView.DataController.DataSet;
|
|
dbColumn := TcxGridDBColumn(GridTableView.DataController.Controller.EditingItem);
|
|
// GridTableView.DataController.FocusedRowIndex;
|
|
// Str := VarToStr(GridTableView.DataController.Controller.EditingController.Edit.EditValue);
|
|
MemTable.FieldByName(DBColumn.DataBinding.FieldName).AsString := STr;
|
|
GridTableView.DataController.Post;
|
|
end;
|
|
|
|
procedure TF_Kalc.DopEq_GridExit(Sender: TObject);
|
|
begin
|
|
F_Kalc.DopEq_TableView.DataController.Post;
|
|
end;
|
|
|
|
function TF_Kalc.GetPriceForKalcFromDragCompon(ACompon: TSCSComponent): double;
|
|
var
|
|
price: double;
|
|
res1, res2: PObjectCurrencyRel;
|
|
OldCurrency, NewCurrency: TCurrency;
|
|
Index : integer;
|
|
begin
|
|
try
|
|
Result := RoundX(ACompon.Price, 2);
|
|
index := Curr_ComboBox.ItemIndex;
|
|
|
|
ZeroMemory(@OldCurrency, SizeOf(TCurrency));
|
|
ZeroMemory(@NewCurrency, SizeOf(TCurrency));
|
|
|
|
res1 := F_NormBase.DM.GetComponCurrencyByMainFld(ACompon.ID, ctMain);
|
|
if Assigned(res1) then
|
|
begin
|
|
OldCurrency := res1^.Data;
|
|
end;
|
|
Res2 := F_NormBase.DM.GetComponCurrencyByCurrencyID(ACompon.id, Integer(Curr_ComboBox.Properties.Items.Objects[Index]) );
|
|
if Assigned(Res2) then
|
|
begin
|
|
NewCurrency := Res2^.Data;
|
|
end;
|
|
if Assigned(res1) and Assigned(Res2) then
|
|
Result := GetPriceAfterChangeCurrency(result, OldCurrency, NewCurrency, 2);
|
|
finally
|
|
FreeMem(res1);
|
|
FreeMem(res2);
|
|
end
|
|
end;
|
|
|
|
procedure TF_Kalc.btClearPriceWorksClick(Sender: TObject);
|
|
begin
|
|
|
|
with Kalc_DM.PriceWorks_MemTable do
|
|
begin
|
|
// if RecordCount = 0 then
|
|
Kalc_DM.InitPriceWorks_MemTable;
|
|
//else
|
|
// while not Eof do
|
|
// begin
|
|
// First;
|
|
// FieldByName('Price').AsFloat := 0;
|
|
// Post;
|
|
// Next;
|
|
// end;
|
|
end;
|
|
end;
|
|
|
|
procedure TF_Kalc.AllComponent_Grid_TypePozGetDisplayText(
|
|
Sender: TcxCustomGridTableItem; ARecord: TcxCustomGridRecord;
|
|
var AText: String);
|
|
begin
|
|
if AText = idTypePozMaterial then
|
|
AText := stTypePozMaterial
|
|
else
|
|
if AText = idTypePozWorks then
|
|
AText := stTypePozWorks;
|
|
end;
|
|
|
|
procedure TF_Kalc.PutToReportWork(AIdWorks: integer; AKolWorks: integer; AKoef: double = 1);
|
|
var
|
|
dNum: integer;
|
|
NameWorks: string;
|
|
CostWorks, PriceWorks: double;
|
|
KOEF: double;
|
|
begin
|
|
{$IF NOT Defined(NORMSCS_PE) and NOT Defined(SCS_SPA)}
|
|
PriceWorks := 0;
|
|
with Kalc_DM.PriceWorks_MemTable do
|
|
begin
|
|
if Active then
|
|
begin
|
|
KOEF := FieldByName('Price').AsFloat;
|
|
dNum := AIdWorks - RecNo;
|
|
if dNum <> 0 then
|
|
MoveBy(dNum);
|
|
NameWorks := FieldByName('Name').AsString;
|
|
PriceWorks := FieldByName('Price').AsFloat;
|
|
end;
|
|
end;
|
|
if PriceWorks > 0 then
|
|
begin
|
|
CostWorks := PriceWorks * AKolWorks * Akoef;
|
|
AddRecordInReport(NameWorks,'', AKolWorks, PriceWorks, CostWorks, idTypePozWorks);
|
|
end;
|
|
{$IFEND}
|
|
end;
|
|
|
|
function TF_Kalc.GetKoefForWorks: double;
|
|
var
|
|
KOEF: double;
|
|
begin
|
|
try
|
|
Koef := 0;
|
|
with Kalc_DM.PriceWorks_MemTable do
|
|
begin
|
|
if Active then
|
|
begin
|
|
Last;
|
|
KOEF := roundx(FieldByName('Price').AsFloat,3);
|
|
end;
|
|
end;
|
|
if KOEF = 0 then
|
|
Koef := 1;
|
|
Result := KOEF;
|
|
except
|
|
on E: Exception do AddExceptionToLog('TF_Kalc.GetKoefForWorks: '+E.Message);
|
|
end;
|
|
end;
|
|
|
|
|
|
procedure TF_Kalc.FixLabeles;
|
|
begin
|
|
Label5.Caption := strCalcCapt1 + GetNameUOM(F_NormBase.FUOM, true, true);
|
|
Label6.Caption := strCalcCapt2 + GetNameUOM(F_NormBase.FUOM, true, true);
|
|
Label11.Caption := strCalcCapt3 + GetNameUOM(F_NormBase.FUOM, true, true);
|
|
Label7.Caption := strCalcCapt4 + GetNameUOM2(F_NormBase.FUOM);
|
|
Label9.Caption := strCalcCapt5 + GetNameUOM2(F_NormBase.FUOM);
|
|
Label10.Caption := strCalcCapt6 + GetNameUOM2(F_NormBase.FUOM);
|
|
Label40.Caption := strCalcCapt7 + GetNameUOM(F_NormBase.FUOM, true, true);
|
|
Label41.Caption := strCalcCapt8 + GetNameUOM(F_NormBase.FUOM, true, true);
|
|
Label13.Caption := strCalcCapt9 + GetNameUOM2(F_NormBase.FUOM);
|
|
Label31.Caption := strCalcCapt10 + GetNameUOM(F_NormBase.FUOM, true, true);
|
|
Label21.Caption := strCalcCapt11 + GetNameUOM(F_NormBase.FUOM, true, true);
|
|
Label17.Caption := strCalcCapt12 + GetNameUOM(F_NormBase.FUOM, true, true);
|
|
Label72.Caption := strCalcCapt13 + GetNameUOM(F_NormBase.FUOM, true, true);
|
|
// Label52.Caption := GetNameUOM(F_NormBase.FUOM, true, false);
|
|
Label12.Caption := strCalcCapt18 + GetNameUOM(F_NormBase.FUOM, true, true);
|
|
Label35.Caption := strCalcCapt15 + GetNameUOM(F_NormBase.FUOM, true, true);
|
|
Label45.Caption := strCalcCapt14 + GetNameUOM(F_NormBase.FUOM, true, false);
|
|
Label33.Caption := strCalcCapt16 + GetNameUOM(F_NormBase.FUOM, true, true);
|
|
Label24.Caption := strCalcCapt17 + GetNameUOM(F_NormBase.FUOM, true, true);
|
|
Label59.Caption := strCalcCapt19 + GetNameUOM(F_NormBase.FUOM, true, true);
|
|
Label38.Caption := GetNameUOM(F_NormBase.FUOM, true, false);
|
|
Label70.Caption := strCalcCapt23 + GetNameUOM(F_NormBase.FUOM, true, false)+ strCalcCapt24;
|
|
///òàáëè÷êè
|
|
rashod.Caption := strCalcCapt20 + GetNameUOM(F_NormBase.FUOM, true, false)+strCalcCapt21;
|
|
CableCanalGrid_Price.Caption := strCalcCapt22 + GetNameUOM(F_NormBase.FUOM, true, false);
|
|
Cable_Grid_Price.Caption := strCalcCapt22 + GetNameUOM(F_NormBase.FUOM, true, false);
|
|
|
|
end;
|
|
|
|
end.
|