ProjectGLFme.pas 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. unit ProjectGLFme;
  2. // 2016.8.18 真的是理解不来这家公司,看在钱的面子上,拿人钱财替人消灾。
  3. interface
  4. uses
  5. ProjectGLDm,
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, sdGridDBA, ZJGrid, dxBar, ActnList;
  8. type
  9. TProjectGLFrame = class(TFrame)
  10. zgProjectGL: TZJGrid;
  11. saProjectGL: TsdGridDBA;
  12. dxpmProjectGL: TdxBarPopupMenu;
  13. actnProjectGL: TActionList;
  14. actnCalculatePriceMargin: TAction;
  15. saGather: TsdGridDBA;
  16. zgGather: TZJGrid;
  17. procedure zgProjectGLMouseDown(Sender: TObject; Button: TMouseButton;
  18. Shift: TShiftState; X, Y: Integer);
  19. procedure dxpmProjectGLPopup(Sender: TObject);
  20. procedure actnCalculatePriceMarginExecute(Sender: TObject);
  21. private
  22. FProjectGLData: TProjectGLData;
  23. public
  24. constructor Create(AProjectGLData: TProjectGLData);
  25. destructor Destroy; override;
  26. procedure ResetViewControl;
  27. end;
  28. implementation
  29. uses
  30. ProjectData, MainFrm, UtilMethods;
  31. {$R *.dfm}
  32. { TProjectGLFrame }
  33. constructor TProjectGLFrame.Create(AProjectGLData: TProjectGLData);
  34. begin
  35. inherited Create(nil);
  36. FProjectGLData := AProjectGLData;
  37. saProjectGL.DataView := FProjectGLData.sdvProjectGL;
  38. saGather.DataView := FProjectGLData.sdvGather;
  39. ResetViewControl;
  40. end;
  41. destructor TProjectGLFrame.Destroy;
  42. begin
  43. inherited;
  44. end;
  45. procedure TProjectGLFrame.ResetViewControl;
  46. var
  47. AReadOnly: Boolean;
  48. begin
  49. with TProjectData(FProjectGLData.ProjectData) do
  50. AReadOnly := PriceMarginReadOnly;
  51. saProjectGL.Columns.ColumnByName('Code').ReadOnly := AReadOnly;
  52. saProjectGL.Columns.ColumnByName('Name').ReadOnly := AReadOnly;
  53. saProjectGL.Columns.ColumnByName('Units').ReadOnly := AReadOnly;
  54. saProjectGL.Columns.ColumnByName('Specs').ReadOnly := AReadOnly;
  55. saProjectGL.Columns.ColumnByName('BasePrice').ReadOnly := AReadOnly;
  56. saProjectGL.Columns.ColumnByName('RiskRange').ReadOnly := AReadOnly;
  57. saProjectGL.Columns.ColumnByName('InfoPrice').ReadOnly := AReadOnly;
  58. saProjectGL.Columns.ColumnByName('InfoDate').ReadOnly := AReadOnly;
  59. if AReadOnly then
  60. saProjectGL.Options := saProjectGL.Options - [aoAllowInsert, aoAllowDelete]
  61. else
  62. saProjectGL.Options := saProjectGL.Options + [aoAllowInsert, aoAllowDelete];
  63. end;
  64. procedure TProjectGLFrame.zgProjectGLMouseDown(Sender: TObject;
  65. Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  66. begin
  67. if Button = mbRight then
  68. dxpmProjectGL.PopupFromCursorPos;
  69. end;
  70. procedure TProjectGLFrame.dxpmProjectGLPopup(Sender: TObject);
  71. begin
  72. SetDxBtnAction(actnCalculatePriceMargin, MainForm.dxbtnCalculatePriceMargin);
  73. end;
  74. procedure TProjectGLFrame.actnCalculatePriceMarginExecute(Sender: TObject);
  75. begin
  76. if TProjectData(FProjectGLData.ProjectData).PhaseData.StageDataReadOnly then
  77. TipMessage('历史数据不可重新计算。')
  78. else
  79. TProjectData(FProjectGLData.ProjectData).CalculatePriceMargin;
  80. end;
  81. end.