|
@@ -3,7 +3,7 @@ unit BillsMeasureFme;
|
|
|
interface
|
|
|
|
|
|
uses
|
|
|
- BillsMeasureDm, UtilMethods, BillsClipboard,
|
|
|
+ BillsMeasureDm, UtilMethods, BillsClipboard, sdIDTreeCells,
|
|
|
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
|
|
Dialogs, ZJGrid, ComCtrls, ToolWin, StdCtrls, ExtCtrls, sdGridDBA,
|
|
|
sdGridTreeDBA, sdDB, ActnList, dxBar, sdIDTree, JimLabels;
|
|
@@ -60,6 +60,8 @@ type
|
|
|
FOnAfterSetBookmark: TBookmarkRefreshEvent;
|
|
|
FShowAlias: Boolean;
|
|
|
|
|
|
+ procedure ExpandMouseDown(AGridCell: TzjCell);
|
|
|
+
|
|
|
function CheckExprsColumn(ACol: Integer): Boolean;
|
|
|
|
|
|
procedure SetColumnVisible(const AColumn: string; AVisible: Boolean);
|
|
@@ -114,6 +116,7 @@ begin
|
|
|
inherited Create(AProjectFrame);
|
|
|
FBillsMeasureData := ABillsMeasureData;
|
|
|
stdBillsMeasure.IDTree := FBillsMeasureData.BillsMeasureTree;
|
|
|
+ zgBillsMeasure.OnExpandMouseDown := ExpandMouseDown;
|
|
|
end;
|
|
|
|
|
|
destructor TBillsMeasureFrame.Destroy;
|
|
@@ -183,26 +186,26 @@ end;
|
|
|
procedure TBillsMeasureFrame.zgBillsMeasureCellGetColor(Sender: TObject; ACoord: TPoint;
|
|
|
var AColor: TColor);
|
|
|
var
|
|
|
- stnNode: TsdIDTreeNode;
|
|
|
+ stnNode: TBillsIDTreeNode;
|
|
|
iCreatePhaseID: Integer;
|
|
|
- StageRec: TsdDataRecord;
|
|
|
+ StageRec: TStageRecord;
|
|
|
fQtyDiffer: Double;
|
|
|
begin
|
|
|
AColor := clWindow;
|
|
|
if ACoord.Y > stdBillsMeasure.IDTree.Count + 1 then Exit;
|
|
|
- stnNode := stdBillsMeasure.IDTree.Items[ACoord.Y - 2];
|
|
|
+ stnNode := TBillsIDTreeNode(stdBillsMeasure.IDTree.Items[ACoord.Y - 2]);
|
|
|
if not Assigned(stnNode) then Exit;
|
|
|
- iCreatePhaseID := stnNode.Rec.ValueByName('CreatePhaseID').AsInteger;
|
|
|
+ iCreatePhaseID := stnNode.Rec.CreatePhaseID.AsInteger;
|
|
|
// 根据层次底色不同
|
|
|
if stnNode.ParentID = 1 then
|
|
|
AColor := $00FBCAC4
|
|
|
- else if (stnNode.Rec.ValueByName('B_Code').AsString = '') and (stnNode.Level > 0) then
|
|
|
+ else if (stnNode.Rec.B_Code.AsString = '') and (stnNode.Level > 0) then
|
|
|
AColor := $00F9E8DF;
|
|
|
// 书签
|
|
|
if TProjectData(FBillsMeasureData.ProjectData).ProjProperties.PhaseCount > 0 then
|
|
|
begin
|
|
|
- StageRec := TBillsIDTreeNode(stnNode).StageRec;
|
|
|
- if Assigned(StageRec) and StageRec.ValueByName('HasBookmark').AsBoolean then
|
|
|
+ StageRec := stnNode.StageRec;
|
|
|
+ if Assigned(StageRec) and StageRec.HasBookmark.AsBoolean then
|
|
|
AColor := $00CFE2F9;
|
|
|
end;
|
|
|
// 根据节点创建期数底色不同
|
|
@@ -219,8 +222,7 @@ begin
|
|
|
if not stnNode.HasChildren then
|
|
|
begin
|
|
|
with stnNode.Rec do
|
|
|
- fQtyDiffer := QuantityRoundTo(
|
|
|
- ValueByName('AddDealQuantity').AsFloat - ValueByName('Quantity').AsFloat);
|
|
|
+ fQtyDiffer := QuantityRoundTo(AddDealQuantity.AsFloat - Quantity.AsFloat);
|
|
|
if fQtyDiffer > 0 then
|
|
|
AColor := $00646AFE;
|
|
|
end;
|
|
@@ -570,6 +572,7 @@ end;
|
|
|
|
|
|
procedure TBillsMeasureFrame.BeginExpandNode;
|
|
|
begin
|
|
|
+ zgBillsMeasure.BeginUpdate;
|
|
|
zgBillsMeasure.OnCellGetColor := nil;
|
|
|
BeginUpdateWindow(zgBillsMeasure.Handle);
|
|
|
stdBillsMeasure.DisableControl;
|
|
@@ -580,7 +583,7 @@ begin
|
|
|
stdBillsMeasure.EnableControl;
|
|
|
EndUpdateWindow(zgBillsMeasure.Handle);
|
|
|
zgBillsMeasure.OnCellGetColor := zgBillsMeasureCellGetColor;
|
|
|
- zgBillsMeasure.Invalidate;
|
|
|
+ zgBillsMeasure.EndUpdate;
|
|
|
end;
|
|
|
|
|
|
procedure TBillsMeasureFrame.ExpandCurPhase;
|
|
@@ -638,4 +641,36 @@ begin
|
|
|
stdBillsMeasure.Column('PM_AddTotalPrice').Visible := AValue;
|
|
|
end;
|
|
|
|
|
|
+procedure TBillsMeasureFrame.ExpandMouseDown(AGridCell: TzjCell);
|
|
|
+
|
|
|
+ procedure CommonExpand(vNode: TsdIDTreeNode);
|
|
|
+ begin
|
|
|
+ AGridCell.Grid.BeginUpdate;
|
|
|
+ vNode.Expanded := not vNode.Expanded;
|
|
|
+ AGridCell.Grid.EndUpdate;
|
|
|
+ AGridCell.Grid.InvalidateView(AGridCell.ViewRect);
|
|
|
+ end;
|
|
|
+
|
|
|
+ procedure QuikExpand(vNode: TsdIDTreeNode);
|
|
|
+ begin
|
|
|
+ Screen.Cursor := crHourGlass;
|
|
|
+ BeginExpandNode;
|
|
|
+ try
|
|
|
+ vNode.Expanded := not vNode.Expanded;
|
|
|
+ finally
|
|
|
+ EndExpandNode;
|
|
|
+ Screen.Cursor := crDefault;
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+
|
|
|
+var
|
|
|
+ stnNode: TsdIDTreeNode;
|
|
|
+begin
|
|
|
+ stnNode := TsdIDTreeCell(AGridCell).TreeNode;
|
|
|
+ if stnNode.PosterityCount > 10000 then
|
|
|
+ QuikExpand(stnNode)
|
|
|
+ else
|
|
|
+ CommonExpand(stnNode);
|
|
|
+end;
|
|
|
+
|
|
|
end.
|