StdBillsLibForm.pas 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710
  1. unit StdBillsLibForm;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Classes, Controls,
  5. Forms, ZjCells, ZjLists, StdCtrls, ExtCtrls,
  6. ZJGrid, ZjGridDBA, ZjGridTreeDBA, DBClient,
  7. Provider, DB, ADODB, ZjIDTree, JimPages, ComCtrls, Menus, ImgList,
  8. ToolWin, dxBar, XPMenu, Graphics;
  9. type
  10. TStdBillsLibFrm = class(TForm)
  11. zaBillsLib: TZjGridTreeDBA;
  12. zaDrawingQuantity: TZjGridDBA;
  13. zaBillsQty: TZjGridTreeDBA;
  14. JimPages1: TJimPages;
  15. JimPages1Page1: TJimPage;
  16. JimPages1Page2: TJimPage;
  17. PageControl1: TPageControl;
  18. TabSheet1: TTabSheet;
  19. Splitter1: TSplitter;
  20. Panel1: TPanel;
  21. btnAdd: TButton;
  22. cbFileName: TComboBox;
  23. zgBillsLib: TZJGrid;
  24. zgDrawingQuantity: TZJGrid;
  25. TabSheet2: TTabSheet;
  26. Panel2: TPanel;
  27. cbbBillsQtyLibs: TComboBox;
  28. btnAddQtyItems: TButton;
  29. zgBillsQty: TZJGrid;
  30. PageControl2: TPageControl;
  31. TabSheet3: TTabSheet;
  32. zgQtyItems: TZJGrid;
  33. zaQtyItems: TZjGridDBA;
  34. Panel3: TPanel;
  35. letBCode: TLabeledEdit;
  36. btnLocate: TButton;
  37. btnRefresh: TButton;
  38. btnClose: TButton;
  39. btnCloseQtyItem: TButton;
  40. ldeFindByCode: TLabeledEdit;
  41. ldeFindByName: TLabeledEdit;
  42. btnFindNext: TButton;
  43. zgQtyDrawingItems: TZJGrid;
  44. Splitter2: TSplitter;
  45. zaQtyDrawingItems: TZjGridDBA;
  46. pmBillsLib: TPopupMenu;
  47. N1: TMenuItem;
  48. N2: TMenuItem;
  49. ImageListOfPM: TImageList;
  50. N3: TMenuItem;
  51. N4: TMenuItem;
  52. ToolBar1: TToolBar;
  53. btnViewToLevels: TToolButton;
  54. dxpmStdShowLevel: TdxBarPopupMenu;
  55. XPMenuStdView: TXPMenu;
  56. procedure FormCreate(Sender: TObject);
  57. procedure FormDestroy(Sender: TObject);
  58. procedure zaBillsLibGridGetCellText(Sender: TObject;
  59. const ACoord: TPoint; var Value: String);
  60. procedure cbFileNameChange(Sender: TObject);
  61. procedure zgBillsLibMouseDown(Sender: TObject; Button: TMouseButton;
  62. Shift: TShiftState; X, Y: Integer);
  63. procedure btnAddClick(Sender: TObject);
  64. procedure FormClose(Sender: TObject; var Action: TCloseAction);
  65. procedure cbbBillsQtyLibsChange(Sender: TObject);
  66. procedure zaBillsQtyGridGetCellText(Sender: TObject;
  67. const ACoord: TPoint; var Value: String);
  68. procedure zaBillsQtyGridSetCellText(Sender: TObject;
  69. const ACoord: TPoint; var Value: String);
  70. procedure zgBillsQtyMouseDown(Sender: TObject; Button: TMouseButton;
  71. Shift: TShiftState; X, Y: Integer);
  72. procedure btnAddQtyItemsClick(Sender: TObject);
  73. procedure btnRefreshClick(Sender: TObject);
  74. procedure btnLocateClick(Sender: TObject);
  75. procedure letBCodeChange(Sender: TObject);
  76. procedure zgQtyItemsMouseDown(Sender: TObject; Button: TMouseButton;
  77. Shift: TShiftState; X, Y: Integer);
  78. procedure btnCloseClick(Sender: TObject);
  79. procedure ldeFindByCodeChange(Sender: TObject);
  80. procedure btnFindNextClick(Sender: TObject);
  81. procedure zaBillsLibGridSetCellText(Sender: TObject;
  82. const ACoord: TPoint; var Value: String);
  83. procedure DoOnGridCellCanUpLevel(Sender: TObject; const ACoord: TPoint;
  84. var Allow: Boolean);
  85. procedure DoOnGridCellCanDownLevel(Sender: TObject; const ACoord: TPoint;
  86. var Allow: Boolean);
  87. procedure N1Click(Sender: TObject);
  88. procedure N3Click(Sender: TObject);
  89. procedure N4Click(Sender: TObject);
  90. procedure btnViewToLevelsClick(Sender: TObject);
  91. procedure zgBillsLibCellGetColor(Sender: TObject; ACoord: TPoint;
  92. var AColor: TColor);
  93. private
  94. FSelList : TIntegerSList;
  95. FBillsQtyList : TIntegerSList;
  96. FLibNameList : TStrings;
  97. FBillsQtyLibs : TStrings;
  98. FStdBillsCtrl : TObject;
  99. FZjIDTree : TZjIDTree;
  100. FBillsQtyTree : TZjIDTree;
  101. FOpenLibName : string;
  102. FFindIndex : Integer;
  103. procedure SetDQDataSet(const Value: TDataSet);
  104. procedure SetQtyDQDataSet(const Value: TDataSet);
  105. procedure SetZjIDTree(const Value: TZjIDTree);
  106. procedure SetIncStep(const Value: Integer);
  107. function GetCheckCount(aSelList: TIntegerSList): Integer;
  108. { TODO : Control progress in need }
  109. function ShowProgressor: Boolean;
  110. procedure HideProgressor(aShow: Boolean);
  111. procedure SetBillsQtyTree(const Value: TZjIDTree);
  112. procedure InitView;
  113. procedure SetQtyItemDataSet(const Value: TDataSet);
  114. public
  115. { show page }
  116. procedure ShowPage(aPage: Integer);
  117. function GetPageIdx: Integer;
  118. {}
  119. procedure LoadLibNames;
  120. { Close }
  121. procedure CloseLib(aFileFlag: Integer);
  122. procedure ClearFilter;
  123. { FX }
  124. procedure AddLib(const aShortName: string; aFileFlag: Integer);
  125. procedure DeleteLib(const aShortName: string; aFileFlag: Integer);
  126. procedure ReNameLib(const aOldName, aNewName: string; aFileFlag: Integer);
  127. { control interface refresh }
  128. procedure BeginUpdateUI(aType: Integer);
  129. procedure EndUpdateUI(aType: Integer);
  130. { TODO : FindRecord }
  131. procedure FindRecord(var aIndex: Integer; const aCode, aName: string);
  132. property ZgIDTree: TZjIDTree read FZjIDTree write SetZjIDTree;
  133. property DQDataSet: TDataSet write SetDQDataSet;
  134. property QtyDQDataSet: TDataSet write SetQtyDQDataSet;
  135. property BillsQtyTree: TZjIDTree write SetBillsQtyTree;
  136. property QtyItemDataSet: TDataSet write SetQtyItemDataSet;
  137. property StdBillsCtrl: TObject read FStdBillsCtrl write FStdBillsCtrl;
  138. property IncStep: Integer write SetIncStep;
  139. property OpenLibName: string read FOpenLibName;
  140. end;
  141. implementation
  142. {$R *.dfm}
  143. uses
  144. ConstMethodUnit,
  145. ZjIDTreeCells,
  146. ScConfig,
  147. Math,
  148. ScStdBillsCtrl,
  149. StdBillsLibDM, LocateBillsDM;
  150. procedure TStdBillsLibFrm.FormCreate(Sender: TObject);
  151. begin
  152. zgBillsLib.CellClass.Cols[0] := TZjCheckBoxCell;
  153. zgBillsQty.CellClass.Cols[0] := TZjCheckBoxCell;
  154. FSelList := TIntegerSList.Create;
  155. FBillsQtyList := TIntegerSList.Create;
  156. FBillsQtyLibs := TStringList.Create;
  157. { init }
  158. InitView;
  159. zaBillsQty.OnGridCellCanUpLevel := DoOnGridCellCanUpLevel;
  160. zaBillsQty.OnGridCellCanDownLevel := DoOnGridCellCanDownLevel;
  161. end;
  162. procedure TStdBillsLibFrm.FormDestroy(Sender: TObject);
  163. begin
  164. FSelList.Free;
  165. FBillsQtyList.Free;
  166. FBillsQtyLibs.Free;
  167. end;
  168. procedure TStdBillsLibFrm.zaBillsLibGridGetCellText(Sender: TObject;
  169. const ACoord: TPoint; var Value: String);
  170. var
  171. OldActiveRec: Integer;
  172. begin
  173. if (ACoord.X = 0) and
  174. zaBillsLib.ChangeActiveRecord(ACoord.Y - zgBillsLib.FixedRowCount, OldActiveRec) then
  175. begin
  176. try
  177. Value := ZjBooleanStr(FSelList[ACoord.Y - zgBillsLib.FixedRowCount] <> 0);
  178. finally
  179. zaBillsLib.ChangeActiveRecord(OldActiveRec, OldActiveRec);
  180. end;
  181. end;
  182. end;
  183. procedure TStdBillsLibFrm.cbFileNameChange(Sender: TObject);
  184. begin
  185. Screen.Cursor := crHourGlass;
  186. LockWindowUpdate(PageControl1.Handle);
  187. try
  188. FSelList.Clear;
  189. TStdBillsCtrl(FStdBillsCtrl).LoadNewStdLib(FLibNameList.Strings[cbFileName.ItemIndex]);
  190. FOpenLibName := cbFileName.Text;
  191. finally
  192. LockWindowUpdate(0);
  193. Screen.Cursor := crDefault;
  194. end;
  195. end;
  196. procedure TStdBillsLibFrm.LoadLibNames;
  197. var
  198. I: Integer;
  199. sFileName: string;
  200. begin
  201. FLibNameList := TStringList(ScConfigInfo.Strings);
  202. for I := 0 to FLibNameList.Count - 1 do
  203. begin
  204. sFileName := ChangeFileExt(ExtractFileName(FLibNameList[I]), '');
  205. if (Pos('分项清单', sFileName) <> 0) or (Pos('项目清单', sFileName) <> 0) then
  206. cbFileName.Items.Add(sFileName)
  207. else if Pos('工程量清单', sFileName) <> 0 then
  208. begin
  209. cbbBillsQtyLibs.Items.Add(sFileName);
  210. FBillsQtyLibs.Add(FLibNameList[I]);
  211. FLibNameList.Delete(I);
  212. end;
  213. end;
  214. TStdBillsCtrl(FStdBillsCtrl).FXQDManager.ConfigFileManager.AddLibsTo(cbFileName.Items, FLibNameList, 1);
  215. end;
  216. procedure TStdBillsLibFrm.zgBillsLibMouseDown(Sender: TObject;
  217. Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  218. begin
  219. // Modified by GiLi 2012-4-18 11:21:58
  220. // 标准项目表中双击编号时展开,双击名称列就添加到分段文件中。(取消右键添加)
  221. if (ssDouble in Shift) and (Button = mbLeft) then
  222. begin
  223. if not Assigned(FZjIDTree.Selected) then Exit;
  224. if zgBillsLib.CurCol = 0 then Exit;
  225. if (zgBillsLib.CurCol = 1) and FZjIDTree.Selected.HasChildren then
  226. begin
  227. FZjIDTree.Selected.Expanded := not FZjIDTree.Selected.Expanded;
  228. Exit;
  229. end
  230. else
  231. if (zgBillsLib.CurCol = 3) then
  232. {add Item operation}
  233. TStdBillsCtrl(FStdBillsCtrl).AddItem;
  234. end;
  235. end;
  236. procedure TStdBillsLibFrm.btnAddClick(Sender: TObject);
  237. var
  238. bShowProgressor: Boolean;
  239. begin
  240. // bShowProgressor := ShowProgressor;
  241. Screen.Cursor := crHourGlass;
  242. try
  243. if not TStdBillsCtrl(FStdBillsCtrl).AddItems(FSelList) then
  244. MessageError(Handle, '添加清单失败!!!');
  245. finally
  246. // HideProgressor(bShowProgressor);
  247. Screen.Cursor := crDefault;
  248. end;
  249. end;
  250. procedure TStdBillsLibFrm.SetDQDataSet(const Value: TDataSet);
  251. begin
  252. zaDrawingQuantity.DataSet := Value;
  253. end;
  254. procedure TStdBillsLibFrm.SetZjIDTree(const Value: TZjIDTree);
  255. begin
  256. FZjIDTree := Value;
  257. zaBillsLib.IDTree := FZjIDTree;
  258. end;
  259. procedure TStdBillsLibFrm.BeginUpdateUI(aType: Integer);
  260. begin
  261. case aType of
  262. 1: zaBillsLib.DataSet.DisableControls;
  263. 2: zaBillsQty.DataSet.DisableControls;
  264. end;
  265. end;
  266. procedure TStdBillsLibFrm.EndUpdateUI(aType: Integer);
  267. begin
  268. case aType of
  269. 1: zaBillsLib.DataSet.EnableControls;
  270. 2: zaBillsQty.DataSet.EnableControls;
  271. end;
  272. end;
  273. procedure TStdBillsLibFrm.FormClose(Sender: TObject;
  274. var Action: TCloseAction);
  275. begin
  276. DisplayStdBillsLib;
  277. end;
  278. procedure TStdBillsLibFrm.SetIncStep(const Value: Integer);
  279. begin
  280. end;
  281. function TStdBillsLibFrm.GetCheckCount(aSelList: TIntegerSList): Integer;
  282. var
  283. I: Integer;
  284. begin
  285. Result := 0;
  286. for I := 0 to FZjIDTree.Count - 1 do
  287. begin
  288. if aSelList[I] <> 0 then Inc(Result);
  289. end;
  290. end;
  291. procedure TStdBillsLibFrm.HideProgressor(aShow: Boolean);
  292. begin
  293. end;
  294. function TStdBillsLibFrm.ShowProgressor: Boolean;
  295. var
  296. iCount: Integer;
  297. begin
  298. { iCount := GetCheckCount(FSelList);
  299. Result := iCount > 100;
  300. if Result then
  301. begin
  302. FProgressor.SetMax(iCount);
  303. FProgressor.Show;
  304. end; }
  305. end;
  306. procedure TStdBillsLibFrm.SetBillsQtyTree(const Value: TZjIDTree);
  307. begin
  308. FBillsQtyTree := Value;
  309. zaBillsQty.IDTree := FBillsQtyTree;
  310. end;
  311. procedure TStdBillsLibFrm.cbbBillsQtyLibsChange(Sender: TObject);
  312. begin
  313. Screen.Cursor := crHourGlass;
  314. LockWindowUpdate(PageControl1.Handle);
  315. try
  316. FBillsQtyList.Clear;
  317. TStdBillsCtrl(FStdBillsCtrl).LoadBillsQtyLib(FBillsQtyLibs.Strings[cbbBillsQtyLibs.ItemIndex]);
  318. finally
  319. LockWindowUpdate(0);
  320. Screen.Cursor := crDefault;
  321. end;
  322. end;
  323. procedure TStdBillsLibFrm.zaBillsQtyGridGetCellText(Sender: TObject;
  324. const ACoord: TPoint; var Value: String);
  325. var
  326. OldActiveRec: Integer;
  327. begin
  328. if (ACoord.X = 0) and
  329. zaBillsQty.ChangeActiveRecord(ACoord.Y - zgBillsQty.FixedRowCount, OldActiveRec) then
  330. begin
  331. try
  332. Value := ZjBooleanStr(FBillsQtyList[ACoord.Y - zgBillsQty.FixedRowCount] <> 0);
  333. finally
  334. zaBillsQty.ChangeActiveRecord(OldActiveRec, OldActiveRec);
  335. end;
  336. end;
  337. end;
  338. procedure TStdBillsLibFrm.zaBillsQtyGridSetCellText(Sender: TObject;
  339. const ACoord: TPoint; var Value: String);
  340. procedure SelectChildren(ANode: TZjIDTreeNode; ASelected: Boolean);
  341. var
  342. I: Integer;
  343. begin
  344. if ANode.HasChildren then
  345. for I := ANode.MajorIndex + 1 to ANode.LastPosterity.MajorIndex do
  346. FBillsQtyList[I] := Ord(ASelected);
  347. end;
  348. var
  349. OldActiveRec: Integer;
  350. ID: Integer;
  351. Node: TZjIDTreeNode;
  352. begin
  353. Node := FBillsQtyTree.Selected;
  354. if Assigned(Node) and (ACoord.X = 0) then
  355. begin
  356. ID := Node.ID;
  357. FBillsQtyList[Node.MajorIndex] := Ord(ZjStrToBoolean(Value));
  358. SelectChildren(Node, ZjStrToBoolean(Value));
  359. zgBillsQty.InvalidateCol(0);
  360. end;
  361. end;
  362. procedure TStdBillsLibFrm.zgBillsQtyMouseDown(Sender: TObject;
  363. Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  364. begin
  365. if (ssDouble in Shift) and (Button = mbLeft) then
  366. begin
  367. if not Assigned(FBillsQtyTree.Selected) then Exit;
  368. if zgBillsQty.CurCol = 0 then Exit;
  369. if (zgBillsQty.CurCol <> 0) and FBillsQtyTree.Selected.HasChildren then
  370. begin
  371. FBillsQtyTree.Selected.Expanded := not FBillsQtyTree.Selected.Expanded;
  372. Exit;
  373. end;
  374. {add Item operation}
  375. TStdBillsCtrl(FStdBillsCtrl).AddBillsQtyItem;
  376. end;
  377. end;
  378. procedure TStdBillsLibFrm.btnAddQtyItemsClick(Sender: TObject);
  379. begin
  380. Screen.Cursor := crHourGlass;
  381. try
  382. if not TStdBillsCtrl(FStdBillsCtrl).AddBillsQtyItems(FBillsQtyList) then
  383. MessageError(Handle, '添加清单失败!!!');
  384. finally
  385. Screen.Cursor := crDefault;
  386. end;
  387. end;
  388. procedure TStdBillsLibFrm.InitView;
  389. begin
  390. PageControl1.ActivePageIndex := 0;
  391. zgBillsLib.Height := Round((Screen.Height - 150) * 0.65);
  392. end;
  393. procedure TStdBillsLibFrm.ShowPage(aPage: Integer);
  394. begin
  395. JimPages1.ActivePageIndex := aPage;
  396. Self.Show;
  397. Application.ProcessMessages;
  398. if aPage = 1 then
  399. begin
  400. Screen.Cursor := crHourGlass;
  401. zgQtyItems.BeginUpdate;
  402. zaQtyItems.DataSet := nil;
  403. // zaQtyItems.DisableControl(True);
  404. try
  405. TStdBillsCtrl(FStdBillsCtrl).RefreshBills;
  406. finally
  407. zaQtyItems.DataSet := TStdBillsCtrl(FStdBillsCtrl).BillsLocateDM.cdsQBItems;
  408. // zaQtyItems.EnableControl;
  409. zgQtyItems.EndUpdate;
  410. Screen.Cursor := crDefault;
  411. end;
  412. end;
  413. end;
  414. function TStdBillsLibFrm.GetPageIdx: Integer;
  415. begin
  416. Result := JimPages1.ActivePageIndex;
  417. end;
  418. procedure TStdBillsLibFrm.SetQtyItemDataSet(const Value: TDataSet);
  419. begin
  420. zaQtyItems.DataSet := Value;
  421. end;
  422. procedure TStdBillsLibFrm.btnRefreshClick(Sender: TObject);
  423. begin
  424. Screen.Cursor := crHourGlass;
  425. zgQtyItems.BeginUpdate;
  426. // zaQtyItems.DisableControl(True);
  427. zaQtyItems.DataSet := nil;
  428. try
  429. TStdBillsCtrl(FStdBillsCtrl).RefreshBills;
  430. finally
  431. zaQtyItems.DataSet := TStdBillsCtrl(FStdBillsCtrl).BillsLocateDM.cdsQBItems;
  432. // zaQtyItems.EnableControl;
  433. zgQtyItems.EndUpdate;
  434. Screen.Cursor := crDefault;
  435. end;
  436. end;
  437. procedure TStdBillsLibFrm.btnLocateClick(Sender: TObject);
  438. begin
  439. TStdBillsCtrl(FStdBillsCtrl).LocateBills;
  440. end;
  441. procedure TStdBillsLibFrm.letBCodeChange(Sender: TObject);
  442. begin
  443. TStdBillsCtrl(FStdBillsCtrl).FindFirstBills(letBCode.Text);
  444. end;
  445. procedure TStdBillsLibFrm.zgQtyItemsMouseDown(Sender: TObject;
  446. Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  447. begin
  448. if (Button = mbLeft) and (ssDouble in Shift) then
  449. TStdBillsCtrl(FStdBillsCtrl).LocateBills;
  450. end;
  451. procedure TStdBillsLibFrm.AddLib(const aShortName: string;
  452. aFileFlag: Integer);
  453. var
  454. sLibFile: string;
  455. begin
  456. sLibFile := TStdBillsCtrl(FStdBillsCtrl).FXQDManager.GenerateLibName(aShortName);
  457. if aFileFlag = 1 then
  458. begin
  459. cbFileName.Items.Add(aShortName);
  460. FLibNameList.Add(sLibFile);
  461. end
  462. else
  463. begin
  464. end;
  465. end;
  466. procedure TStdBillsLibFrm.DeleteLib(const aShortName: string; aFileFlag: Integer);
  467. var
  468. iIdx: Integer;
  469. sLibFile: string;
  470. begin
  471. sLibFile := TStdBillsCtrl(FStdBillsCtrl).FXQDManager.GenerateLibName(aShortName);
  472. if aFileFlag = 1 then
  473. begin
  474. iIdx := cbFileName.Items.IndexOf(aShortName);
  475. if iIdx > -1 then
  476. begin
  477. cbFileName.Items.Delete(iIdx);
  478. FLibNameList.Delete(iIdx);
  479. end;
  480. end
  481. else
  482. begin
  483. end;
  484. end;
  485. procedure TStdBillsLibFrm.ReNameLib(const aOldName, aNewName: string; aFileFlag: Integer);
  486. var
  487. iIdx: Integer;
  488. sLibFile: string;
  489. begin
  490. sLibFile := TStdBillsCtrl(FStdBillsCtrl).FXQDManager.GenerateLibName(aNewName);
  491. if aFileFlag = 1 then
  492. begin
  493. iIdx := cbFileName.Items.IndexOf(aOldName);
  494. if iIdx > -1 then
  495. begin
  496. cbFileName.Items[iIdx] := aNewName;
  497. FLibNameList[iIdx] := sLibFile;
  498. end;
  499. end
  500. else
  501. begin
  502. end;
  503. end;
  504. procedure TStdBillsLibFrm.btnCloseClick(Sender: TObject);
  505. begin
  506. Screen.Cursor := crHourGlass;
  507. try
  508. CloseLib(TButton(Sender).Tag);
  509. finally
  510. Screen.Cursor := crDefault;
  511. end;
  512. end;
  513. procedure TStdBillsLibFrm.CloseLib(aFileFlag: Integer);
  514. begin
  515. TStdBillsCtrl(FStdBillsCtrl).DMStdBillsLib.CloseLib(aFileFlag);
  516. if aFileFlag = 1 then
  517. begin
  518. cbFileName.ItemIndex := -1;
  519. FOpenLibName := '';
  520. end
  521. else
  522. cbbBillsQtyLibs.ItemIndex := -1;
  523. end;
  524. procedure TStdBillsLibFrm.ldeFindByCodeChange(Sender: TObject);
  525. begin
  526. FFindIndex := 0;
  527. FindRecord(FFindIndex, ldeFindByCode.Text, ldeFindByName.Text);
  528. end;
  529. procedure TStdBillsLibFrm.FindRecord(var aIndex: Integer;
  530. const aCode, aName: string);
  531. begin
  532. if aIndex >= FZjIDTree.Count then Exit;
  533. TStdBillsCtrl(FStdBillsCtrl).DMStdBillsLib.FindRecord(FZjIDTree.Items[aIndex], aCode, aName);
  534. aIndex := FZjIDTree.SelectedIndex;
  535. end;
  536. procedure TStdBillsLibFrm.btnFindNextClick(Sender: TObject);
  537. begin
  538. Inc(FFindIndex);
  539. FindRecord(FFindIndex, ldeFindByCode.Text, ldeFindByName.Text);
  540. end;
  541. procedure TStdBillsLibFrm.zaBillsLibGridSetCellText(Sender: TObject;
  542. const ACoord: TPoint; var Value: String);
  543. procedure SelectChildren(ANode: TZjIDTreeNode; ASelected: Boolean);
  544. var
  545. I: Integer;
  546. begin
  547. if ANode.HasChildren then
  548. for I := ANode.MajorIndex + 1 to ANode.LastPosterity.MajorIndex do
  549. FSelList[I] := Ord(ASelected);
  550. end;
  551. var
  552. OldActiveRec: Integer;
  553. ID: Integer;
  554. Node: TZjIDTreeNode;
  555. begin
  556. Node := FZjIDTree.Selected;
  557. if Assigned(Node) and (ACoord.X = 0) then
  558. begin
  559. ID := Node.ID;
  560. FSelList[Node.MajorIndex] := Ord(ZjStrToBoolean(Value));
  561. SelectChildren(Node, ZjStrToBoolean(Value));
  562. zgBillsLib.InvalidateCol(0);
  563. end;
  564. end;
  565. procedure TStdBillsLibFrm.SetQtyDQDataSet(const Value: TDataSet);
  566. begin
  567. zaQtyDrawingItems.DataSet := Value;
  568. end;
  569. procedure TStdBillsLibFrm.DoOnGridCellCanDownLevel(Sender: TObject;
  570. const ACoord: TPoint; var Allow: Boolean);
  571. begin
  572. Allow := False;
  573. end;
  574. procedure TStdBillsLibFrm.DoOnGridCellCanUpLevel(Sender: TObject;
  575. const ACoord: TPoint; var Allow: Boolean);
  576. begin
  577. Allow := False;
  578. end;
  579. procedure TStdBillsLibFrm.ClearFilter;
  580. begin
  581. letBCode.Text := '';
  582. end;
  583. // Added by GiLi 2012-3-19 11:35:41
  584. // 右键菜单 添加当前项到清单
  585. procedure TStdBillsLibFrm.N1Click(Sender: TObject);
  586. begin
  587. if not Assigned(FZjIDTree.Selected) then Exit;
  588. if zgBillsLib.CurCol = 0 then Exit;
  589. TStdBillsCtrl(FStdBillsCtrl).AddItem;
  590. end;
  591. // Added by GiLi 2012-3-19 12:07:50
  592. // 展开
  593. procedure TStdBillsLibFrm.N3Click(Sender: TObject);
  594. begin
  595. if not Assigned(FZjIDTree.Selected) then Exit;
  596. if zgBillsLib.CurCol = 0 then Exit;
  597. if (zgBillsLib.CurCol <> 0) and FZjIDTree.Selected.HasChildren then
  598. begin
  599. FZjIDTree.Selected.Expanded := True;
  600. end;
  601. end;
  602. // Added by GiLi 2012-3-19 12:07:57
  603. // 关闭展开
  604. procedure TStdBillsLibFrm.N4Click(Sender: TObject);
  605. begin
  606. if not Assigned(FZjIDTree.Selected) then Exit;
  607. if zgBillsLib.CurCol = 0 then Exit;
  608. if (zgBillsLib.CurCol <> 0) and FZjIDTree.Selected.HasChildren then
  609. begin
  610. FZjIDTree.Selected.Expanded := False;
  611. end;
  612. end;
  613. procedure TStdBillsLibFrm.btnViewToLevelsClick(Sender: TObject);
  614. var
  615. P: TPoint;
  616. begin
  617. P := ToolBar1.ClientToScreen(
  618. Point(btnViewToLevels.Left, btnViewToLevels.Top + btnViewToLevels.Height));
  619. dxpmStdShowLevel.Popup(P.X, P.Y);
  620. end;
  621. procedure TStdBillsLibFrm.zgBillsLibCellGetColor(Sender: TObject;
  622. ACoord: TPoint; var AColor: TColor);
  623. begin
  624. if ACoord.Y = zgBillsLib.CurRow then
  625. AColor := $F0CAA6;
  626. end;
  627. end.