ProjectGLFme.pas 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  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. var
  43. AReadOnly: Boolean;
  44. begin
  45. with TProjectData(FProjectGLData.ProjectData) do
  46. AReadOnly := PriceMarginReadOnly;
  47. saProjectGL.Columns.ColumnByName('Code').ReadOnly := AReadOnly;
  48. saProjectGL.Columns.ColumnByName('Name').ReadOnly := AReadOnly;
  49. saProjectGL.Columns.ColumnByName('Units').ReadOnly := AReadOnly;
  50. saProjectGL.Columns.ColumnByName('Specs').ReadOnly := AReadOnly;
  51. saProjectGL.Columns.ColumnByName('BasePrice').ReadOnly := AReadOnly;
  52. saProjectGL.Columns.ColumnByName('RiskRange').ReadOnly := AReadOnly;
  53. saProjectGL.Columns.ColumnByName('InfoPrice').ReadOnly := AReadOnly;
  54. saProjectGL.Columns.ColumnByName('InfoDate').ReadOnly := AReadOnly;
  55. if AReadOnly then
  56. saProjectGL.Options := saProjectGL.Options - [aoAllowInsert, aoAllowDelete]
  57. else
  58. saProjectGL.Options := saProjectGL.Options + [aoAllowInsert, aoAllowDelete];
  59. end;
  60. procedure TProjectGLFrame.zgProjectGLMouseDown(Sender: TObject;
  61. Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  62. begin
  63. if Button = mbRight then
  64. dxpmProjectGL.PopupFromCursorPos;
  65. end;
  66. procedure TProjectGLFrame.dxpmProjectGLPopup(Sender: TObject);
  67. begin
  68. SetDxBtnAction(actnCalculatePriceMargin, MainForm.dxbtnCalculatePriceMargin);
  69. end;
  70. procedure TProjectGLFrame.actnCalculatePriceMarginExecute(Sender: TObject);
  71. begin
  72. if TProjectData(FProjectGLData.ProjectData).PhaseData.StageDataReadOnly then
  73. TipMessage('历史数据不可重新计算。')
  74. else
  75. TProjectData(FProjectGLData.ProjectData).CalculatePriceMargin;
  76. end;
  77. end.