BillsBookmarkDm.pas 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  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.Open;
  47. sdvStageBookmark.DataSet := TProjectData(FProjectData).BillsData.sddBills;
  48. sdvStageBookmark.Open;
  49. end;
  50. procedure TBillsBookmarkData.RefreshBillsBookmark;
  51. begin
  52. sdvBillsBookmark.RefreshFilter;
  53. end;
  54. procedure TBillsBookmarkData.RefreshStageBookmark;
  55. begin
  56. sdvStageBookmark.RefreshFilter;
  57. end;
  58. procedure TBillsBookmarkData.ResetPhaseStageLink;
  59. begin
  60. with TProjectData(FProjectData).PhaseData do
  61. begin
  62. sdvStageBookmark.Columns.FindColumn('HasBookmark').LookupDataSet := StageData.sddStage;
  63. sdvStageBookmark.Columns.FindColumn('MarkMemo').LookupDataSet := StageData.sddStage;
  64. end;
  65. sdvStageBookmark.RefreshFilter;
  66. end;
  67. procedure TBillsBookmarkData.sdvBillsBookmarkFilterRecord(
  68. ARecord: TsdDataRecord; var Allow: Boolean);
  69. begin
  70. Allow := ARecord.ValueByName('HasBookmark').AsBoolean;
  71. end;
  72. procedure TBillsBookmarkData.sdvStageBookmarkFilterRecord(
  73. ARecord: TsdDataRecord; var Allow: Boolean);
  74. var
  75. vNode: TMeasureBillsIDTreeNode;
  76. StageRec: TsdDataRecord;
  77. begin
  78. if (TProjectData(FProjectData).ProjProperties.PhaseCount > 0) and
  79. (TProjectData(FProjectData).PhaseData.Active) then
  80. begin
  81. with TProjectData(FProjectData).BillsMeasureData do
  82. vNode := TMeasureBillsIDTreeNode(BillsMeasureTree.FindNode(ARecord.ValueByName('ID').AsInteger));
  83. if Assigned(vNode) then
  84. begin
  85. StageRec := vNode.StageRec;
  86. if Assigned(StageRec) then
  87. Allow := StageRec.ValueByName('HasBookmark').AsBoolean
  88. else
  89. Allow := False;
  90. end
  91. else
  92. Allow := False;
  93. end
  94. else
  95. Allow := False;
  96. end;
  97. end.