ZJJLFme.pas 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  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. rgType: TRadioGroup;
  30. actnLocateBills: TAction;
  31. procedure actnGenerateExecute(Sender: TObject);
  32. procedure lePreTextExit(Sender: TObject);
  33. procedure zgZJJLMouseDown(Sender: TObject; Button: TMouseButton;
  34. Shift: TShiftState; X, Y: Integer);
  35. procedure dxpmZJJLPopup(Sender: TObject);
  36. procedure actnLocateBillsExecute(Sender: TObject);
  37. procedure actnLocateBillsUpdate(Sender: TObject);
  38. private
  39. FZJJLData: TZJJLData;
  40. FDataReadOnly: Boolean;
  41. procedure SetDataReadOnly(const Value: Boolean);
  42. public
  43. constructor Create(AParent: TFrame; AZJJLData: TZJJLData);
  44. destructor Destroy; override;
  45. procedure ResetFrameLink(AZJJLData: TZJJLData);
  46. property DataReadOnly: Boolean read FDataReadOnly write SetDataReadOnly;
  47. end;
  48. implementation
  49. uses
  50. MergeTextFrm, PhaseData, MainFrm, ProjectData, UtilMethods;
  51. {$R *.dfm}
  52. { TZJJLFrame }
  53. constructor TZJJLFrame.Create(AParent: TFrame; AZJJLData: TZJJLData);
  54. begin
  55. inherited Create(AParent);
  56. ResetFrameLink(AZJJLData);
  57. with TProjectData(TPhaseData(FZJJLData.PhaseData).ProjectData) do
  58. lePreText.Text := ProjProperties.ZJJLPreText;
  59. end;
  60. destructor TZJJLFrame.Destroy;
  61. begin
  62. inherited;
  63. end;
  64. procedure TZJJLFrame.ResetFrameLink(AZJJLData: TZJJLData);
  65. begin
  66. FZJJLData := AZJJLData;
  67. zaZJJL.DataSet := FZJJLData.cdsZJJLView;
  68. AlignControl(FZJJLData.DetailGrid, pnlZJJLProperty, alClient);
  69. end;
  70. procedure TZJJLFrame.actnGenerateExecute(Sender: TObject);
  71. begin
  72. with TProjectData(TPhaseData(FZJJLData.PhaseData).ProjectData) do
  73. ProjProperties.ZJJLPreText := lePreText.Text;
  74. if rgType.ItemIndex = 0 then
  75. FZJJLData.GenerateAll
  76. else if rgType.ItemIndex = 1 then
  77. FZJJLData.GenerateAllByB_Code;
  78. FZJJLData.AssignedCurData;
  79. end;
  80. procedure TZJJLFrame.lePreTextExit(Sender: TObject);
  81. begin
  82. with TProjectData(TPhaseData(FZJJLData.PhaseData).ProjectData) do
  83. ProjProperties.ZJJLPreText := lePreText.Text;
  84. end;
  85. procedure TZJJLFrame.SetDataReadOnly(const Value: Boolean);
  86. begin
  87. FDataReadOnly := Value;
  88. actnGenerate.Enabled := not FDataReadOnly;
  89. lePreText.Enabled := not FDataReadOnly;
  90. rgType.Enabled := not FDataReadOnly;
  91. zaZJJL.Column('Code').ReadOnly := FDataReadOnly;
  92. zaZJJL.Column('CertificateCode').ReadOnly := FDataReadOnly;
  93. end;
  94. procedure TZJJLFrame.zgZJJLMouseDown(Sender: TObject; Button: TMouseButton;
  95. Shift: TShiftState; X, Y: Integer);
  96. begin
  97. if Button = mbRight then
  98. dxpmZJJL.PopupFromCursorPos
  99. else if (ssDouble in Shift) and (zgZJJL.CurCol = 3) then
  100. begin
  101. if FZJJLData.cdsZJJLView.RecordCount > 0 then
  102. FZJJLData.LocateBills;
  103. end;
  104. end;
  105. procedure TZJJLFrame.dxpmZJJLPopup(Sender: TObject);
  106. begin
  107. SetDxBtnAction(actnLocateBills, MainForm.dxbtnLocateBills);
  108. end;
  109. procedure TZJJLFrame.actnLocateBillsExecute(Sender: TObject);
  110. begin
  111. FZJJLData.LocateBills;
  112. end;
  113. procedure TZJJLFrame.actnLocateBillsUpdate(Sender: TObject);
  114. begin
  115. TAction(Sender).Enabled := FZJJLData.cdsZJJLView.RecordCount > 0;
  116. end;
  117. end.