ProjectGLFme.pas 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. unit ProjectGLFme;
  2. interface
  3. uses
  4. ProjectGLDm,
  5. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  6. Dialogs, sdGridDBA, ZJGrid, dxBar, ActnList;
  7. type
  8. TProjectGLFrame = class(TFrame)
  9. zgProjectGL: TZJGrid;
  10. saProjectGL: TsdGridDBA;
  11. dxpmProjectGL: TdxBarPopupMenu;
  12. actnProjectGL: TActionList;
  13. actnCalculatePriceMargin: TAction;
  14. procedure zgProjectGLMouseDown(Sender: TObject; Button: TMouseButton;
  15. Shift: TShiftState; X, Y: Integer);
  16. procedure dxpmProjectGLPopup(Sender: TObject);
  17. procedure actnCalculatePriceMarginExecute(Sender: TObject);
  18. private
  19. FProjectGLData: TProjectGLData;
  20. public
  21. constructor Create(AProjectGLData: TProjectGLData);
  22. destructor Destroy; override;
  23. procedure ResetViewControl;
  24. end;
  25. implementation
  26. uses
  27. ProjectData, MainFrm, UtilMethods;
  28. {$R *.dfm}
  29. { TProjectGLFrame }
  30. constructor TProjectGLFrame.Create(AProjectGLData: TProjectGLData);
  31. begin
  32. inherited Create(nil);
  33. FProjectGLData := AProjectGLData;
  34. saProjectGL.DataView := FProjectGLData.sdvProjectGL;
  35. ResetViewControl;
  36. end;
  37. destructor TProjectGLFrame.Destroy;
  38. begin
  39. inherited;
  40. end;
  41. procedure TProjectGLFrame.ResetViewControl;
  42. begin
  43. with TProjectData(FProjectGLData.ProjectData) do
  44. begin
  45. saProjectGL.Columns.ColumnByName('InfoPrice').ReadOnly := PriceMarginReadOnly;
  46. saProjectGL.Columns.ColumnByName('InfoDate').ReadOnly := PriceMarginReadOnly;
  47. end;
  48. end;
  49. procedure TProjectGLFrame.zgProjectGLMouseDown(Sender: TObject;
  50. Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  51. begin
  52. if Button = mbRight then
  53. dxpmProjectGL.PopupFromCursorPos;
  54. end;
  55. procedure TProjectGLFrame.dxpmProjectGLPopup(Sender: TObject);
  56. begin
  57. SetDxBtnAction(actnCalculatePriceMargin, MainForm.dxbtnCalculatePriceMargin);
  58. end;
  59. procedure TProjectGLFrame.actnCalculatePriceMarginExecute(Sender: TObject);
  60. begin
  61. if TProjectData(FProjectGLData.ProjectData).PhaseData.StageDataReadOnly then
  62. TipMessage('历史数据不可重新计算。')
  63. else
  64. TProjectData(FProjectGLData.ProjectData).CalculatePriceMargin;
  65. end;
  66. end.