|
@@ -83,6 +83,7 @@ type
|
|
|
|
|
|
procedure ExpandNodeTo(ALevel: Integer);
|
|
|
procedure ExpandXmjNode;
|
|
|
+ procedure ExpandPegXmjNode;
|
|
|
|
|
|
procedure ReorderChildrenCode(ANode: TsdIDTreeNode);
|
|
|
|
|
@@ -635,7 +636,7 @@ procedure TBillsCompileData.sdvBillsCompileSetText(var Text: String;
|
|
|
begin
|
|
|
if Text = '' then
|
|
|
Exit
|
|
|
- else if (Pos('Quantity', AColumn.FieldName) > 0) or
|
|
|
+ else if ((Pos('Quantity', AColumn.FieldName) > 0) and (Pos('Dgn', AColumn.FieldName) <=0)) or
|
|
|
(Pos('TotalPrice', AColumn.FieldName) > 0) then
|
|
|
SetTextErrorHint('该清单有子计算项,不能直接修改!')
|
|
|
else if (Pos('Price', AColumn.FieldName) > 0) then
|
|
@@ -1067,4 +1068,49 @@ begin
|
|
|
ANode.Rec.DgnPrice.Clear;
|
|
|
end;
|
|
|
|
|
|
+procedure TBillsCompileData.ExpandPegXmjNode;
|
|
|
+
|
|
|
+ function HasPegChild(ANode: TBillsIDTreeNode): Boolean;
|
|
|
+ var
|
|
|
+ NextNode: TBillsIDTreeNode;
|
|
|
+ begin
|
|
|
+ Result := False;
|
|
|
+ NextNode := TBillsIDTreeNode(ANode.NextNode);
|
|
|
+ while ((NextNode.MajorIndex - ANode.MajorIndex) <= ANode.PosterityCount) do
|
|
|
+ begin
|
|
|
+ if CheckPeg(NextNode.Rec.Name.AsString) then
|
|
|
+ begin
|
|
|
+ Result := True;
|
|
|
+ Break;
|
|
|
+ end;
|
|
|
+ NextNode := TBillsIDTreeNode(NextNode.NextNode);
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+
|
|
|
+ function HasGclChild(ANode: TBillsIDTreeNode): Boolean;
|
|
|
+ var
|
|
|
+ vChild: TBillsIDTreeNode;
|
|
|
+ begin
|
|
|
+ Result := True;
|
|
|
+ vChild := TBillsIDTreeNode(ANode.FirstChild);
|
|
|
+ while Assigned(vChild) and not Result do
|
|
|
+ begin
|
|
|
+ if vChild.Rec.B_Code.AsString <> '' then
|
|
|
+ Result := False;
|
|
|
+ vChild := TBillsIDTreeNode(vChild.NextSibling);
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+
|
|
|
+var
|
|
|
+ iIndex: Integer;
|
|
|
+ vNode: TBillsIDTreeNode;
|
|
|
+begin
|
|
|
+ for iIndex := 0 to BillsCompileTree.Count - 1 do
|
|
|
+ begin
|
|
|
+ vNode := TBillsIDTreeNode(BillsCompileTree.Items[iIndex]);
|
|
|
+ if vNode.HasChildren then
|
|
|
+ vNode.Expanded := HasPegChild(vNode) or not HasGclChild(vNode);
|
|
|
+ end;
|
|
|
+end;
|
|
|
+
|
|
|
end.
|