ScStdBillsCtrl.pas 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. unit ScStdBillsCtrl;
  2. interface
  3. uses
  4. StdBillsLibDM,
  5. StdBillsLibForm,
  6. ZjLists,
  7. ScProjectManager,
  8. Controls,
  9. FXQDManagerUnit,
  10. LocateBillsDM;
  11. type
  12. TStdBillsCtrl = class
  13. private
  14. FDMStdBillsLib: TDMStdBillsLib;
  15. FStdBillsLibFrm: TStdBillsLibFrm;
  16. FBillsLocateDM: TBillsLocateDM;
  17. FFXQDManager: TFXQDManager;
  18. procedure SetIncStep(const Value: Integer);
  19. public
  20. constructor Create(AProjMgr: TProjectManager);
  21. destructor Destroy; override;
  22. {open new std lib}
  23. procedure LoadNewStdLib(const ALibName: string);
  24. procedure LoadBillsQtyLib(const ALibName: string);
  25. {add items to cur project}
  26. function AddItems(ASelList: TIntegerSList): Boolean;
  27. procedure AddItem;
  28. {add billsQty items}
  29. function AddBillsQtyItems(aSelList: TIntegerSList): Boolean;
  30. procedure AddBillsQtyItem;
  31. { locatebills }
  32. procedure FindFirstBills(const aCode: string);
  33. procedure FindNextBills;
  34. procedure LocateBills;
  35. procedure RefreshBills;
  36. {control ui refresh}
  37. procedure BeginUpdateUI(aType: Integer);
  38. procedure EndUpdateUI(aType: Integer);
  39. // Added by GiLi 2012-3-20 10:10:04
  40. // Add begin
  41. // 当表格改变的时候,对界面需要的刷新操作
  42. procedure BeginUpdateView;
  43. procedure EndUpdateView;
  44. // 表示项目表显示的层数
  45. procedure ShowLevel(ALevel: Integer);
  46. // 是否可以反向定位清单
  47. function CanLocateAtStdBills: Boolean;
  48. // 定位清单当前节点到标准清单中
  49. procedure LocateAtStdBills;
  50. // Add end
  51. property StdBillsLibFrm: TStdBillsLibFrm read FStdBillsLibFrm;
  52. property DMStdBillsLib: TDMStdBillsLib read FDMStdBillsLib;
  53. property BillsLocateDM: TBillsLocateDM read FBillsLocateDM;
  54. property FXQDManager: TFXQDManager read FFXQDManager;
  55. property IncStep: Integer write SetIncStep;
  56. end;
  57. implementation
  58. uses SysUtils;
  59. { TStdBillsCtrl }
  60. procedure TStdBillsCtrl.AddBillsQtyItem;
  61. begin
  62. FDMStdBillsLib.AddBillsQtyItem;
  63. end;
  64. function TStdBillsCtrl.AddBillsQtyItems(aSelList: TIntegerSList): Boolean;
  65. begin
  66. FDMStdBillsLib.AddBillsQtyItems(aSelList);
  67. end;
  68. procedure TStdBillsCtrl.AddItem;
  69. begin
  70. FDMStdBillsLib.AddItem;
  71. end;
  72. function TStdBillsCtrl.AddItems(ASelList: TIntegerSList): Boolean;
  73. begin
  74. // Modified by GiLi 2012-3-19 18:52:39
  75. // 添加清单失败,因为没有返回值
  76. Result := FDMStdBillsLib.AddItems(ASelList);
  77. end;
  78. procedure TStdBillsCtrl.BeginUpdateUI(aType: Integer);
  79. begin
  80. FStdBillsLibFrm.BeginUpdateUI(aType);
  81. end;
  82. procedure TStdBillsCtrl.BeginUpdateView;
  83. begin
  84. FStdBillsLibFrm.zgBillsLib.BeginUpdate;
  85. FStdBillsLibFrm.zgDrawingQuantity.BeginUpdate;
  86. end;
  87. function TStdBillsCtrl.CanLocateAtStdBills: Boolean;
  88. begin
  89. {
  90. if StdBillsLibFrm.zgBillsLib.ColCount = 0 then
  91. begin
  92. Result := False;
  93. Exit;
  94. end;
  95. }
  96. // 没有导入数据,不能反向定位
  97. if not DMStdBillsLib.cdsBillsLib.Active then
  98. begin
  99. Result := False;
  100. Exit;
  101. end;
  102. // 清单界面表格没有数据,不能反向定位
  103. if DMStdBillsLib.cdsBillsLib.IsEmpty then
  104. begin
  105. Result := False;
  106. Exit;
  107. end;
  108. Result := True;
  109. end;
  110. constructor TStdBillsCtrl.Create(AProjMgr: TProjectManager);
  111. begin
  112. FDMStdBillsLib := TDMStdBillsLib.Create(AProjMgr);
  113. FBillsLocateDM := TBillsLocateDM.Create(AProjMgr);
  114. FStdBillsLibFrm := TStdBillsLibFrm.Create(nil);
  115. FStdBillsLibFrm.ZgIDTree := FDMStdBillsLib.StdBillsTree;
  116. FStdBillsLibFrm.DQDataSet := FDMStdBillsLib.cdsDrawQView;
  117. FStdBillsLibFrm.BillsQtyTree := FDMStdBillsLib.BillsQtyTree;
  118. FStdBillsLibFrm.QtyDQDataSet := FDMStdBillsLib.cdsBQDrawingQtyView;
  119. FStdBillsLibFrm.StdBillsCtrl := Self;
  120. FDMStdBillsLib.StdBillsCtrl := Self;
  121. FFXQDManager := TFXQDManager.Create(AProjMgr);
  122. FStdBillsLibFrm.LoadLibNames;
  123. FStdBillsLibFrm.QtyItemDataSet := FBillsLocateDM.cdsQBItems;
  124. FDMStdBillsLib.LoadCustomStep(ExtractFilePath(ParamStr(0)) + {$I CustomStep.inc});
  125. end;
  126. destructor TStdBillsCtrl.Destroy;
  127. begin
  128. FDMStdBillsLib.Save;
  129. FStdBillsLibFrm.Free;
  130. FBillsLocateDM.Free;
  131. FFXQDManager.Free;
  132. FDMStdBillsLib.Free;
  133. inherited;
  134. end;
  135. procedure TStdBillsCtrl.EndUpdateUI(aType: Integer);
  136. begin
  137. FStdBillsLibFrm.EndUpdateUI(aType);
  138. end;
  139. procedure TStdBillsCtrl.EndUpdateView;
  140. begin
  141. FStdBillsLibFrm.zgBillsLib.EndUpdate;
  142. FStdBillsLibFrm.zgDrawingQuantity.EndUpdate;
  143. end;
  144. procedure TStdBillsCtrl.FindFirstBills(const aCode: string);
  145. begin
  146. FBillsLocateDM.FindFirstBills(aCode);
  147. end;
  148. procedure TStdBillsCtrl.FindNextBills;
  149. begin
  150. FBillsLocateDM.NextBills;
  151. end;
  152. procedure TStdBillsCtrl.LoadBillsQtyLib(const ALibName: string);
  153. begin
  154. if FileExists(ALibName) then
  155. FDMStdBillsLib.LoadBillsQtyLib(ALibName);
  156. end;
  157. procedure TStdBillsCtrl.LoadNewStdLib(const ALibName: string);
  158. begin
  159. if FileExists(ALibName) then
  160. FDMStdBillsLib.LoadNewStdLib(ALibName);
  161. end;
  162. procedure TStdBillsCtrl.LocateAtStdBills;
  163. begin
  164. FDMStdBillsLib.LocateCurBillsToStdBills;
  165. end;
  166. procedure TStdBillsCtrl.LocateBills;
  167. begin
  168. FBillsLocateDM.LocateBills;
  169. end;
  170. procedure TStdBillsCtrl.RefreshBills;
  171. begin
  172. FBillsLocateDM.RefreshBills;
  173. end;
  174. procedure TStdBillsCtrl.SetIncStep(const Value: Integer);
  175. begin
  176. FStdBillsLibFrm.IncStep := Value;
  177. end;
  178. procedure TStdBillsCtrl.ShowLevel(ALevel: Integer);
  179. begin
  180. BeginUpdateView;
  181. try
  182. FDMStdBillsLib.StdBillsTree.ExpandLevel := ALevel;
  183. finally
  184. EndUpdateView;
  185. end;
  186. end;
  187. end.