BillsBookmarkDm.pas 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. unit BillsBookmarkDm;
  2. interface
  3. uses
  4. SysUtils, Classes, sdDB;
  5. type
  6. TBillsBookmarkData = class(TDataModule)
  7. sdvBillsBookmark: TsdDataView;
  8. sdvStageBookmark: TsdDataView;
  9. procedure sdvBillsBookmarkFilterRecord(ARecord: TsdDataRecord;
  10. var Allow: Boolean);
  11. procedure sdvStageBookmarkFilterRecord(ARecord: TsdDataRecord;
  12. var Allow: Boolean);
  13. private
  14. FProjectData: TObject;
  15. public
  16. constructor Create(AProjectData: TObject);
  17. destructor Destroy; override;
  18. procedure Open;
  19. procedure Close;
  20. procedure ResetPhaseStageLink;
  21. procedure RefreshBillsBookmark;
  22. procedure RefreshStageBookmark;
  23. end;
  24. implementation
  25. uses
  26. ProjectData, BillsDm, BillsTree;
  27. {$R *.dfm}
  28. { TBillsBookmarkData }
  29. procedure TBillsBookmarkData.Close;
  30. begin
  31. sdvBillsBookmark.Close;
  32. sdvStageBookmark.Close;
  33. end;
  34. constructor TBillsBookmarkData.Create(AProjectData: TObject);
  35. begin
  36. inherited Create(nil);
  37. FProjectData := AProjectData;
  38. end;
  39. destructor TBillsBookmarkData.Destroy;
  40. begin
  41. inherited;
  42. end;
  43. procedure TBillsBookmarkData.Open;
  44. begin
  45. sdvBillsBookmark.DataSet := TProjectData(FProjectData).BillsData.sddBills;
  46. sdvBillsBookmark.IndexName := 'idxSerialNo';
  47. sdvBillsBookmark.Open;
  48. sdvStageBookmark.DataSet := TProjectData(FProjectData).BillsData.sddBills;
  49. sdvStageBookmark.IndexName := 'idxSerialNo';
  50. sdvStageBookmark.Open;
  51. end;
  52. procedure TBillsBookmarkData.RefreshBillsBookmark;
  53. begin
  54. sdvBillsBookmark.RefreshFilter;
  55. end;
  56. procedure TBillsBookmarkData.RefreshStageBookmark;
  57. begin
  58. sdvStageBookmark.RefreshFilter;
  59. end;
  60. procedure TBillsBookmarkData.ResetPhaseStageLink;
  61. begin
  62. with TProjectData(FProjectData).PhaseData do
  63. begin
  64. sdvStageBookmark.Columns.FindColumn('HasBookmark').LookupDataSet := StageData.sddStage;
  65. sdvStageBookmark.Columns.FindColumn('MarkMemo').LookupDataSet := StageData.sddStage;
  66. end;
  67. sdvStageBookmark.RefreshFilter;
  68. end;
  69. procedure TBillsBookmarkData.sdvBillsBookmarkFilterRecord(
  70. ARecord: TsdDataRecord; var Allow: Boolean);
  71. begin
  72. Allow := ARecord.ValueByName('HasBookmark').AsBoolean;
  73. end;
  74. procedure TBillsBookmarkData.sdvStageBookmarkFilterRecord(
  75. ARecord: TsdDataRecord; var Allow: Boolean);
  76. var
  77. vNode: TMeasureBillsIDTreeNode;
  78. StageRec: TsdDataRecord;
  79. begin
  80. if (TProjectData(FProjectData).ProjProperties.PhaseCount > 0) and
  81. (TProjectData(FProjectData).PhaseData.Active) then
  82. begin
  83. with TProjectData(FProjectData).BillsMeasureData do
  84. vNode := TMeasureBillsIDTreeNode(BillsMeasureTree.FindNode(ARecord.ValueByName('ID').AsInteger));
  85. if Assigned(vNode) then
  86. begin
  87. StageRec := vNode.StageRec;
  88. if Assigned(StageRec) then
  89. Allow := StageRec.ValueByName('HasBookmark').AsBoolean
  90. else
  91. Allow := False;
  92. end
  93. else
  94. Allow := False;
  95. end
  96. else
  97. Allow := False;
  98. end;
  99. end.