ZJJLFme.pas 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  1. unit ZJJLFme;
  2. interface
  3. uses
  4. ZJJLDm,
  5. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  6. Dialogs, ExtCtrls, StdCtrls, DBCtrls, Mask, JimLabels, DB, ComCtrls,
  7. ToolWin, ActnList, ZjGridDBA, ZJGrid, dxBar;
  8. type
  9. TZJJLFrame = class(TFrame)
  10. labTitle: TJimGradLabel;
  11. alBGL: TActionList;
  12. actnGenerate: TAction;
  13. pnlTop: TPanel;
  14. pnlButton: TPanel;
  15. tobaTop: TToolBar;
  16. tobtnGenerate: TToolButton;
  17. lePreText: TLabeledEdit;
  18. zaZJJL: TZjGridDBA;
  19. pnlZJJL: TPanel;
  20. zgZJJL: TZJGrid;
  21. pnlListTitle: TPanel;
  22. pnlListBar: TPanel;
  23. lblListTitle: TLabel;
  24. pnlZJJLProperty: TPanel;
  25. pnlDataTitle: TPanel;
  26. lblDataTiel: TLabel;
  27. pnlDataBar: TPanel;
  28. dxpmZJJL: TdxBarPopupMenu;
  29. actnLocateBills: TAction;
  30. dxpmAutoGenerate: TdxBarPopupMenu;
  31. actnGenerateFxZJJL: TAction;
  32. actnGenerateGclZJJL: TAction;
  33. procedure actnGenerateExecute(Sender: TObject);
  34. procedure lePreTextExit(Sender: TObject);
  35. procedure zgZJJLMouseDown(Sender: TObject; Button: TMouseButton;
  36. Shift: TShiftState; X, Y: Integer);
  37. procedure dxpmZJJLPopup(Sender: TObject);
  38. procedure actnLocateBillsExecute(Sender: TObject);
  39. procedure actnLocateBillsUpdate(Sender: TObject);
  40. procedure dxpmAutoGeneratePopup(Sender: TObject);
  41. procedure actnGenerateFxZJJLExecute(Sender: TObject);
  42. procedure actnGenerateGclZJJLExecute(Sender: TObject);
  43. procedure actnGenerateUpdate(Sender: TObject);
  44. private
  45. FZJJLData: TZJJLData;
  46. FDataReadOnly: Boolean;
  47. procedure SetDataReadOnly(const Value: Boolean);
  48. procedure RefreshTitle;
  49. procedure GenerateZJJL;
  50. public
  51. constructor Create(AParent: TFrame; AZJJLData: TZJJLData);
  52. destructor Destroy; override;
  53. procedure ResetFrameLink(AZJJLData: TZJJLData);
  54. property DataReadOnly: Boolean read FDataReadOnly write SetDataReadOnly;
  55. end;
  56. implementation
  57. uses
  58. MergeTextFrm, PhaseData, MainFrm, ProjectData, UtilMethods,
  59. PhaseProperty;
  60. {$R *.dfm}
  61. { TZJJLFrame }
  62. constructor TZJJLFrame.Create(AParent: TFrame; AZJJLData: TZJJLData);
  63. begin
  64. inherited Create(AParent);
  65. ResetFrameLink(AZJJLData);
  66. with TProjectData(TPhaseData(FZJJLData.PhaseData).ProjectData) do
  67. lePreText.Text := ProjProperties.ZJJLPreText;
  68. RefreshTitle;
  69. end;
  70. destructor TZJJLFrame.Destroy;
  71. begin
  72. inherited;
  73. end;
  74. procedure TZJJLFrame.ResetFrameLink(AZJJLData: TZJJLData);
  75. begin
  76. FZJJLData := AZJJLData;
  77. zaZJJL.DataSet := FZJJLData.cdsZJJLView;
  78. AlignControl(FZJJLData.DetailGrid, pnlZJJLProperty, alClient);
  79. end;
  80. procedure TZJJLFrame.actnGenerateExecute(Sender: TObject);
  81. var
  82. bIsRefer: Boolean;
  83. P: TPoint;
  84. begin
  85. with TProjectData(TPhaseData(FZJJLData.PhaseData).ProjectData) do
  86. bIsRefer := ProjProperties.AuditStatus = 0;
  87. if bIsRefer then
  88. begin
  89. P := pnlButton.ClientToScreen(Point(tobtnGenerate.Left, tobtnGenerate.Top + tobtnGenerate.Height));
  90. dxpmAutoGenerate.Popup(P.X, P.Y);
  91. end
  92. else
  93. GenerateZJJL;
  94. end;
  95. procedure TZJJLFrame.lePreTextExit(Sender: TObject);
  96. begin
  97. with TProjectData(TPhaseData(FZJJLData.PhaseData).ProjectData) do
  98. ProjProperties.ZJJLPreText := lePreText.Text;
  99. end;
  100. procedure TZJJLFrame.SetDataReadOnly(const Value: Boolean);
  101. begin
  102. FDataReadOnly := Value;
  103. actnGenerate.Enabled := not FDataReadOnly;
  104. lePreText.Enabled := not FDataReadOnly;
  105. zaZJJL.Column('Code').ReadOnly := FDataReadOnly;
  106. zaZJJL.Column('CertificateCode').ReadOnly := FDataReadOnly;
  107. end;
  108. procedure TZJJLFrame.zgZJJLMouseDown(Sender: TObject; Button: TMouseButton;
  109. Shift: TShiftState; X, Y: Integer);
  110. begin
  111. if Button = mbRight then
  112. dxpmZJJL.PopupFromCursorPos
  113. else if (ssDouble in Shift) and (zgZJJL.CurCol = 3) then
  114. begin
  115. if FZJJLData.cdsZJJLView.RecordCount > 0 then
  116. FZJJLData.LocateBills;
  117. end;
  118. end;
  119. procedure TZJJLFrame.dxpmZJJLPopup(Sender: TObject);
  120. begin
  121. SetDxBtnAction(actnLocateBills, MainForm.dxbtnLocateBills);
  122. end;
  123. procedure TZJJLFrame.actnLocateBillsExecute(Sender: TObject);
  124. begin
  125. FZJJLData.LocateBills;
  126. end;
  127. procedure TZJJLFrame.actnLocateBillsUpdate(Sender: TObject);
  128. begin
  129. TAction(Sender).Enabled := FZJJLData.cdsZJJLView.RecordCount > 0;
  130. end;
  131. procedure TZJJLFrame.RefreshTitle;
  132. var
  133. iType: Integer;
  134. begin
  135. if not TPhaseData(FZJJLData.PhaseData).Active then Exit;
  136. iType := TPhaseData(FZJJLData.PhaseData).PhaseProperty.ZJJLType;
  137. case iType of
  138. 0: labTitle.Caption := '中间计量(0号台账)';
  139. 1: labTitle.Caption := '中间计量(总量控制)';
  140. end;
  141. end;
  142. procedure TZJJLFrame.dxpmAutoGeneratePopup(Sender: TObject);
  143. begin
  144. SetDxBtnAction(actnGenerateFxZJJL, MainForm.dxbtnFxZJJL);
  145. SetDxBtnAction(actnGenerateGclZJJL, MainForm.dxbtnGclZJJL);
  146. end;
  147. procedure TZJJLFrame.actnGenerateFxZJJLExecute(Sender: TObject);
  148. begin
  149. with TPhaseData(FZJJLData.PhaseData).PhaseProperty do
  150. ZJJLType := 0;
  151. GenerateZJJL;
  152. end;
  153. procedure TZJJLFrame.GenerateZJJL;
  154. var
  155. iType: Integer;
  156. begin
  157. with TProjectData(TPhaseData(FZJJLData.PhaseData).ProjectData) do
  158. ProjProperties.ZJJLPreText := lePreText.Text;
  159. iType := TPhaseData(FZJJLData.PhaseData).PhaseProperty.ZJJLType;
  160. case iType of
  161. 0: FZJJLData.GenerateAll;
  162. 1: FZJJLData.GenerateAllByB_Code;
  163. end;
  164. FZJJLData.AssignedCurData;
  165. RefreshTitle;
  166. end;
  167. procedure TZJJLFrame.actnGenerateGclZJJLExecute(Sender: TObject);
  168. begin
  169. with TPhaseData(FZJJLData.PhaseData).PhaseProperty do
  170. ZJJLType := 1;
  171. GenerateZJJL;
  172. end;
  173. procedure TZJJLFrame.actnGenerateUpdate(Sender: TObject);
  174. begin
  175. with TProjectData(TPhaseData(FZJJLData.PhaseData).ProjectData) do
  176. TAction(Sender).Enabled := not StageDataReadOnly;
  177. end;
  178. end.