| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 | unit tpPeg_GclDm;interfaceuses  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;implementationuses  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.
 |