OtherMeasureFme.pas 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. unit OtherMeasureFme;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5. Dialogs, JimPages, XPMenu, ComCtrls, ToolWin, ExtCtrls, sdGridDBA, ZJGrid,
  6. ProjectData, StdCtrls, ZJCells;
  7. type
  8. TOtherMeasureFrame = class(TFrame)
  9. pnlRelaXmjType: TPanel;
  10. tbToolsButton: TToolBar;
  11. tobtnPhase: TToolButton;
  12. tobtnOnce: TToolButton;
  13. xpm: TXPMenu;
  14. pnlOtherMeasure: TPanel;
  15. jpsOtherMeasure: TJimPages;
  16. jpsOtherMeasurePhase: TJimPage;
  17. jpsOtherMeasureOnce: TJimPage;
  18. zgPhase: TZJGrid;
  19. zgOnce: TZJGrid;
  20. saOnce: TsdGridDBA;
  21. saPhase: TsdGridDBA;
  22. cbIsApproval: TComboBox;
  23. procedure tobtnPhaseClick(Sender: TObject);
  24. procedure zgPhaseKeyDown(Sender: TObject; var Key: Word;
  25. Shift: TShiftState);
  26. procedure zgPhaseCellGetColor(Sender: TObject; ACoord: TPoint;
  27. var AColor: TColor);
  28. procedure zgOnceGetCellEditor(Sender: TObject; ACoord: TPoint;
  29. var AControl: TWinControl);
  30. procedure zgOnceEditorLoadCell(Sender: TObject; ACoord: TPoint;
  31. AControl: TWinControl);
  32. procedure zgOnceEditorSaveCell(Sender: TObject; ACoord: TPoint;
  33. AControl: TWinControl);
  34. procedure zgOnceGetCellText(Sender: TObject; const ACoord: TPoint;
  35. var Value: String; DisplayText: Boolean);
  36. private
  37. FProjectData: TProjectData;
  38. function GetOnceVisbleColumn(const AColName: string): Integer;
  39. public
  40. constructor Create(AProjectData: TProjectData);
  41. destructor Destroy; override;
  42. procedure ResetViewControl;
  43. end;
  44. implementation
  45. uses
  46. OtherMeasurePhaseDm, sdDB;
  47. {$R *.dfm}
  48. constructor TOtherMeasureFrame.Create(AProjectData: TProjectData);
  49. begin
  50. inherited Create(nil);
  51. FProjectData := AProjectData;
  52. saPhase.DataView := FProjectData.OtherMeasurePhaseData.sdvPhase;
  53. saOnce.DataView := FProjectData.OtherMeasureOnceData.sdvOnce;
  54. zgOnce.CellClass.Cols[GetOnceVisbleColumn('IsApproval')] := TZjComboCell;
  55. end;
  56. destructor TOtherMeasureFrame.Destroy;
  57. begin
  58. inherited;
  59. end;
  60. procedure TOtherMeasureFrame.ResetViewControl;
  61. begin
  62. saPhase.Columns.ColumnByName('CurTotalPrice').ReadOnly := TProjectData(FProjectData).StageDataReadOnly;
  63. if TProjectData(FProjectData).AllowInsert then
  64. saPhase.Options := [aoAllowInsert, aoAllowEdit, aoAllowDelete, aoAutoInsert, aoAllowUpMove, aoAllowDownMove]
  65. else
  66. saPhase.Options := [];
  67. end;
  68. procedure TOtherMeasureFrame.tobtnPhaseClick(Sender: TObject);
  69. begin
  70. jpsOtherMeasure.ActivePageIndex := TToolButton(Sender).Tag;
  71. tobtnPhase.Down := tobtnPhase.Tag = TToolButton(Sender).Tag;
  72. tobtnOnce.Down := tobtnOnce.Tag = TToolButton(Sender).Tag;
  73. end;
  74. procedure TOtherMeasureFrame.zgPhaseKeyDown(Sender: TObject; var Key: Word;
  75. Shift: TShiftState);
  76. begin
  77. if (ssCtrl in Shift) and (ssShift in Shift) and (ssAlt in Shift)
  78. and (Key in [68, 100]) then // 'd', 'D'
  79. begin
  80. with FProjectData.OtherMeasurePhaseData do
  81. FilterDeletedRec := not FilterDeletedRec;
  82. end;
  83. end;
  84. procedure TOtherMeasureFrame.zgPhaseCellGetColor(Sender: TObject;
  85. ACoord: TPoint; var AColor: TColor);
  86. var
  87. Rec: TsdDataRecord;
  88. begin
  89. Rec := saPhase.DataView.Records[ACoord.Y-1];
  90. if Assigned(Rec) and Rec.ValueByName('Deleted').AsBoolean then
  91. AColor := $00D5D5D5
  92. else
  93. AColor := clWindow;
  94. end;
  95. procedure TOtherMeasureFrame.zgOnceGetCellEditor(Sender: TObject;
  96. ACoord: TPoint; var AControl: TWinControl);
  97. begin
  98. if ACoord.X = GetOnceVisbleColumn('IsApproval') then
  99. AControl := cbIsApproval;
  100. end;
  101. procedure TOtherMeasureFrame.zgOnceEditorLoadCell(Sender: TObject;
  102. ACoord: TPoint; AControl: TWinControl);
  103. begin
  104. if ACoord.X = GetOnceVisbleColumn('IsApproval') then
  105. begin
  106. cbIsApproval.ItemIndex := cbIsApproval.Items.IndexOf(zgOnce.Cells[ACoord.X, ACoord.Y].Text);
  107. if cbIsApproval.Text = '' then
  108. cbIsApproval.Text := '·ñ';
  109. end;
  110. end;
  111. procedure TOtherMeasureFrame.zgOnceEditorSaveCell(Sender: TObject;
  112. ACoord: TPoint; AControl: TWinControl);
  113. begin
  114. if ACoord.X = GetOnceVisbleColumn('IsApproval') then
  115. begin
  116. if cbIsApproval.ItemIndex = 0 then
  117. zgOnce.Cells[ACoord.X, ACoord.Y].Text := 'True'
  118. else
  119. zgOnce.Cells[ACoord.X, ACoord.Y].Text := 'False';
  120. end;
  121. end;
  122. procedure TOtherMeasureFrame.zgOnceGetCellText(Sender: TObject;
  123. const ACoord: TPoint; var Value: String; DisplayText: Boolean);
  124. begin
  125. if (ACoord.X = GetOnceVisbleColumn('IsApproval')) and (ACoord.Y > 0) then
  126. begin
  127. if Value = 'True' then
  128. Value := 'ÊÇ'
  129. else
  130. Value := '·ñ';
  131. end;
  132. end;
  133. function TOtherMeasureFrame.GetOnceVisbleColumn(
  134. const AColName: string): Integer;
  135. begin
  136. Result := zgOnce.FixedColCount + saOnce.VisibleCol(AColName);
  137. end;
  138. end.