123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202 |
- unit MainForm;
- interface
- uses
- Windows,
- Messages,
- SysUtils,
- Variants,
- Classes,
- Graphics,
- Controls,
- Forms,
- Dialogs,
- dxBar,
- dxBarExtItems,
- ImgList,
- ActnList,
- ZjDbaActns,
- ComCtrls,
- ExtCtrls,
- AboutForm,
- JimPages,
- JimTabs,
- ConstVarUnit,
- BillsProjectFrame,
- ScProjectManager,
- ConstMethodUnit,
- ScPageControl,
- ScStdBillsCtrl,
- ToolWin,
- XPMenu,
- BMDThread,
- fraFileManagerFrame,
- dxsbar,
- ProjectFileManager,
- ScPHPWeb,
- AddLeafBillsFrm,
- BatchReplaceBillsFrm,
- // {$IFDEF _beOnLine}
- // , ScClientDM
- // {$ENDIF},
- SingleObjectAggregateUnit, Menus;
- type
- TMainFrm = class(TForm)
- dxBarManager: TdxBarManager;
- ActionList: TActionList;
- dxNew: TdxBarButton;
- dxSave: TdxBarButton;
- dxBarButton7: TdxBarButton;
- acNew: TAction;
- acOpen: TAction;
- acSave: TAction;
- acSaveAs: TAction;
- imgsSmall: TImageList;
- dxCut: TdxBarButton;
- dxPaste: TdxBarButton;
- dxAdd: TdxBarButton;
- dxOpenWithHistory: TdxBarButton;
- dxMoveRight: TdxBarButton;
- dxMoveLeft: TdxBarButton;
- dxDelete: TdxBarButton;
- dxMoveUp: TdxBarButton;
- dxMoveDown: TdxBarButton;
- acExit: TAction;
- dxFile: TdxBarSubItem;
- dxEdit: TdxBarSubItem;
- dxBarListItem1: TdxBarListItem;
- dxGater: TdxBarSubItem;
- dxHelp: TdxBarSubItem;
- dxbNew: TdxBarButton;
- dxbOpen: TdxBarButton;
- dxbSave: TdxBarButton;
- dxbSaveAs: TdxBarButton;
- dxbExit: TdxBarButton;
- dxBarButton6: TdxBarButton;
- dxGather: TdxBarButton;
- acBillsManage: TAction;
- dxBillsManage: TdxBarButton;
- dxBarButton10: TdxBarButton;
- acImportExcel: TAction;
- acGatherBills: TAction;
- dxbImprotExcel: TdxBarButton;
- dxbGather: TdxBarButton;
- dxbCopy: TdxBarButton;
- dxbCut: TdxBarButton;
- dxbPaste: TdxBarButton;
- dxbLeft: TdxBarButton;
- dxbRight: TdxBarButton;
- dxbUp: TdxBarButton;
- dxbDown: TdxBarButton;
- dxbInsert: TdxBarButton;
- dxbDelete: TdxBarButton;
- dxCompany: TdxBarStatic;
- dxBarWord: TdxBarStatic;
- dxBarProgressItem: TdxBarProgressItem;
- ZjDbaInsert: TZjDbaInsert;
- ZjDbaDelete: TZjDbaDelete;
- ZjDbaUpMove: TZjDbaUpMove;
- ZjDbaDownMove: TZjDbaDownMove;
- ZjTreeDbaUpLevel: TZjTreeDbaUpLevel;
- ZjTreeDbaDownLevel: TZjTreeDbaDownLevel;
- ZjGridCopy: TZjGridCopy;
- ZjGridCut: TZjGridCut;
- ZjGridPaste: TZjGridPaste;
- dxBarButton1: TdxBarButton;
- acHelp: TAction;
- dxBarButton2: TdxBarButton;
- dxShowOptions: TdxBarButton;
- SaveDialog: TSaveDialog;
- acCopyBills: TAction;
- dxCopyBills: TdxBarButton;
- acCloseCurProject: TAction;
- xppCloseProject: TdxBarPopupMenu;
- dxBarButton5: TdxBarButton;
- dxbExportToExcel: TdxBarButton;
- actnExportToExcel: TAction;
- XPMenu: TXPMenu;
- ZjGridRemapedPaste: TZjGridRemapedPaste;
- dxRemapedPaste: TdxBarButton;
- actnShowOptions: TAction;
- dxProject: TdxBarSubItem;
- dxbSetOptions: TdxBarButton;
- actnClearAllQuantity: TAction;
- dxBarButton3: TdxBarButton;
- dxXiang: TdxBarButton;
- dxMu: TdxBarButton;
- dxJie: TdxBarButton;
- dxXiMu: TdxBarButton;
- dxLevel5: TdxBarButton;
- dxLevel6: TdxBarButton;
- dxAll: TdxBarButton;
- dxliLocateBills: TdxBarListItem;
- actnLocateBills: TAction;
- tmrAutoSave: TTimer;
- actnHisResPoint: TAction;
- dxBarButton4: TdxBarButton;
- actnSaveFixedPoint: TAction;
- dxBarSubItem1: TdxBarSubItem;
- dxBarButton8: TdxBarButton;
- dxBarButton9: TdxBarButton;
- dxSet: TdxBarSubItem;
- dxOperation: TdxBarSubItem;
- dxOnlyXMJ: TdxBarButton;
- btCheckServer: TBMDThread;
- tmrOnLine: TTimer;
- tmrEncrypt: TTimer;
- actnAuthorize: TAction;
- dxAuthorize: TdxBarButton;
- actnRemoveZeroQty: TAction;
- dxBarButton11: TdxBarButton;
- jpManager: TJimPages;
- jpManagerProject: TJimPage;
- jpManagerPage: TJimPage;
- jpsBillsProjects: TJimPages;
- Splitter1: TSplitter;
- pnlDock: TPanel;
- actnImportQtyItems: TAction;
- dxBarSubItem2: TdxBarSubItem;
- dxBarSubItem3: TdxBarSubItem;
- dxBarButton12: TdxBarButton;
- actnProjectBills: TAction;
- dxBarButton13: TdxBarButton;
- dxBarButton14: TdxBarButton;
- actnQtyBills: TAction;
- actnItems: TAction;
- ilstLarge: TImageList;
- xsbMain: TdxSideBar;
- Splitter2: TSplitter;
- Panel1: TPanel;
- jtsBillsProjects: TJimTabSet;
- tbBillsToolView: TToolBar;
- tbStdproject: TToolButton;
- tbQtyItems: TToolButton;
- dxBarButton15: TdxBarButton;
- dxBarButton16: TdxBarButton;
- actnStdBills: TAction;
- actnLocate: TAction;
- dxBarButton17: TdxBarButton;
- dxBarButton18: TdxBarButton;
- dxBarButton19: TdxBarButton;
- dxBarButton20: TdxBarButton;
- FileManagerFrame: TFileManagerFrame;
- actnMergeProject: TAction;
- actnSplitProject: TAction;
- dxBarSubItem4: TdxBarSubItem;
- dxBarButton21: TdxBarButton;
- dxBarButton22: TdxBarButton;
- actnShowBidLotAlias: TAction;
- dxBarButton23: TdxBarButton;
- actnExportStdItems: TAction;
- actnManagerStdItems: TAction;
- dxBarButton24: TdxBarButton;
- dxBarButton25: TdxBarButton;
- actnSelectGatherNodeByName: TAction;
- actnAbolishAllGatherChoose: TAction;
- dxBarButton26: TdxBarButton;
- dxBarButton27: TdxBarButton;
- actnCalculateAll: TAction;
- dxBarButton28: TdxBarButton;
- dxBarButton29: TdxBarButton;
- dxBarSubItem5: TdxBarSubItem;
- dxBarSubItem6: TdxBarSubItem;
- dxBarButton30: TdxBarButton;
- actnUndoText: TAction;
- dxBarButton31: TdxBarButton;
- dbbLocateFromProjectBills: TdxBarButton;
- actnLocateFromProjectBills: TAction;
- dbbLocateFromQtyBills: TdxBarButton;
- actnLocateFromQtyBills: TAction;
- xbUpdateMemo: TdxBarButton;
- xbGradeView: TdxBarButton;
- actnShowGradeView: TAction;
- xbGrade: TdxBarButton;
- actnGrade: TAction;
- xbStat: TdxBarButton;
- xbClearUserFlags: TdxBarButton;
- actnStat: TAction;
- actnClearUserFlags: TAction;
- dxBarSubItem7: TdxBarSubItem;
- dxBarSubItem8: TdxBarSubItem;
- xbQuantityError: TdxBarButton;
- xbLostLine: TdxBarButton;
- xbIgnoreCode: TdxBarButton;
- xbIgnoreName: TdxBarButton;
- xbIgnoreUnits: TdxBarButton;
- xbIgnoreQuantity: TdxBarButton;
- xbIgnoreSuperscale: TdxBarButton;
- xbIgnoreRepeatLine: TdxBarButton;
- xbIgnoreLostPre: TdxBarButton;
- xbIgnoreLostNext: TdxBarButton;
- xbIgnoreLostChild: TdxBarButton;
- dxBarSubItem9: TdxBarSubItem;
- xbNameError: TdxBarButton;
- xbUnitsError: TdxBarButton;
- xbCodeError: TdxBarButton;
- xbSuperscale: TdxBarButton;
- xbRepeatLine: TdxBarButton;
- xbGradeCurItem: TdxBarButton;
- actnGradeCurItem: TAction;
- xbClearAllUnitPrices: TdxBarButton;
- actnClearAllUnitPrice: TAction;
- dxBarButton32: TdxBarButton;
- actnGatherBillsQuantity: TAction;
- dxBarClearUnit: TdxBarButton;
- actClearUnit: TAction;
- actnShowRecycleBin: TAction;
- dxbtnShowRecycleBin: TdxBarButton;
- dxbtnShowStdXiang: TdxBarButton;
- dxbtnShowStdMu: TdxBarButton;
- dxbtnShowStdJie: TdxBarButton;
- dxbtnShowStdXiMu: TdxBarButton;
- dxbtnShowStdFiveLvl: TdxBarButton;
- dxbtnShowStdSixLvl: TdxBarButton;
- dxbtnShowStdAll: TdxBarButton;
- dxbtnLocateAtStdBills: TdxBarButton;
- actnLocateAtStdBills: TAction;
- dxbtnAddLeafBills: TdxBarButton;
- actnAddLeafBills: TAction;
- dxbtnBatchReplaceBillsData: TdxBarButton;
- actnBatchReplaceBillsData: TAction;
- dxbtnExportFlatExcel: TdxBarButton;
- actnExportFlatExcel: TAction;
- procedure acExitExecute(Sender: TObject);
- procedure FormCreate(Sender: TObject);
- procedure FormDestroy(Sender: TObject);
- procedure acHelpExecute(Sender: TObject);
- procedure acSaveExecute(Sender: TObject);
- procedure acSaveAsExecute(Sender: TObject);
- procedure acImportExcelExecute(Sender: TObject);
- procedure acSaveUpdate(Sender: TObject);
- procedure acImportExcelUpdate(Sender: TObject);
- procedure jtsBillsProjectsChange(Sender: TObject; NewTab: Integer;
- var AllowChange: Boolean);
- procedure acGatherBillsExecute(Sender: TObject);
- procedure acCopyBillsExecute(Sender: TObject);
- procedure acCloseCurProjectExecute(Sender: TObject);
- procedure jtsBillsProjectsMouseDown(Sender: TObject;
- Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
- procedure actnExportToExcelExecute(Sender: TObject);
- procedure pnlDockUnDock(Sender: TObject; Client: TControl;
- NewTarget: TWinControl; var Allow: Boolean);
- procedure actnShowOptionsExecute(Sender: TObject);
- procedure actnClearAllQuantityExecute(Sender: TObject);
- procedure dxXiangClick(Sender: TObject);
- // Added by GiLi 2012-3-19 16:10:31
- // 标准清单的层次显示
- procedure dxStdXiangClick(Sender: TObject);
- procedure actnLocateBillsExecute(Sender: TObject);
- procedure tmrAutoSaveTimer(Sender: TObject);
- procedure actnHisResPointExecute(Sender: TObject);
- procedure actnSaveFixedPointExecute(Sender: TObject);
- procedure dxOnlyXMJClick(Sender: TObject);
- procedure ZjDbaDeleteExecute(Sender: TObject);
- procedure ZjDbaDeleteUpdate(Sender: TObject);
- procedure btCheckServerExecute(Sender: TObject;
- Thread: TBMDExecuteThread; var Data: Pointer);
- procedure btCheckServerTerminate(Sender: TObject;
- Thread: TBMDExecuteThread; var Data: Pointer);
- procedure tmrOnLineTimer(Sender: TObject);
- procedure FormClose(Sender: TObject; var Action: TCloseAction);
- procedure tmrEncryptTimer(Sender: TObject);
- procedure actnAuthorizeExecute(Sender: TObject);
- procedure actnRemoveZeroQtyExecute(Sender: TObject);
- procedure acBillsManageExecute(Sender: TObject);
- procedure acBillsManageUpdate(Sender: TObject);
- procedure actnImportQtyItemsExecute(Sender: TObject);
- procedure actnProjectBillsExecute(Sender: TObject);
- procedure actnQtyBillsExecute(Sender: TObject);
- procedure actnItemsExecute(Sender: TObject);
- procedure actnItemsUpdate(Sender: TObject);
- procedure actnQtyBillsUpdate(Sender: TObject);
- procedure actnProjectBillsUpdate(Sender: TObject);
- procedure xsbMainItemClick(Sender: TObject; Item: TdxSideBarItem);
- procedure actnStdBillsExecute(Sender: TObject);
- procedure actnLocateExecute(Sender: TObject);
- procedure dxBarButton17Click(Sender: TObject);
- procedure actnRemoveZeroQtyUpdate(Sender: TObject);
- procedure actnStdBillsUpdate(Sender: TObject);
- procedure acExitUpdate(Sender: TObject);
- procedure actnMergeProjectExecute(Sender: TObject);
- procedure actnMergeProjectUpdate(Sender: TObject);
- procedure actnSplitProjectUpdate(Sender: TObject);
- procedure actnSplitProjectExecute(Sender: TObject);
- procedure FileManagerFrameactnExportProjectUpdate(Sender: TObject);
- procedure actnShowBidLotAliasExecute(Sender: TObject);
- procedure actnShowBidLotAliasUpdate(Sender: TObject);
- procedure actnExportStdItemsExecute(Sender: TObject);
- procedure actnManagerStdItemsExecute(Sender: TObject);
- procedure actnSelectGatherNodeByNameUpdate(Sender: TObject);
- procedure actnSelectGatherNodeByNameExecute(Sender: TObject);
- procedure actnAbolishAllGatherChooseExecute(Sender: TObject);
- procedure actnCalculateAllExecute(Sender: TObject);
- procedure actnUndoTextExecute(Sender: TObject);
- procedure actnUndoTextUpdate(Sender: TObject);
- procedure actnLocateFromProjectBillsExecute(Sender: TObject);
- procedure actnLocateFromQtyBillsExecute(Sender: TObject);
- procedure actnLocateFromQtyBillsUpdate(Sender: TObject);
- procedure xbUpdateMemoClick(Sender: TObject);
- procedure actnShowGradeViewUpdate(Sender: TObject);
- procedure actnShowGradeViewExecute(Sender: TObject);
- procedure actnGradeExecute(Sender: TObject);
- procedure actnStatExecute(Sender: TObject);
- procedure actnClearUserFlagsExecute(Sender: TObject);
- procedure actnGradeUpdate(Sender: TObject);
- procedure actnStatUpdate(Sender: TObject);
- procedure actnClearUserFlagsUpdate(Sender: TObject);
- procedure xbQuantityErrorClick(Sender: TObject);
- procedure xbLostLineClick(Sender: TObject);
- procedure xbIgnoreCodeClick(Sender: TObject);
- procedure xbIgnoreNameClick(Sender: TObject);
- procedure xbIgnoreUnitsClick(Sender: TObject);
- procedure xbIgnoreQuantityClick(Sender: TObject);
- procedure xbIgnoreSuperscaleClick(Sender: TObject);
- procedure xbIgnoreRepeatLineClick(Sender: TObject);
- procedure xbIgnoreLostPreClick(Sender: TObject);
- procedure xbIgnoreLostNextClick(Sender: TObject);
- procedure xbIgnoreLostChildClick(Sender: TObject);
- procedure xbNameErrorClick(Sender: TObject);
- procedure xbUnitsErrorClick(Sender: TObject);
- procedure xbCodeErrorClick(Sender: TObject);
- procedure xbSuperscaleClick(Sender: TObject);
- procedure xbRepeatLineClick(Sender: TObject);
- procedure actnGradeCurItemExecute(Sender: TObject);
- procedure actnGradeCurItemUpdate(Sender: TObject);
- procedure actnClearAllUnitPriceExecute(Sender: TObject);
- procedure actnClearAllUnitPriceUpdate(Sender: TObject);
- procedure actnGatherBillsQuantityExecute(Sender: TObject);
- procedure actClearUnitUpdate(Sender: TObject);
- procedure actClearUnitExecute(Sender: TObject);
- procedure actnShowRecycleBinExecute(Sender: TObject);
- procedure actnLocateAtStdBillsUpdate(Sender: TObject);
- procedure actnLocateAtStdBillsExecute(Sender: TObject);
- procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
- procedure acCopyBillsUpdate(Sender: TObject);
- procedure ZjGridPasteUpdate(Sender: TObject);
- procedure actnAddLeafBillsExecute(Sender: TObject);
- procedure actnBatchReplaceBillsDataExecute(Sender: TObject);
- procedure actnBatchReplaceBillsDataUpdate(Sender: TObject);
- procedure actnExportFlatExcelExecute(Sender: TObject);
- private
- function GetAutoSave: Boolean;
- function GetSaveInteval: Integer;
- procedure SetAutoSave(const Value: Boolean);
- procedure SetSaveInteval(const Value: Integer);
- private
- FOpening: Boolean;
- FDirPath: string;
- FUnitList: TStringList;
- {$IFDEF _beOnLine}
- FCheckServerErr: Boolean;
- {$ENDIF}
- FBillsProjectManager: TProjectManager;
- FProjectFileManager: TProjectFileMgr;
- FStdBillsCtrl: TStdBillsCtrl;
- FIsSave: Boolean;
- function GetPosition: Integer;
- procedure SetPosition(const Value: Integer);
- procedure SetCaption(const aTabName: string);
- property prgPosition: Integer read GetPosition write SetPosition;
- {hint}
-
- procedure ReadUnitList(AStringList: TStrings);
- function GetAcitveProject: TProject;
- property AutoSaveProjects: Boolean read GetAutoSave write SetAutoSave;
- property AutoSaveInterval: Integer read GetSaveInteval write SetSaveInteval;
- procedure CMIncProgress(var Msg: TMessage); message SM_ProgressInc;
- procedure CMDisplayStdBillsLib(var Msg: TMessage); message SM_StdBillsLib;
- procedure CMCheckProjectOpened(var Msg: TMessage); message SM_CheckProject;
- procedure CMLocateBills(var Msg: TMessage); message SM_LocateBills;
- procedure CMAutoSaveProjects(var Msg: TMessage); message SM_AutoSaveProjects;
- procedure HideStdBillsForm;
- procedure ShowStdBillsForm(aPage: Integer);
- {$IFDEF _beOnLine}
- procedure SyncCheckServerErr(Sender: TObject);
- {$ENDIF}
- function ExportBuildProject(const aShortName: string; aIsMerge: Boolean): Boolean;
- procedure RefreshSplitBidLot(aProject: TObject);
- {Argument is fullpath}
- function LocateProject(const aIdx: Integer; aIsOpen: Boolean): Boolean;
- procedure OpenProject(const AFileName, AShortName: string; aProjType, aID: Integer);
- {Argument is shortname}
- procedure CloseProject(aProject: TObject);
- procedure CloseProjectByID(AID: Integer);
- {save project}
- procedure SaveProject(aCreatePoint: Boolean; aFixed: Boolean = False);
- {New delete}
- procedure DeleteBills;
- procedure DeleteRecords;
- {Clear Cur Bills Quantity and the DrawQtys}
- procedure ClearCurNodeQty;
- {Remove Bills which is Zero}
- procedure RemoveZeroQtyBills;
- { FXQD }
- procedure ExportStdItems(aFileFlag: Integer);
- { Select GahterNode By Name }
- procedure SelectGatherNodeByName;
- procedure AbolishAllGatherChoose;
- { Calculate All }
- procedure CalculateAll;
- public
- { Public declarations }
- // 别的单元要使用这两个方法
- procedure EndUserOperation;
- procedure BeginUserOperation(const TextWord: string);
- // chenshilong, 2011-01-12 11:02:24
- procedure GetGatherProjects(ASL: TStringList);
- property ProjectManager: TProjectManager read FBillsProjectManager;
- property ProjectFileManager: TProjectFileMgr read FProjectFileManager;
- property StdBillsCtrl: TStdBillsCtrl read FStdBillsCtrl;
- // 另外单元要使用这个属性。2012.1.10 HXY
- property CurProject: TProject read GetAcitveProject;
- property DirPath: string read FDirPath;
- property IsSave: Boolean read FIsSave write FIsSave;
- end;
- var
- MainFrm: TMainFrm;
- implementation
- uses
- ConstTypeUnit, ScOptionsFrm, ScConfig, HisRestorePointFrm,
- ZjGrid, ZjGridDBA, NewProjectFrm, ExportExFrm,
- ProjectMergeSplitUnit
- {$IFDEF _beEncrypt}
- , ScEncryptUnit, ScAuthFrm
- {$ENDIF},
- StdLibsManagerFrm, BidLotAliasFrm, ShellAPI,
- ScProgressFrm, ScCustomSetErrorFrm, ScReportsFrm,
- RecycleBinFrm, DataBase;
- {$R *.dfm}
- procedure TMainFrm.acExitExecute(Sender: TObject);
- begin
- Close;
- end;
- procedure TMainFrm.FormCreate(Sender: TObject);
- begin
- FProjectFileManager := TProjectFileMgr.Create;
- FProjectFileManager.CloseProjectProc := CloseProject;
- FProjectFileManager.OpenProjectProc := OpenProject;
- FileManagerFrame.ProjectFileMgr := FProjectFileManager;
- FBillsProjectManager := TProjectManager.Create;
- FProjectFileManager.ProjectManager := FBillsProjectManager;
- FDirPath := Format('%s\我的清单\', [ExtractFileDir(ParamStr(0))]);
- FStdBillsCtrl := TStdBillsCtrl.Create(FBillsProjectManager);
- { TODO : online }
- {$IFDEF _beOnLine}
- FCheckServerErr := False;
- tmrOnLine.Enabled := True;
- {$ENDIF}
- SetCaption('项目管理');
-
- jpManager.ActivePageIndex := 1;
- xsbMain.SelectedItem := xsbMain.ActiveGroup.Items.Items[0];
- FUnitList := TStringList.Create;
- ReadUnitList(FUnitList);
- {set auto save}
- AutoSaveInterval := ScConfigInfo.AutoSaveInterval;
- AutoSaveProjects := ScConfigInfo.AutoSaveProjects;
- {$IFDEF _beEncrypt}
- tmrEncrypt.Enabled := True;
- {$ELSE}
- dxAuthorize.Action := nil;
- dxAuthorize.Visible := ivNever;
- {$ENDIF}
- // ActiveControl := FileManagerFrame.zgGatherBid;
- // Modified by GiLi 2012-3-18 13:22:30
- // 屏蔽 清单评分
- xbGradeView.Visible := ivNever;
- xbGrade.Visible := ivNever;
- xbGradeCurItem.Visible := ivNever;
- end;
- procedure TMainFrm.FormDestroy(Sender: TObject);
- begin
- FProjectFileManager.Free;
- FBillsProjectManager.Free;
- FStdBillsCtrl.Free;
- FUnitList.Free;
- {$IFDEF _beOnLine}
- if not FCheckServerErr then
- PHPWeb.Logout;
- {$ENDIF}
- {$IFDEF _beEncrypt}
- tmrEncrypt.Enabled := False;
- SaveDog;
- {$ENDIF}
- end;
- procedure TMainFrm.acHelpExecute(Sender: TObject);
- var
- AboutFrm: TAboutFrm;
- begin
- AboutFrm := TAboutFrm.Create(nil);
- try
- AboutFrm.ShowModal;
- finally
- AboutFrm.Free;
- end;
- end;
- procedure TMainFrm.acSaveExecute(Sender: TObject);
- begin
- SaveProject(True);
- end;
- procedure TMainFrm.acSaveAsExecute(Sender: TObject);
- begin
- BeginUserOperation(sSaveAsWord);
- Screen.Cursor := crHourGlass;
- SaveDialog.InitialDir := FDirPath;
- try
- if SaveDialog.Execute then
- begin
- CurProject.SaveAs(SaveDialog.FileName);
- end;
- finally
- Screen.Cursor := crDefault;
- EndUserOperation;
- end;
- end;
- procedure TMainFrm.BeginUserOperation(const TextWord: string);
- begin
- dxBarWord.Caption := TextWord;
- Application.ProcessMessages;
- end;
- procedure TMainFrm.EndUserOperation;
- begin
- dxBarWord.Caption := sInitWord;
- Update;
- end;
- procedure TMainFrm.CMIncProgress(var Msg: TMessage);
- begin
- prgPosition := prgPosition + Msg.WParam;
- if prgPosition >= 100 then prgPosition := 0;
- end;
- function TMainFrm.GetPosition: Integer;
- begin
- Result := dxBarProgressItem.Position;
- end;
- procedure TMainFrm.SetPosition(const Value: Integer);
- begin
- dxBarProgressItem.Position := Value;
- Update;
- end;
- function TMainFrm.GetAcitveProject: TProject;
- begin
- if Assigned(FBillsProjectManager) then
- Result := FBillsProjectManager.ActiveProject
- else Result := nil;
- end;
- procedure TMainFrm.acImportExcelExecute(Sender: TObject);
- var
- strFileName: string;
- begin
- if OpenFileDialog('导入', '.xls', '', 'Excel files (*.xls)|*.xls', strFileName) then
- begin
- if MessageBox(0, PChar(sImportExcelHint), PChar(sQuestTip),
- MB_YESNO or MB_ICONQUESTION) = IDNO then Exit;
- Screen.Cursor := crHourGlass;
- BeginUserOperation(sImportExcel);
- try
- CurProject.ImportExcelFile(strFileName);
- finally
- EndUserOperation;
- Screen.Cursor := crDefault;
- end;
- end;
- end;
- procedure TMainFrm.acSaveUpdate(Sender: TObject);
- begin
- acSave.Enabled := Assigned(CurProject) {and CurProject.NeedSaveDatabase};
- end;
- procedure TMainFrm.acImportExcelUpdate(Sender: TObject);
- begin
- TAction(Sender).Enabled := Assigned(CurProject)
- and
- (jpManager.ActivePageIndex = 0)
- {and
- (CurProject.ProjectView.JimPages.ActivePageIndex = 0)};
- end;
- procedure TMainFrm.ReadUnitList(AStringList: TStrings);
- var
- I: Integer;
- begin
- AStringList.Clear;
- for I := Low(UnitsArray) to High(UnitsArray) do
- begin
- AStringList.Add(UnitsArray[I]);
- // AStringList.Add(ConvertUnitStr(UnitsArray[I]));
- end;
- end;
- procedure TMainFrm.jtsBillsProjectsChange(Sender: TObject; NewTab: Integer;
- var AllowChange: Boolean);
- begin
- if FOpening then Exit;
- if NewTab = 0 then
- begin
- jpManager.ActivePageIndex := 1;
- SetCaption(jtsBillsProjects.Tabs[NewTab]);
- end
- else
- LocateProject(NewTab - 1, False);
- end;
- procedure TMainFrm.acGatherBillsExecute(Sender: TObject);
- procedure CheckSelectedBeforeGather;
- begin
- with CurProject.BillsData do
- if not HasSelected then
- begin
- if MessageQuest('该项目没有选择汇总项,是否需要自动打勾?') then
- SelectGatherNode(XMJBillsTree.FirstNode, True);
- end;
- end;
- var
- iID: Integer;
- sGatherName: string;
- strFilePath: string;
- iProjectType, iProjKind, iGatherID: Integer;
- aProject, nProject: TProject;
- begin
- {$IFDEF _beEncrypt}
- DelayCheckDog;
- CheckDogErrorCountAndHint;
- {$ENDIF}
- CheckSelectedBeforeGather;
- CurProject.CheckBeforeGather;
-
- sGatherName := Format('%s[项目清单]', [jtsBillsProjects.Tabs[jtsBillsProjects.TabIndex]]);
- iProjectType := FBillsProjectManager.ActiveProject.ProjectType;
- if not NewProjectInfo(nil, sGatherName, iProjectType, iProjKind, iGatherID) then Exit;
- strFilePath := FProjectFileManager.CreateNewProject(sGatherName, iID, CurProject.GetGatherID);
- Application.ProcessMessages;
- Screen.Cursor := crHourGlass;
- BeginUserOperation(sGatherWord);
-
- aProject := FBillsProjectManager.ActiveProject;
- nProject := FBillsProjectManager.CreateNewProject(strFilePath, sGatherName, FStdBillsCtrl, iProjectType, iID);
- nProject.ProjectView.Project{.BillsData} := nil;
- IncProgressUI(15);
- try
- if not aProject.GatherProject(nProject) then
- begin
- IncProgressUI(80);
- MessageHint(0, sGatherError);
- DeleteFile(Format('%s%s.smb', [FDirPath, sGatherName]));
- end;
- finally
- FBillsProjectManager.RemoveProject(nProject, aProject);
- EndUserOperation;
- Screen.Cursor := crDefault;
- IncProgressUI(100);
- end;
-
- end;
- procedure TMainFrm.acCopyBillsExecute(Sender: TObject);
- begin
- Screen.Cursor := crHourGlass;
- BeginUserOperation(sCopyBills);
- try
- CurProject.ProjectView.CopyBills;
- finally
- EndUserOperation;
- Screen.Cursor := crDefault;
- end;
- end;
- procedure TMainFrm.acCloseCurProjectExecute(Sender: TObject);
- begin
- CloseProject(CurProject);
- end;
- procedure TMainFrm.jtsBillsProjectsMouseDown(Sender: TObject;
- Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
- begin
- if (Button = mbRight) and (jtsBillsProjects.TabIndex <> 0) then
- xppCloseProject.PopupFromCursorPos;
- end;
- procedure TMainFrm.ShowStdBillsForm(aPage: Integer);
- begin
- LockWindowUpdate(Handle);
- try
- if not pnlDock.Visible then
- begin
- FStdBillsCtrl.StdBillsLibFrm.ManualDock(pnlDock, nil, alClient);
- pnlDock.Visible := True;
- Splitter1.Visible := True;
- FStdBillsCtrl.StdBillsLibFrm.ShowPage(aPage);
- end
- else
- begin
- if FStdBillsCtrl.StdBillsLibFrm.GetPageIdx = aPage then
- HideStdBillsForm
- else
- begin
- if aPage = 0 then
- tbQtyItems.Down := False
- else
- tbStdproject.Down := False;
- FStdBillsCtrl.StdBillsLibFrm.ShowPage(aPage);
- end;
- end;
- finally
- LockWindowUpdate(0);
- end;
- end;
- procedure TMainFrm.actnExportToExcelExecute(Sender: TObject);
- var
- sFileName, sProjName, sFullName: string;
- strBidLot, strProjBills: TStrings;
- begin
- BeginUserOperation(sExportExcel);
- strBidLot := TStringList.Create;
- strProjBills := TStringList.Create;
- try
- if CurProject.Flag <> 1 then
- begin
- FProjectFileManager.GetNameByID(CurProject.ID, sProjName, sFullName);
- strBidLot.AddObject(sProjName, Pointer(sFullName));
- FProjectFileManager.GetBidLotsByID(CurProject.ID, strProjBills);
- if not ExportExForm(strBidLot, strProjBills) then Exit;
- Application.ProcessMessages;
- end;
- sFileName := GetSaveFile;
- if not CheckFileEnabled(sFileName) then Exit;
- Application.ProcessMessages;
- Screen.Cursor := crHourGlass;
- try
- CurProject.ExportExcel(FBillsProjectManager, sFileName, strBidLot, CurProject.Flag);
- {$IF Not DEFINED(_beEncrypt) and not DEFINED(_beOnLine)}
- MessageHint(Handle, '导出成功! 学习版仅导出100行!');
- {$IFEND}
- finally
- Screen.Cursor := crDefault;
- end;
- finally
- strBidLot.Free;
- strProjBills.Free;
- EndUserOperation;
- end;
- end;
- procedure TMainFrm.pnlDockUnDock(Sender: TObject; Client: TControl;
- NewTarget: TWinControl; var Allow: Boolean);
- begin
- pnlDock.Visible := False;
- Splitter1.Visible := False;
- end;
- procedure TMainFrm.CMDisplayStdBillsLib(var Msg: TMessage);
- begin
- tbStdproject.Down := False;
- pnlDock.Visible := False;
- Splitter1.Visible := False;
- FStdBillsCtrl.StdBillsLibFrm.Hide;
- end;
- procedure TMainFrm.CMCheckProjectOpened(var Msg: TMessage);
- var
- strName: string;
- begin
- strName := String(Msg.LParam);
- Msg.Result := FBillsProjectManager.CheckProjectExists(strName);
- if Msg.Result = -1 then Exit;
- if Msg.WParam <> -1 then
- begin
- if FBillsProjectManager.LocateProject(Msg.Result) then
- begin
- jtsBillsProjects.TabIndex := Msg.Result;
- jpsBillsProjects.ActivePageIndex := Msg.Result;
- SetCaption(jtsBillsProjects.Tabs[Msg.Result]);
- // Caption := Format('%s - [%s]', [SoftWareName, jtsBillsProjects.Tabs[Msg.Result]]);
- end;
- end;
- end;
- procedure TMainFrm.OpenProject(const AFileName, AShortName: string; aProjType, aID: Integer);
- var
- idx: Integer;
- jimPage: TJimPage;
- begin
- {check file is opened}
- if not FileExists(AFileName) then
- raise Exception.Create('文件不存在.');
- idx := FBillsProjectManager.CheckProjectExists(AFileName);
- if LocateProject(idx, True) then Exit;
- BeginUserOperation(sOpenWord);
- IncProgressUI(10);
- FBillsProjectManager.CreateNewProject(AFileName, AShortName, FStdBillsCtrl,
- aProjType, aID);
- CurProject.ParentID := FProjectFileManager.GetParentID(aID);
- CurProject.Flag := FProjectFileManager.GetProjectFlag(aID);
- if CurProject.Flag = 1 then
- RefreshSplitBidLot(CurProject);
- IncProgressUI(35);
- FOpening := True;
- LockWindowUpdate(Handle);
- try
- idx := jtsBillsProjects.Tabs.Add(AShortName);
- if (idx > 0) and (idx < jtsBillsProjects.Tabs.Count) then
- jtsBillsProjects.TabIndex := idx
- else
- jtsBillsProjects.TabIndex := 0;
-
- IncProgressUI(10);
- jimPage := TJimPage.Create(nil);
- jimPage.Pages := jpsBillsProjects;
- CurProject.ProjectView.Parent := jimPage;
- jpsBillsProjects.ActivePage := jimPage;
- IncProgressUI(15);
- CurProject.ProjectView.Align := alClient;
- CurProject.ProjectView.UnitsList := FUnitList;
- CurProject.ProjectView.Visible := True;
- CurProject.ProjectView.AdjustControlsSize;
- jpManager.ActivePageIndex := 0;
- IncProgressUI(20);
- SetCaption(AShortName);
- IncProgressUI(10);
- xsbMain.SelectedItem := xsbMain.ActiveGroup.Items.Items[0];
- CurProject.Navigation := 0;
- HideStdBillsForm;
- finally
- LockWindowUpdate(0);
- FOpening := False;
- end;
- EndUserOperation;
- end;
- procedure TMainFrm.actnShowOptionsExecute(Sender: TObject);
- var
- frmOptions: TfrmOptions;
- begin
- frmOptions := TfrmOptions.Create(nil);
- try
- frmOptions.ShowModal;
- finally
- frmOptions.Free;
- end;
- end;
- procedure TMainFrm.actnClearAllQuantityExecute(Sender: TObject);
- begin
- // CurProject.BillsData.ClearCurNodeQty;
- ExcuteTemplateMethod(@TMainFrm.ClearCurNodeQty, Self);
- end;
- procedure TMainFrm.dxXiangClick(Sender: TObject);
- begin
- Screen.Cursor := crHourGlass;
- CurProject.ProjectView.BeginUpdate;
- try
- CurProject.BillsData.ShowLevel(TdxBarButton(Sender).Tag);
- finally
- CurProject.ProjectView.EndUpdate;
- Screen.Cursor := crDefault;
- end;
- end;
- procedure TMainFrm.CMLocateBills(var Msg: TMessage);
- begin
- Msg.Result := Integer(dxliLocateBills.Items);
- end;
- procedure TMainFrm.actnLocateBillsExecute(Sender: TObject);
- var
- iBillsID: Integer;
- begin
- iBillsID := Integer(dxliLocateBills.Items.Objects[dxliLocateBills.ItemIndex]);
- if iBillsID > 0 then
- begin
- CurProject.BillsData.LocateBills(iBillsID);
- end;
- end;
- procedure TMainFrm.CMAutoSaveProjects(var Msg: TMessage);
- begin
- AutoSaveInterval := Msg.LParam;
- AutoSaveProjects := Msg.WParam <> 0;
- end;
- function TMainFrm.GetAutoSave: Boolean;
- begin
- Result := tmrAutoSave.Enabled;
- end;
- function TMainFrm.GetSaveInteval: Integer;
- begin
- Result := tmrAutoSave.Interval;
- end;
- procedure TMainFrm.SetAutoSave(const Value: Boolean);
- begin
- tmrAutoSave.Enabled := Value;
- end;
- procedure TMainFrm.SetSaveInteval(const Value: Integer);
- begin
- tmrAutoSave.Interval := Value * 60 * 1000;
- end;
- procedure TMainFrm.tmrAutoSaveTimer(Sender: TObject);
- begin
- Screen.Cursor := crHourGlass;
- try
- FBillsProjectManager.SaveProjects(ScConfigInfo.SaveAllProjects,
- ScConfigInfo.SaveRestorePoint);
- finally
- Screen.Cursor := crDefault;
- end;
- end;
- procedure TMainFrm.actnHisResPointExecute(Sender: TObject);
- var
- frmRestorePoint: TfrmRestorePoint;
- begin
- frmRestorePoint := TfrmRestorePoint.Create(nil);
- try
- frmRestorePoint.OpenProjectProc := OpenProject;
- frmRestorePoint.CloseProjectProc := CloseProject;
- frmRestorePoint.Project := CurProject;
- frmRestorePoint.ShowModal;
- finally
- frmRestorePoint.Free;
- end;
- end;
- procedure TMainFrm.CloseProject(aProject: TObject);
- var
- idx: Integer;
- bCanClose: Boolean;
- begin
- idx := FBillsProjectManager.RemoveProjectForClose(bCanClose, TProject(aProject), nil, True);
- if (idx = -1) or (not bCanClose) then Exit;
- CloseProjectByID(idx);
- end;
- function TMainFrm.LocateProject(const aIdx: Integer; aIsOpen: Boolean): Boolean;
- begin
- Result := False;
- if FBillsProjectManager.LocateProject(aIdx) then
- begin
- jpsBillsProjects.ActivePageIndex := aIdx;
- jpManager.ActivePageIndex := 0;
- xsbMain.SelectedItem := xsbMain.ActiveGroup.Items.Items[CurProject.Navigation];
- CurProject.ProjectView.SetGridFocus(CurProject.Navigation);
- TStdBillsCtrl(CurProject.StdBillsCtrl).DMStdBillsLib.RefreshCustomStep;
- if aIsOpen then jtsBillsProjects.TabIndex := aIdx + 1;
- SetCaption(jtsBillsProjects.Tabs[aIdx + 1]);
- HideStdBillsForm;
- FStdBillsCtrl.StdBillsLibFrm.ClearFilter;
- Result := True;
- end;
- end;
- procedure TMainFrm.actnSaveFixedPointExecute(Sender: TObject);
- begin
- SaveProject(True, True);
- end;
- procedure TMainFrm.SaveProject(aCreatePoint: Boolean; aFixed: Boolean);
- begin
- BeginUserOperation(sSaveWord);
- Screen.Cursor := crHourGlass;
- try
- CurProject.Save(aCreatePoint, aFixed);
- finally
- Screen.Cursor := crDefault;
- EndUserOperation;
- end;
- end;
- procedure TMainFrm.dxOnlyXMJClick(Sender: TObject);
- begin
- Screen.Cursor := crHourGlass;
- CurProject.ProjectView.BeginUpdate;
- try
- // CurProject.BillsData.CheckTree(CurProject.BillsData.BillsTree.FirstNode);
- CurProject.BillsData.OnlyShowXMJ;
- finally
- CurProject.ProjectView.EndUpdate;
- Screen.Cursor := crDefault;
- end;
- end;
- procedure TMainFrm.DeleteRecords;
- begin
- if SameText(ZjDbaDelete.GridDba.Grid.Name, 'zgBills') then
- begin
- if MessageQuest(sDeleteBillsHint) then
- begin
- CurProject.ProjectView.CopyBillsToRecycleBin;
- DeleteBills;
- end;
- end
- else
- ZjDbaDelete.ExecuteTarget(ZjDbaDelete.GridDba.Grid);
- end;
- procedure TMainFrm.DeleteBills;
- var
- iBillsCount, iPreID, iLastID, iParentID: Integer;
- strList: TStringList;
- begin
- strList := TStringList.Create;
- try
- iBillsCount := CurProject.ProjectView.GetSelection(strList, iPreID, iLastID, iParentID);
- if iBillsCount > 0 then
- begin
- CurProject.BillsData.DeleteBills(strList, iPreID, iLastID, iParentID);
- end;
- finally
- strList.Free;
- end;
- end;
- procedure TMainFrm.ZjDbaDeleteExecute(Sender: TObject);
- begin
- // DeleteRecords;
- {对象方法需要传自身做为EAX}
- ExcuteTemplateMethod(@TMainFrm.DeleteRecords, Self);
- end;
- procedure TMainFrm.ZjDbaDeleteUpdate(Sender: TObject);
- var
- I: Integer;
- begin
- ZjDbaDelete.GridDba := nil;
- if Screen.ActiveControl is TZjGrid then
- begin
- with Screen.ActiveControl as TZJGrid do
- begin
- for I := 0 to HelpmateCount - 1 do
- if Helpmates[I] is TZjGridDba then
- begin
- ZjDbaDelete.GridDba := TZjGridDBA(Helpmates[I]);
- Break;
- end;
- end;
- end;
- ZjDbaDelete.Enabled := (ZjDbaDelete.GridDba <> nil)
- and
- ZjDbaDelete.GridDba.CanDelete
- and
- (jpManager.ActivePageIndex = 0);
- end;
- procedure TMainFrm.ClearCurNodeQty;
- begin
- if MessageQuest(sClearBillsQtyHint) then
- CurProject.BillsData.ClearCurNodeQty;
- end;
- {$IFDEF _beOnLine}
- procedure TMainFrm.SyncCheckServerErr(Sender: TObject);
- begin
- MessageWarning(0, sLoginFailed , sErrorTip, MB_OK);
- FCheckServerErr := True;
- Application.Terminate;
- end;
- {$ENDIF}
- procedure TMainFrm.btCheckServerExecute(Sender: TObject;
- Thread: TBMDExecuteThread; var Data: Pointer);
- begin
- {$IFDEF _beOnLine}
- if (not PHPWeb.CheckOnLine) then
- begin
- Thread.Synchronize(SyncCheckServerErr);
- end;
- {$ENDIF}
- end;
- procedure TMainFrm.btCheckServerTerminate(Sender: TObject;
- Thread: TBMDExecuteThread; var Data: Pointer);
- begin
- {$IFDEF _beOnLine}
- btCheckServer.Stop;
- {$ENDIF}
- end;
- procedure TMainFrm.tmrOnLineTimer(Sender: TObject);
- begin
- {$IFDEF _beOnLine}
- if not btCheckServer.Runing then
- btCheckServer.Start;
- {$ENDIF}
- end;
- procedure TMainFrm.FormClose(Sender: TObject; var Action: TCloseAction);
- begin
- {$IFDEF _beOnline}
- tmrOnLine.Enabled := False;
- if btCheckServer.Runing then
- btCheckServer.Stop;
- {$ENDIF}
- end;
- procedure TMainFrm.tmrEncryptTimer(Sender: TObject);
- begin
- {$IFDEF _beEncrypt}
- DelayCheckDog;
- CheckDogErrorCountAndHint;
- {$ENDIF}
- end;
- procedure TMainFrm.actnAuthorizeExecute(Sender: TObject);
- begin
- {$IFDEF _beEncrypt}
- Authorize;
- {$ELSE}
- MessageHint(Handle, sWelcomeText);
- {$ENDIF}
- end;
- procedure TMainFrm.actnRemoveZeroQtyExecute(Sender: TObject);
- begin
- if MessageQuest(sRemoveBillsZeorQty) then
- ExcuteTemplateMethod(@TMainFrm.RemoveZeroQtyBills, Self);
- end;
- procedure TMainFrm.RemoveZeroQtyBills;
- begin
- CurProject.BillsData.RemoveZeroQtyBills;
- end;
- procedure TMainFrm.acBillsManageExecute(Sender: TObject);
- begin
- jpManager.ActivePageIndex := Integer(jpManager.ActivePageIndex = 0);
- end;
- procedure TMainFrm.acBillsManageUpdate(Sender: TObject);
- begin
- TAction(Sender).Enabled := jtsBillsProjects.Tabs.Count > 0;
- end;
- procedure TMainFrm.actnImportQtyItemsExecute(Sender: TObject);
- var
- strFileName: string;
- begin
- if OpenFileDialog('导入', '.xls', '', 'Excel files (*.xls)|*.xls', strFileName) then
- begin
- Screen.Cursor := crHourGlass;
- BeginUserOperation(sImportExcel);
- try
- CurProject.ImportQtyItems(strFileName);
- finally
- EndUserOperation;
- Screen.Cursor := crDefault;
- end;
- end;
- end;
- procedure TMainFrm.actnProjectBillsExecute(Sender: TObject);
- begin
- Screen.Cursor := crHourGlass;
- LockWindowUpdate(Handle);
- CurProject.ProjectView.BeginUpdate;
- try
- xsbMain.SelectedItem := xsbMain.ActiveGroup.Items.Items[1];
- CurProject.Navigation := 1;
- HideStdBillsForm;
- CurProject.BillsData.EnterXMJBills;
- CurProject.ProjectView.EnterXMJBills;
- CurProject.BillsData.IsProjectBills := True;
- CurProject.ProjectView.ActivePage := 2;
- finally
- CurProject.ProjectView.EndUpdate;
- LockWindowUpdate(0);
- Screen.Cursor := crDefault;
- end;
- end;
- procedure TMainFrm.actnQtyBillsExecute(Sender: TObject);
- begin
- Screen.Cursor := crHourGlass;
- LockWindowUpdate(Handle);
- try
- xsbMain.SelectedItem := xsbMain.ActiveGroup.Items.Items[2];
- CurProject.Navigation := 2;
- HideStdBillsForm;
- if CurProject.ProjectView.CanRefreshQtyItem then
- // if CurProject.ProjectView.ActivePage = 0 then
- CurProject.DetailItemsDM.RefreshPQItems;
- CurProject.ProjectView.ActivePage := 1;
- CurProject.BillsData.LeaveXMJBills;
- CurProject.ProjectView.LeaveXMJBills;
- CurProject.BillsData.IsProjectBills := False;
- finally
- LockWindowUpdate(0);
- Screen.Cursor := crDefault;
- end;
- end;
- procedure TMainFrm.actnItemsExecute(Sender: TObject);
- begin
- Screen.Cursor := crHourGlass;
- LockWindowUpdate(Handle);
- try
- xsbMain.SelectedItem := xsbMain.ActiveGroup.Items.Items[0];
- CurProject.Navigation := 0;
- CurProject.BillsData.LeaveXMJBills;
- CurProject.ProjectView.LeaveXMJBills;
- CurProject.BillsData.IsProjectBills := False;
- CurProject.ProjectView.ActivePage := 0;
- finally
- LockWindowUpdate(0);
- Screen.Cursor := crDefault;
- end;
- end;
- procedure TMainFrm.actnItemsUpdate(Sender: TObject);
- begin
- TAction(Sender).Enabled := Assigned(CurProject)
- and (jpManager.ActivePageIndex = 0)
- and (CurProject.ProjectView.ActivePage <> 0);
- end;
- procedure TMainFrm.actnQtyBillsUpdate(Sender: TObject);
- begin
- TAction(Sender).Enabled := Assigned(CurProject)
- and (jpManager.ActivePageIndex = 0)
- and (CurProject.ProjectView.ActivePage <> 1);
- end;
- procedure TMainFrm.actnProjectBillsUpdate(Sender: TObject);
- begin
- TAction(Sender).Enabled := Assigned(CurProject)
- and (jpManager.ActivePageIndex = 0)
- and (CurProject.ProjectView.ActivePage <> 2);
- end;
- procedure TMainFrm.xsbMainItemClick(Sender: TObject; Item: TdxSideBarItem);
- var s: string;
- begin
- case Item.Tag of
- 0: actnItems.Execute;
- 1: actnQtyBills.Execute;
- 2: actnProjectBills.Execute;
- {3:
- begin
- ShowReportForm(FBillsProjectManager.ActiveProject);
- xsbMain.SelectedItem := xsbMain.ActiveGroup.Items.Items[0];
- actnItems.Execute;
- end;}
- 3:
- begin
- s := '此处报表预览功能已取消。' + #10#13 +
- '如需预览报表数据,请从“文件”菜单下的“导出”—>“导出三级清单”导出EXCEL数据;' + #10#13 +
- '如需打印报表,请将导出的EXCEL文件在EXCEL软件中设置打印区域和打印标题,或者将项目' + #10#13 +
- '导入到编审系统中进行打印报表。';
- MessageHint(0, s);
- xsbMain.SelectedItem := xsbMain.Groups[0].Items[0];
- actnItems.Execute;
- Exit;
- // FBillsProjectManager.ActiveProject.BillsData.Save;
- // DisplayReports(FBillsProjectManager.ActiveProject);
- end;
- end;
- end;
- procedure TMainFrm.actnStdBillsExecute(Sender: TObject);
- begin
- ShowStdBillsForm(0);
- end;
- procedure TMainFrm.actnLocateExecute(Sender: TObject);
- begin
- ShowStdBillsForm(1);
- end;
- procedure TMainFrm.dxBarButton17Click(Sender: TObject);
- begin
- jpManager.ActivePageIndex := 1;
- jtsBillsProjects.TabIndex := 0;
- end;
- procedure TMainFrm.actnRemoveZeroQtyUpdate(Sender: TObject);
- begin
- if Assigned(CurProject) and (CurProject.ProjectView = nil) then
- begin
- TAction(Sender).Enabled := Assigned(CurProject)
- and
- (jpManager.ActivePageIndex = 0);
- end
- else
- TAction(Sender).Enabled := Assigned(CurProject)
- and
- (jpManager.ActivePageIndex = 0)
- and
- (CurProject.ProjectView.JimPages.ActivePageIndex = 0);
- end;
- procedure TMainFrm.HideStdBillsForm;
- begin
- pnlDock.Visible := False;
- Splitter1.Visible := False;
- FStdBillsCtrl.StdBillsLibFrm.Hide;
- tbStdproject.Down := False;
- tbQtyItems.Down := False;
- end;
- procedure TMainFrm.actnStdBillsUpdate(Sender: TObject);
- begin
- if not Assigned(CurProject) then Exit;
- if not Assigned(CurProject.ProjectView) then Exit;
- TAction(Sender).Enabled := Assigned(CurProject)
- and
- (jpManager.ActivePageIndex = 0)
- and
- (CurProject.ProjectView.JimPages.ActivePageIndex = 0);
-
- if tbBillsToolView.Visible <> actnStdBills.Enabled then
- tbBillsToolView.Visible := actnStdBills.Enabled;
- end;
- procedure TMainFrm.acExitUpdate(Sender: TObject);
- begin
- if not tbBillsToolView.Visible then
- begin
- actnStdBills.Update;
- end;
- end;
- procedure TMainFrm.actnMergeProjectExecute(Sender: TObject);
- var
- sProjName, sFullName: string;
- sgsProjectList: TStrings;
- PctConverter: TProjectConverter;
- bMergeByCode: Boolean;
- begin
- sgsProjectList := TStringList.Create;
- try
- { 只有标段才汇总 }
- if jpManager.ActivePageIndex = 0 then
- begin
- // 从打开的当前项目取标段
- FProjectFileManager.GetNameByID(CurProject.ParentID, sProjName, sFullName);
- FProjectFileManager.GetBidLotsByID(CurProject.ParentID, sgsProjectList);
- FProjectFileManager.LocateBuildProject(CurProject.ParentID);
- end
- else
- begin
- // 从项目管理取标段
- FProjectFileManager.GetNameByID(FProjectFileManager.GetProjID(1), sProjName, sFullName);
- FProjectFileManager.GetBidLotsByID(FProjectFileManager.GetProjID(1), sgsProjectList);
- end;
- if not ExportBuildProject(sProjName, True) then Exit;
- if SelectProjectForm(sgsProjectList, sProjName, bMergeByCode) then
- begin
- // sFullName : BuildProject's Name
- CreateProgressForm(0, '开始合并!');
- AddProgressForm(5, '正在收集信息…');
- BeginUserOperation(sMergeProject);
- Screen.Cursor := crHourGlass;
- PctConverter := TProjectConverter.Create(FBillsProjectManager, False, bMergeByCode);
- try
- CreateProgressForm(15, '正在合并清单!');
- PctConverter.MergeNew(sgsProjectList, sFullName);
- //PctConverter.Merge(sgsProjectList, sFullName);
- finally
- PctConverter.Free;
- Screen.Cursor := crDefault;
- EndUserOperation;
- end;
- CloseProgressForm;
- end;
- finally
- sgsProjectList.Free;
- end;
- end;
- procedure TMainFrm.actnMergeProjectUpdate(Sender: TObject);
- begin
- TAction(Sender).Enabled := Assigned(CurProject)
- and
- (jpManager.ActivePageIndex = 0)
- and
- (CurProject.Flag = 2)
- or
- FileManagerFrame.zgBidLot.Focused;
- end;
- procedure TMainFrm.actnSplitProjectUpdate(Sender: TObject);
- begin
- TAction(Sender).Enabled := Assigned(CurProject)
- and
- (jpManager.ActivePageIndex = 0)
- and
- (CurProject.Flag = 1)
- or
- FileManagerFrame.zgGatherBid.Focused
- and
- (FProjectFileManager.GetProjID(1) <> 1);
- end;
- procedure TMainFrm.actnSplitProjectExecute(Sender: TObject);
- var
- sProjName, sFullName: string;
- PctConverter: TProjectConverter;
- begin
- if jpManager.ActivePageIndex = 0 then
- begin
- // 从打开的当前项目取
- FProjectFileManager.GetNameByID(CurProject.ID, sProjName, sFullName);
- FProjectFileManager.LocateBuildProject(CurProject.ID);
- end
- else
- begin
- // 从项目管理取
- FProjectFileManager.GetNameByID(FProjectFileManager.GetProjID(1), sProjName, sFullName);
- end;
-
- { Export BuildProject }
- if not ExportBuildProject(sProjName, False) then Exit;
- BeginUserOperation(sSplitProject);
- Screen.Cursor := crHourGlass;
- PctConverter := TProjectConverter.Create(FBillsProjectManager, True, False);
- try
- PctConverter.Split(sFullName);
- finally
- PctConverter.Free;
- Screen.Cursor := crDefault;
- EndUserOperation;
- end;
- end;
- function TMainFrm.ExportBuildProject(const aShortName: string; aIsMerge: Boolean): Boolean;
- var
- sFileName: string;
- sHintText: string;
- begin
- if aIsMerge then
- sHintText := sMergeProjectHint
- else
- sHintText := sSplitProjectHint;
- Result := True;
- if not MessageQuest(sHintText) then
- begin
- if SaveFileDialog(sExportTip, '.pcf', aShortName,
- '清单编制 (*.pcf)|*.pcf', sFileName)
- then
- begin
- FProjectFileManager.ExportProjects(sFileName, 1);
- end
- else
- Result := False;
- end;
- end;
- procedure TMainFrm.FileManagerFrameactnExportProjectUpdate(
- Sender: TObject);
- begin
- TAction(Sender).Enabled := jpManager.ActivePageIndex = 1;
- end;
- procedure TMainFrm.actnShowBidLotAliasExecute(Sender: TObject);
- var
- sgsBidLot: TStrings;
- BidAliasForm: TBidAliasForm;
- begin
- sgsBidLot := TStringList.Create;
- BidAliasForm := TBidAliasForm.Create(nil);
- try
- BidAliasForm.Project := CurProject;
- SingleObjectAggregate.BidLotDM.Project := CurProject;
- FProjectFileManager.GetBidLotsByID(CurProject.ID, sgsBidLot);
- SingleObjectAggregate.BidLotDM.RefreshBidLot(sgsBidLot);
- BidAliasForm.DataSet := SingleObjectAggregate.BidLotDM.BidLotDB;
- BidAliasForm.BuildProjectName := CurProject.ProjectName;
- BidAliasForm.ShowModal;
- SingleObjectAggregate.BidLotDM.SyncProjectView;
- finally
- sgsBidLot.Free;
- BidAliasForm.Free;
- end;
- end;
- procedure TMainFrm.actnShowBidLotAliasUpdate(Sender: TObject);
- begin
- TAction(Sender).Enabled := Assigned(CurProject)
- and
- (jpManager.ActivePageIndex = 0)
- and
- (CurProject.Flag = 1);
- end;
- procedure TMainFrm.RefreshSplitBidLot(aProject: TObject);
- var
- sgsBidLot: TStrings;
- begin
- sgsBidLot := TStringList.Create;
- try
- SingleObjectAggregate.BidLotDM.Project := aProject;
- FProjectFileManager.GetBidLotsByID(TProject(aProject).ID, sgsBidLot);
- SingleObjectAggregate.BidLotDM.RefreshBidLot(sgsBidLot);
- SingleObjectAggregate.BidLotDM.SyncProjectView;
- finally
- sgsBidLot.Free;
- end;
- end;
- procedure TMainFrm.SetCaption(const aTabName: string);
- begin
- {$IFDEF _beOnLine}
- Caption := SoftWareName_OnLine + ' - [' + aTabName + ']';
- {$ELSE}
- {$IFDEF _beCommon}
- Caption := SoftWareName_ZY_Common + ' - [' + aTabName + ']';
- {$ELSE}
- {$IFDEF _beEncrypt}
- Caption := SoftWareName_ZY + ' - [' + aTabName + ']';
- {$ELSE}
- Caption := SoftWareName_XX + ' - [' + aTabName + ']';
- {$ENDIF}
- {$ENDIF}
- {$ENDIF}
- end;
- procedure TMainFrm.actnExportStdItemsExecute(Sender: TObject);
- begin
- ExportStdItems(1);
- end;
- procedure TMainFrm.ExportStdItems(aFileFlag: Integer);
- var
- sOldLibName: string;
- sNewLibName: string;
- begin
- if aFileFlag = 1 then
- sOldLibName := jtsBillsProjects.Tabs[jtsBillsProjects.TabIndex] + '分项清单'
- else
- sOldLibName := jtsBillsProjects.Tabs[jtsBillsProjects.TabIndex] + '工程量清单';
- sNewLibName := sOldLibName;
- while ScInputQuery('标准清单', '清单名称', sNewLibName) do
- begin
- if not CheckSpecialChar(sNewLibName) then
- begin
- if not FStdBillsCtrl.FXQDManager.CheckLibExists(sNewLibName) then
- begin
- Application.ProcessMessages;
- BeginUserOperation(sExportStdLib);
- Screen.Cursor := crHourGlass;
- try
- FStdBillsCtrl.FXQDManager.FileFlag := aFileFlag;
- FStdBillsCtrl.FXQDManager.AddFile(sNewLibName);
- FStdBillsCtrl.StdBillsLibFrm.AddLib(sNewLibName, aFileFlag);
- finally
- Screen.Cursor := crDefault;
- EndUserOperation;
- end;
- Break;
- end
- else
- begin
- sNewLibName := sOldLibName;
- MessageWarning(Screen.ActiveForm.Handle, sSameFileName);
- end;
- end
- else
- begin
- sNewLibName := sOldLibName;
- MessageWarning(Screen.ActiveForm.Handle, sSpecialChar);
- end;
- end;
- end;
- procedure TMainFrm.actnManagerStdItemsExecute(Sender: TObject);
- var
- StdLibsManagerForm: TStdLibsManagerForm;
- begin
- StdLibsManagerForm := TStdLibsManagerForm.Create(nil);
- try
- StdLibsManagerForm.StdBillsCtrl := FStdBillsCtrl;
- StdLibsManagerForm.ShowModal;
- finally
- StdLibsManagerForm.Free;
- end;
- end;
- procedure TMainFrm.actnSelectGatherNodeByNameUpdate(Sender: TObject);
- begin
- TAction(Sender).Enabled := Assigned(CurProject)
- and
- (jpManager.ActivePageIndex = 0)
- and
- (CurProject.ProjectView.JimPages.ActivePageIndex = 2);
- end;
- procedure TMainFrm.actnSelectGatherNodeByNameExecute(Sender: TObject);
- begin
- ExcuteTemplateMethod(@TMainFrm.SelectGatherNodeByName, Self);
- end;
- procedure TMainFrm.AbolishAllGatherChoose;
- begin
- CurProject.ProjectView.ControlBillsTreeRT(False);
- CurProject.ProjectView.ControlXMJTreeView(False);
- try
- CurProject.BillsData.SelectGatherNode(CurProject.BillsData.XMJBillsTree.FirstNode, False);
- finally
- CurProject.ProjectView.ControlBillsTreeRT(True);
- CurProject.ProjectView.ControlXMJTreeView(True);
- end;
- end;
- procedure TMainFrm.SelectGatherNodeByName;
- begin
- CurProject.ProjectView.ControlBillsTreeRT(False);
- CurProject.ProjectView.ControlXMJTreeView(False);
- try
- CurProject.BillsData.SelectGatherNode(CurProject.BillsData.XMJBillsTree.FirstNode, True);
- finally
- CurProject.ProjectView.ControlXMJTreeView(True);
- CurProject.ProjectView.ControlBillsTreeRT(True);
- end;
- end;
- procedure TMainFrm.actnAbolishAllGatherChooseExecute(Sender: TObject);
- begin
- ExcuteTemplateMethod(@TMainFrm.AbolishAllGatherChoose, Self);
- end;
- procedure TMainFrm.actnCalculateAllExecute(Sender: TObject);
- begin
- ExcuteTemplateMethod(@TMainFrm.CalculateAll, Self);
- end;
- procedure TMainFrm.CalculateAll;
- begin
- CurProject.ProjectView.ControlBillsTreeRT(False);
- CurProject.ProjectView.ControlXMJTreeView(False);
- try
- CurProject.BillsData.CalculateAll;
- finally
- CurProject.ProjectView.ControlXMJTreeView(True);
- CurProject.ProjectView.ControlBillsTreeRT(True);
- end;
- end;
- procedure TMainFrm.actnUndoTextExecute(Sender: TObject);
- begin
- if CurProject.ProjectView.zgBills.Focused and CurProject.BillsData.CanUnDoBillsText then
- CurProject.BillsData.UnDoBillsText
- else if CurProject.ProjectView.zgDrawingQuantity.Focused and
- CurProject.BillsData.CanUnDoDrawQtyText
- then
- CurProject.BillsData.UnDoDrawQtyText;
- end;
- procedure TMainFrm.actnUndoTextUpdate(Sender: TObject);
- begin
- TAction(Sender).Enabled := Assigned(CurProject)
- and
- ((CurProject.ProjectView.zgBills.Focused
- and
- CurProject.BillsData.CanUnDoBillsText)
- or
- (CurProject.ProjectView.zgDrawingQuantity.Focused
- and
- CurProject.BillsData.CanUnDoDrawQtyText));
- end;
- procedure TMainFrm.actnLocateFromProjectBillsExecute(Sender: TObject);
- begin
- CurProject.BillsData.LocateProjectBills;
- actnItems.Execute;
- end;
- procedure TMainFrm.actnLocateFromQtyBillsExecute(Sender: TObject);
- begin
- CurProject.DetailItemsDM.LocateBills;
- actnItems.Execute;
- end;
- procedure TMainFrm.actnLocateFromQtyBillsUpdate(Sender: TObject);
- begin
- TAction(Sender).Enabled := Assigned(CurProject) and CurProject.DetailItemsDM.CanLocateBills;
- end;
- procedure TMainFrm.GetGatherProjects(ASL: TStringList);
- var
- sProjName, sFullName: string;
- begin
- ASL.Clear;
- if CurProject.Flag <> 1 then
- begin
- FProjectFileManager.GetNameByID(CurProject.ID, sProjName, sFullName);
- FProjectFileManager.GetBidLotsByID(CurProject.ID, ASL);
- end;
- end;
- procedure TMainFrm.xbUpdateMemoClick(Sender: TObject);
- var sPath: string;
- begin
- sPath := ExtractFilePath(Application.ExeName);
- ShellExecute(Handle, 'open', PChar(sPath + '清单编制升级说明.txt'), nil, nil, SW_SHOW);
- end;
- procedure TMainFrm.actnShowGradeViewUpdate(Sender: TObject);
- begin
- TAction(Sender).Enabled := Assigned(CurProject)
- and (jpManager.ActivePageIndex = 0);
- if Assigned(CurProject) then
- begin
- TAction(Sender).Checked := CurProject.ProjectView.IsGradeView;
- xbGradeView.Down := CurProject.ProjectView.IsGradeView;
- end;
- end;
- procedure TMainFrm.actnShowGradeViewExecute(Sender: TObject);
- begin
- actnShowGradeView.Checked := not actnShowGradeView.Checked;
- CurProject.ProjectView.SwitchBillsGradeView(actnShowGradeView.Checked);
- end;
- procedure TMainFrm.actnGradeExecute(Sender: TObject);
- begin
- {$IFNDEF _beEncrypt}
- MessageHint(0, '对不起,此版本不提供评分功能,请购买正式版。');
- Exit;
- {$ENDIF}
- Screen.Cursor := crHourGlass;
- try
- CurProject.BillsData.Grade;
- AddProgressForm(1, '正在进行评分统计…');
- CurProject.BillsData.Stat;
- finally
- Screen.Cursor := crDefault;
- CloseProgressForm;
- end;
- end;
- procedure TMainFrm.actnStatExecute(Sender: TObject);
- begin
- {$IFNDEF _beEncrypt}
- MessageHint(0, '对不起,此版本不提供评分功能,请购买正式版。');
- Exit;
- {$ENDIF}
-
- Screen.Cursor := crHourGlass;
- try
- CurProject.BillsData.Stat;
- finally
- Screen.Cursor := crDefault;
- CloseProgressForm;
- end;
- end;
- procedure TMainFrm.actnClearUserFlagsExecute(Sender: TObject);
- begin
- Screen.Cursor := crHourGlass;
- try
- CurProject.BillsData.ClearUserFlags;
- finally
- Screen.Cursor := crDefault;
- end;
- end;
- procedure TMainFrm.actnGradeUpdate(Sender: TObject);
- begin
- TAction(Sender).Enabled := Assigned(CurProject) and (jpManager.ActivePageIndex = 0);
- end;
- procedure TMainFrm.actnStatUpdate(Sender: TObject);
- begin
- TAction(Sender).Enabled := Assigned(CurProject) and (jpManager.ActivePageIndex = 0);
- end;
- procedure TMainFrm.actnClearUserFlagsUpdate(Sender: TObject);
- begin
- TAction(Sender).Enabled := Assigned(CurProject) and (jpManager.ActivePageIndex = 0);
- end;
- procedure TMainFrm.xbQuantityErrorClick(Sender: TObject);
- begin
- CurProject.BillsData.AddError(ecQuantityError, 1);
- end;
- procedure TMainFrm.xbLostLineClick(Sender: TObject);
- var vLostKind: TErrorCategory;
- iCount: Integer;
- begin
- if ExecCustomSetErrorForm(vLostKind, iCount) then
- begin
- if iCount = 0 then Exit;
- CurProject.BillsData.AddError(vLostKind, iCount);
- end;
- end;
- procedure TMainFrm.xbIgnoreCodeClick(Sender: TObject);
- begin
- CurProject.BillsData.CancelError(ecCodeError);
- CurProject.BillsData.CancelError(ecB_CodeError);
- end;
- procedure TMainFrm.xbIgnoreNameClick(Sender: TObject);
- begin
- CurProject.BillsData.CancelError(ecNameError);
- end;
- procedure TMainFrm.xbIgnoreUnitsClick(Sender: TObject);
- begin
- CurProject.BillsData.CancelError(ecUnitError);
- end;
- procedure TMainFrm.xbIgnoreQuantityClick(Sender: TObject);
- begin
- CurProject.BillsData.CancelError(ecQuantityError);
- end;
- procedure TMainFrm.xbIgnoreSuperscaleClick(Sender: TObject);
- begin
- CurProject.BillsData.CancelError(ecSuperscale);
- end;
- procedure TMainFrm.xbIgnoreRepeatLineClick(Sender: TObject);
- begin
- CurProject.BillsData.CancelError(ecRepeatLine);
- end;
- procedure TMainFrm.xbIgnoreLostPreClick(Sender: TObject);
- begin
- CurProject.BillsData.CancelError(ecLostPreSibling);
- end;
- procedure TMainFrm.xbIgnoreLostNextClick(Sender: TObject);
- begin
- CurProject.BillsData.CancelError(ecLostNextSibling);
- end;
- procedure TMainFrm.xbIgnoreLostChildClick(Sender: TObject);
- begin
- CurProject.BillsData.CancelError(ecLostChildren);
- end;
- procedure TMainFrm.xbNameErrorClick(Sender: TObject);
- begin
- CurProject.BillsData.AddError(ecNameError, 1);
- end;
- procedure TMainFrm.xbUnitsErrorClick(Sender: TObject);
- begin
- CurProject.BillsData.AddError(ecUnitError, 1);
- end;
- procedure TMainFrm.xbCodeErrorClick(Sender: TObject);
- begin
- with CurProject.BillsData do
- begin
- case BillCategory(cdsOrgBillsCode.AsString, cdsOrgBillsB_Code.AsString) of
- bcYSXMJ: AddError(ecCodeError, 1);
- bcQDZMH: AddError(ecB_CodeError, 1);
- end;
- end;
- end;
- procedure TMainFrm.xbSuperscaleClick(Sender: TObject);
- begin
- CurProject.BillsData.AddError(ecSuperscale, 1);
- end;
- procedure TMainFrm.xbRepeatLineClick(Sender: TObject);
- begin
- CurProject.BillsData.AddError(ecRepeatLine, 1);
- end;
- procedure TMainFrm.actnGradeCurItemExecute(Sender: TObject);
- begin
- {$IFNDEF _beEncrypt}
- MessageHint(0, '对不起,此版本不提供评分功能,请购买正式版。');
- Exit;
- {$ENDIF}
-
- Screen.Cursor := crHourGlass;
- try
- CurProject.BillsData.Grade(False);
- AddProgressForm(1, '正在进行评分统计…');
- CurProject.BillsData.Stat;
- finally
- Screen.Cursor := crDefault;
- CloseProgressForm;
- end;
- end;
- procedure TMainFrm.actnGradeCurItemUpdate(Sender: TObject);
- begin
- TAction(Sender).Enabled := Assigned(CurProject) and (jpManager.ActivePageIndex = 0);
- end;
- procedure TMainFrm.CloseProjectByID(AID: Integer);
- begin
- jtsBillsProjects.Tabs.Delete(AID + 1);
- jpsBillsProjects.Pages.Delete(AID);
- jtsBillsProjects.TabIndex := FBillsProjectManager.ActiveIndex + 1;
- jpsBillsProjects.ActivePageIndex := FBillsProjectManager.ActiveIndex;
- if FBillsProjectManager.ProjectCount = 0 then
- begin
- SetCaption('项目管理');
- jpManager.ActivePageIndex := 1;
- end
- else
- SetCaption(FBillsProjectManager.ActiveProject.ProjectName);
- end;
- procedure TMainFrm.actnClearAllUnitPriceExecute(Sender: TObject);
- var bCalc: Boolean;
- begin
- Screen.Cursor := crHourGlass;
- try
- bCalc := ScConfigInfo.RealTimeCalc;
- ScConfigInfo.RealTimeCalc := False;
- CurProject.BillsData.ClearAllUnitPrices;
- CurProject.BillsData.CalculateAll;
- finally
- ScConfigInfo.RealTimeCalc := bCalc;
- Screen.Cursor := crDefault;
- end;
- end;
- procedure TMainFrm.actnClearAllUnitPriceUpdate(Sender: TObject);
- begin
- TAction(Sender).Enabled := Assigned(CurProject) and (jpManager.ActivePageIndex = 0);
- end;
- procedure TMainFrm.actnGatherBillsQuantityExecute(Sender: TObject);
- begin
- Screen.Cursor := crHourGlass;
- try
- CurProject.BillsData.GatherBillsQuantity;
- finally
- Screen.Cursor := crDefault;
- end;
- end;
- procedure TMainFrm.actClearUnitUpdate(Sender: TObject);
- begin
- TAction(Sender).Enabled := Assigned(CurProject)
- and
- (jpManager.ActivePageIndex = 0)
- and
- (CurProject.ProjectView.JimPages.ActivePageIndex = 0);
- end;
- procedure TMainFrm.actClearUnitExecute(Sender: TObject);
- var
- s: string;
- begin
- if MessageQuest('确定要删除清单子目中非叶子节点的单位?') then
- CurProject.BillsData.DeleteLastParentUnit(1);
- end;
- procedure TMainFrm.actnShowRecycleBinExecute(Sender: TObject);
- var
- RecycleBinForm: TRecycleBinForm;
- begin
- RecycleBinForm := TRecycleBinForm.Create(nil);
- try
- RecycleBinForm.Project := GetAcitveProject;
- RecycleBinForm.ShowModal;
- finally
- RecycleBinForm.Free;
- end;
- end;
- procedure TMainFrm.dxStdXiangClick(Sender: TObject);
- begin
- Screen.Cursor := crHourGlass;
- try
- StdBillsCtrl.ShowLevel(TdxBarButton(Sender).Tag);
- finally
- Screen.Cursor := crDefault;
- end;
- end;
- // Added by GiLi 2012-3-20 9:53:16
- // 是否可以定位当前节点到标准清单所在的位置
- procedure TMainFrm.actnLocateAtStdBillsUpdate(Sender: TObject);
- begin
- if not Assigned(StdBillsCtrl) then
- begin
- actnLocateAtStdBills.Enabled := False;
- end
- else
- begin
- actnLocateAtStdBills.Enabled := StdBillsCtrl.CanLocateAtStdBills;
- end;
- end;
- procedure TMainFrm.actnLocateAtStdBillsExecute(Sender: TObject);
- begin
- StdBillsCtrl.LocateAtStdBills;
- end;
- procedure TMainFrm.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
- var
- MQResult: Integer;
- I: Integer;
- project: TProject;
- begin
- if FBillsProjectManager.ProjectList.Count > 0 then
- begin
- MQResult := MessageQuest(Handle, '您没有保存文件,是否保存?', '询问', MB_YESNOCANCEL);
- case MQResult of
- ID_YES:
- begin
- // 这里注释掉,原因是放在TProjectManager.Destroy中去处理,这样更符合逻辑
- {for I := FBillsProjectManager.ProjectList.Count - 1 downto 0 do
- begin
- project := TProject(FBillsProjectManager.ProjectList[I]);
- if project.NeedSaveDatabase then
- begin
- if MessageBox(0, PChar(Format('项目[%s]是否保存?', [project.ProjectName])),
- PChar('询问'), MB_YESNO or MB_ICONQUESTION or MB_TOPMOST) = IDYES then
- project.Save(False);
- end;
- project.Free;
- end;
- FBillsProjectManager.ProjectList.Free;}
- FIsSave := True;
- CanClose := True;
- end;
- ID_NO:
- begin
- // 这里注释掉,原因是放在TProjectManager.Destroy中去处理,这样更符合逻辑
- // 为防止内存泄露加上下面代码
- {for I := FBillsProjectManager.ProjectList.Count - 1 downto 0 do
- begin
- project := TProject(FBillsProjectManager.ProjectList[I]);
- project.Free;
- end;
- FBillsProjectManager.ProjectList.Free; }
- FIsSave := False;
- CanClose := True;
- end;
- IDCANCEL:
- CanClose := False;
- end;
- end
- else
- CanClose := True;
- end;
- procedure TMainFrm.acCopyBillsUpdate(Sender: TObject);
- begin
- TAction(Sender).Enabled := Assigned(CurProject) and CurProject.ProjectView.IsCanCopyBills;
- end;
- procedure TMainFrm.ZjGridPasteUpdate(Sender: TObject);
- begin
- if Assigned(CurProject) then
- ZjGridPaste.Enabled := CurProject.ProjectView.IsCanGridPaste
- else
- ZjGridPaste.Enabled := True;
- end;
- procedure TMainFrm.actnAddLeafBillsExecute(Sender: TObject);
- begin
- AddLeafBills(CurProject.BillsData);
- end;
- procedure TMainFrm.actnBatchReplaceBillsDataExecute(Sender: TObject);
- begin
- BatchReplaceBillsData(CurProject.BillsData);
- end;
- procedure TMainFrm.actnBatchReplaceBillsDataUpdate(Sender: TObject);
- begin
- TAction(Sender).Enabled := CurProject.BillsData.cdsBillsB_Code.AsString <> '';
- end;
- procedure TMainFrm.actnExportFlatExcelExecute(Sender: TObject);
- var
- strFileName: string;
- begin
- if SaveFileDialog('导出0号台账平面表', '.xls', '', 'Excel files (*.xls)|*.xls', strFileName) then
- begin
- Screen.Cursor := crHourGlass;
- BeginUserOperation(sExportExcel);
- try
- CurProject.ExportFlatExcel(strFileName);
- finally
- EndUserOperation;
- Screen.Cursor := crDefault;
- end;
- end;
- end;
- initialization
- ShortDateFormat := 'yyyy-mm-dd';
- LongDateFormat := 'yyyy-mm-dd';
- DateSeparator := '-';
- TimeSeparator := ':';
- ShortTimeFormat := 'H:mm:ss';
- end.
|