StandardBillsFme.pas 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. unit StandardBillsFme;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5. Dialogs, XPMenu, ZjGridDBA, ZjGridTreeDBA, ZJGrid, StdCtrls, Buttons,
  6. ExtCtrls, StandardLibs, StandardLib, ActnList, dxBar, sdGridDBA,
  7. sdGridTreeDBA;
  8. type
  9. TBillsType = (btXm, btGcl);
  10. TStandardBillsFrame = class(TFrame)
  11. pnlTop: TPanel;
  12. spbtnLibs: TSpeedButton;
  13. edtLibName: TEdit;
  14. zgBills: TZJGrid;
  15. xpm: TXPMenu;
  16. ActionList1: TActionList;
  17. dxpmStandardBills: TdxBarPopupMenu;
  18. actnInsertBillsFromLib: TAction;
  19. stdBills: TsdGridTreeDBA;
  20. procedure actnInsertBillsFromLibExecute(Sender: TObject);
  21. procedure zgBillsMouseDown(Sender: TObject; Button: TMouseButton;
  22. Shift: TShiftState; X, Y: Integer);
  23. private
  24. FStandardLibs: TStandardLibs;
  25. FBillsType: TBillsType;
  26. procedure SetBillsType(const Value: TBillsType);
  27. function GetStandardLib: TStandardLib;
  28. procedure AdjustColumnType;
  29. public
  30. constructor Create(AStandardLibs: TStandardLibs);
  31. procedure ConnectStandardLib;
  32. property BillsType: TBillsType read FBillsType write SetBillsType;
  33. property StandardLib: TStandardLib read GetStandardLib;
  34. end;
  35. implementation
  36. uses
  37. SupportUnit, Globals;
  38. {$R *.dfm}
  39. { TStandBillsFrame }
  40. procedure TStandardBillsFrame.AdjustColumnType;
  41. procedure AdjustXmColumnType;
  42. begin
  43. stdBills.Columns.Delete(stdBills.ColumnIndex('B_Code'));
  44. end;
  45. procedure AdjustGclColumnType;
  46. begin
  47. stdBills.Columns.Delete(stdBills.ColumnIndex('Code'));
  48. end;
  49. begin
  50. if FBillsType = btXm then
  51. AdjustXmColumnType
  52. else if FBillsType = btGcl then
  53. AdjustGclColumnType;
  54. end;
  55. procedure TStandardBillsFrame.ConnectStandardLib;
  56. begin
  57. stdBills.IDTree := StandardLib.StandardBillsData.BillsTree;
  58. edtLibName.Text := StandardLib.LibName;
  59. end;
  60. constructor TStandardBillsFrame.Create(AStandardLibs: TStandardLibs);
  61. begin
  62. inherited Create(nil);
  63. FStandardLibs := AStandardLibs;
  64. stdBills.TopLevelBold := False;
  65. end;
  66. function TStandardBillsFrame.GetStandardLib: TStandardLib;
  67. begin
  68. case FBillsType of
  69. btXm: Result := FStandardLibs.StandardXmLib;
  70. btGcl: Result := FStandardLibs.StandardGclLib;
  71. end;
  72. end;
  73. procedure TStandardBillsFrame.SetBillsType(const Value: TBillsType);
  74. begin
  75. FBillsType := Value;
  76. AdjustColumnType;
  77. end;
  78. procedure TStandardBillsFrame.zgBillsMouseDown(Sender: TObject;
  79. Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  80. begin
  81. if Button = mbRight then
  82. dxpmStandardBills.PopupFromCursorPos
  83. else if (Button = mbLeft) and (ssDouble in Shift) then
  84. actnInsertBillsFromLib.Execute;
  85. end;
  86. procedure TStandardBillsFrame.actnInsertBillsFromLibExecute(
  87. Sender: TObject);
  88. begin
  89. with OpenProjectManager.CurProjectData.BillsCompileData do
  90. if Assigned(stdBills.IDTree.Selected) then
  91. AddBillsFromLib(stdBills.IDTree.Selected, BillsType);
  92. end;
  93. end.