123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- unit tpPeg_GclDm;
- interface
- uses
- SysUtils, Classes, sdDB, sdProvider, tpPeg;
- type
- TtpPeg_GclData = class(TDataModule)
- smpPeg: TsdMemoryProvider;
- sddPeg: TsdDataSet;
- sdvPeg: TsdDataView;
- smpGclBills: TsdMemoryProvider;
- sddGclBills: TsdDataSet;
- sdvGclBills: TsdDataView;
- procedure sdvGclBillsFilterRecord(ARecord: TsdDataRecord;
- var Allow: Boolean);
- procedure sdvPegCurrentChanged(ARecord: TsdDataRecord);
- private
- public
- procedure LoadData(APegs: TList);
- end;
- implementation
- uses
- tpGatherTree;
- {$R *.dfm}
- { TtpPeg_GclData }
- procedure TtpPeg_GclData.LoadData(APegs: TList);
- procedure BeforeLoadData;
- begin
- sddPeg.Active := True;
- sddPeg.DisableControls;
- sddPeg.BeginUpdate;
- sddPeg.DeleteAll;
- sddGclBills.Active := True;
- sddGclBills.DisableControls;
- sddGclBills.BeginUpdate;
- sddGclBills.DeleteAll;
- sdvGclBills.Filtered := False;
- end;
- procedure AfterLoadData;
- begin
- sddPeg.EndUpdate;
- sddPeg.EnableControls;
- sddGclBills.EndUpdate;
- sddGclBills.EnableControls;
- sdvPeg.LocateInControl(sdvPeg.Records[0]);
- sdvGclBills.Filtered := True;
- end;
- procedure LoadGclBills(APeg: TtpPegNode);
- var
- i: Integer;
- Rec: TsdDataRecord;
- vGclNode: TtpGatherTreeNode;
- begin
- for i := 0 to APeg.RelaGclNodes.Count - 1 do
- begin
- vGclNode := TtpGatherTreeNode(APeg.RelaGclNodes.Items[i]);
- Rec := sddGclBills.Add;
- Rec.ValueByName('ID').AsInteger := vGclNode.ID;
- Rec.ValueByName('PegID').AsInteger := APeg.RelaNode.ID;
- Rec.ValueByName('B_Code').AsString := vGclNode.B_Code;
- Rec.ValueByName('Name').AsString := vGclNode.Name;
- Rec.ValueByName('Units').AsString := vGclNode.Units;
- Rec.ValueByName('Price').AsFloat := vGclNode.Price;
- Rec.ValueByName('Quantity').AsFloat := vGclNode.Quantity;
- Rec.ValueByName('TotalPrice').AsFloat := vGclNode.TotalPrice;
- end;
- end;
- procedure LoadPeg(APeg: TtpPegNode);
- var
- i: Integer;
- Rec: TsdDataRecord;
- begin
- Rec := sddPeg.Add;
- Rec.ValueByName('ID').AsInteger := APeg.RelaNode.ID;
- Rec.ValueByName('Code').AsString := APeg.RelaNode.Code;
- Rec.ValueByName('Name').AsString := APeg.RelaNode.Name;
- Rec.ValueByName('Units').AsString := APeg.RelaNode.Units;
- Rec.ValueByName('TotalPrice').AsFloat := APeg.RelaNode.TotalPrice;
- Rec.ValueByName('BeginPeg').AsString := APeg.BeginPeg;
- Rec.ValueByName('BeginPegNum').AsFloat := APeg.BeginPegNum;
- Rec.ValueByName('EndPeg').AsString := APeg.EndPeg;
- Rec.ValueByName('EndPegNum').AsFloat := APeg.EndPegNum;
- LoadGclBills(APeg);
- end;
- var
- i: Integer;
- vPeg: TtpPegNode;
- begin
- BeforeLoadData;
- try
- for i := 0 to APegs.Count - 1 do
- begin
- vPeg := TtpPegNode(APegs.Items[i]);
- LoadPeg(vPeg);
- end;
- finally
- AfterLoadData;
- end;
- end;
- procedure TtpPeg_GclData.sdvGclBillsFilterRecord(ARecord: TsdDataRecord;
- var Allow: Boolean);
- begin
- if Assigned(sdvPeg.Current) then
- Allow := ARecord.ValueByName('PegID').AsInteger = sdvPeg.Current.ValueByName('ID').AsInteger
- else
- Allow := False;
- end;
- procedure TtpPeg_GclData.sdvPegCurrentChanged(ARecord: TsdDataRecord);
- begin
- sdvGclBills.RefreshFilter;
- end;
- end.
|