| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | unit ProjectGLFme;interfaceuses  ProjectGLDm,  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, sdGridDBA, ZJGrid, dxBar, ActnList;type  TProjectGLFrame = class(TFrame)    zgProjectGL: TZJGrid;    saProjectGL: TsdGridDBA;    dxpmProjectGL: TdxBarPopupMenu;    actnProjectGL: TActionList;    actnCalculatePriceMargin: TAction;    procedure zgProjectGLMouseDown(Sender: TObject; Button: TMouseButton;      Shift: TShiftState; X, Y: Integer);    procedure dxpmProjectGLPopup(Sender: TObject);    procedure actnCalculatePriceMarginExecute(Sender: TObject);  private    FProjectGLData: TProjectGLData;  public    constructor Create(AProjectGLData: TProjectGLData);    destructor Destroy; override;    procedure ResetViewControl;  end;implementationuses  ProjectData, MainFrm, UtilMethods;{$R *.dfm}{ TProjectGLFrame }constructor TProjectGLFrame.Create(AProjectGLData: TProjectGLData);begin  inherited Create(nil);  FProjectGLData := AProjectGLData;  saProjectGL.DataView := FProjectGLData.sdvProjectGL;  ResetViewControl;end;destructor TProjectGLFrame.Destroy;begin  inherited;end;procedure TProjectGLFrame.ResetViewControl;var  AReadOnly: Boolean;begin  with TProjectData(FProjectGLData.ProjectData) do    AReadOnly := PriceMarginReadOnly;  saProjectGL.Columns.ColumnByName('Code').ReadOnly := AReadOnly;  saProjectGL.Columns.ColumnByName('Name').ReadOnly := AReadOnly;  saProjectGL.Columns.ColumnByName('Units').ReadOnly := AReadOnly;  saProjectGL.Columns.ColumnByName('Specs').ReadOnly := AReadOnly;  saProjectGL.Columns.ColumnByName('BasePrice').ReadOnly := AReadOnly;  saProjectGL.Columns.ColumnByName('RiskRange').ReadOnly := AReadOnly;  saProjectGL.Columns.ColumnByName('InfoPrice').ReadOnly := AReadOnly;  saProjectGL.Columns.ColumnByName('InfoDate').ReadOnly := AReadOnly;  if AReadOnly then    saProjectGL.Options := saProjectGL.Options - [aoAllowInsert, aoAllowDelete]  else    saProjectGL.Options := saProjectGL.Options + [aoAllowInsert, aoAllowDelete];end;procedure TProjectGLFrame.zgProjectGLMouseDown(Sender: TObject;  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin  if Button = mbRight then    dxpmProjectGL.PopupFromCursorPos;end;procedure TProjectGLFrame.dxpmProjectGLPopup(Sender: TObject);begin  SetDxBtnAction(actnCalculatePriceMargin, MainForm.dxbtnCalculatePriceMargin);end;procedure TProjectGLFrame.actnCalculatePriceMarginExecute(Sender: TObject);begin  if TProjectData(FProjectGLData.ProjectData).PhaseData.StageDataReadOnly then    TipMessage('历史数据不可重新计算。')  else    TProjectData(FProjectGLData.ProjectData).CalculatePriceMargin;end;end.
 |