亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? dbsumlst.pas

?? EHlib CN For Delphi2009
?? PAS
?? 第 1 頁 / 共 3 頁
字號:
  item: TDBSum;
  NeedRecalc: Boolean;
begin
  if (not FDesignTimeWork and (csDesigning in FOwner.ComponentState)) or
    (csLoading in FOwner.ComponentState) or (Active = False) or not Assigned(DataSet) or
    (DataSet.Active = False) or (FEventsOverloaded = False) then Exit;
  try
    ClearSumValues;
    FOldRecNo := -1;

    if Assigned(OnRecalcAll) then OnRecalcAll(Self);
    if ExternalRecalc then Exit;

    NeedRecalc := False;
    for i := 0 to FSumCollection.Count - 1 do
      if (TDBSum(FSumCollection.Items[i]).GroupOperation = goCount) or
        (TDBSum(FSumCollection.Items[i]).FieldName <> '') then
      begin
        NeedRecalc := True;
        Break;
      end;

    if not FDataSet.IsSequenced and VirtualRecords then
      NeedRecalc := True;

    if NeedRecalc then
    begin
      FDataSet.DisableControls;
//      for i := 0 to FVirtualRecList.Count - 1
//        do FDataSet.FreeBookmark(FVirtualRecList[i]);
      FVirtualRecList.Clear;
      Changing := True;

      FDataSet.First;
      while FDataSet.Eof = False do
      begin
        for i := 0 to FSumCollection.Count - 1 do
        begin
          item := TDBSum(FSumCollection.Items[i]);
          if (item.GroupOperation = goCount) or (item.FieldName <> '') then
          begin
            case Item.GroupOperation of
              goSum:
                if (FDataSet.FieldByName(Item.FieldName).IsNull = False) then
                  Item.SumValue := Item.SumValue + FDataSet.FieldByName(Item.FieldName).AsFloat;
              goCount:
                if (Item.FieldName = '') or not FDataSet.FieldByName(Item.FieldName).IsNull then
                  Item.SumValue := Item.SumValue + 1;
              goAvg:
                begin
                  if (FDataSet.FieldByName(Item.FieldName).IsNull = False) then
                    Inc(Item.FNotNullRecordCount);
                  Item.FSumValueAsSum := Item.FSumValueAsSum + FDataSet.FieldByName(Item.FieldName).AsFloat;
                end;
            end;
          end;
        end;
        if not FDataSet.IsSequenced and VirtualRecords then
          FVirtualRecList.Add(FDataSet.Bookmark);
        FDataSet.Next;
      end;
      FDataSet.First;

      for i := 0 to FSumCollection.Count - 1 do
        with TDBSum(FSumCollection.Items[i]) do
          if GroupOperation = goAvg then
            if FNotNullRecordCount <> 0
              then SumValue := FSumValueAsSum / FNotNullRecordCount
              else SumValue := 0;

      FDataSet.EnableControls;
    end;

    if Assigned(OnAfterRecalcAll) then OnAfterRecalcAll(Self);

////  SumValue := Cur;
  finally
    Filtered := FDataSet.Filtered;
    Filter := FDataSet.Filter;
    Changing := False;
    DoSumListChanged;
  end;
end;

procedure TDBSumListProducer.DataSetAfterEdit(DataSet: TDataSet);
var i: Integer;
  item: TDBSum;
begin
  if (Active = False) then Exit;

  for i := 0 to FSumCollection.Count - 1 do
  begin
    item := TDBSum(FSumCollection.Items[i]);
    if (item.GroupOperation = goCount) or (item.FieldName <> '') then
    begin
      case Item.GroupOperation of
        goSum, goAvg:
          begin
            if (FDataSet.FieldByName(Item.FieldName).IsNull = False)
              then Item.Value := FDataSet.FieldByName(Item.FieldName).AsFloat
              else Item.Value := 0;
            Item.VarValue := FDataSet.FieldByName(Item.FieldName).AsVariant;
          end;
        goCount:
          if (Item.FieldName = '') or not FDataSet.FieldByName(Item.FieldName).IsNull
            then Item.Value := 1
            else Item.Value := 0;
      end;
    end;
  end;
  if (Assigned(OldAfterEdit)) then
    OldAfterEdit(DataSet);
end;

procedure TDBSumListProducer.DataSetAfterInsert(DataSet: TDataSet);
var i: Integer;
  Item: TDBSum;
  ABookMark: TBookmark;
begin
  if Active then
  begin
    for i := 0 to FSumCollection.Count - 1 do
    begin
      Item := TDBSum(FSumCollection.Items[i]);
      if (item.GroupOperation = goCount) or (item.FieldName <> '') then
      begin
        case Item.GroupOperation of
          goSum, goAvg:
            begin
              Item.Value := 0;
              Item.VarValue := Null;
            end;
          goCount:
            if not (Item.FieldName = '') and not FDataSet.FieldByName(Item.FieldName).IsNull
              then Item.Value := 1
              else Item.Value := 0;
        end;
      end;
    end;

    if not FDataSet.IsSequenced and VirtualRecords then
    begin
      ABookMark := FDataSet.Bookmark;
      if ABookMark <> nil
        then FVirtualRecList.Add(ABookMark)
        else FTryedInsert := True;
    end;
  end;
  if (Assigned(OldAfterInsert)) then
    OldAfterInsert(DataSet);
end;

procedure TDBSumListProducer.DataSetAfterOpen(DataSet: TDataSet);
begin
  if Active then RecalcAll;
  if (Assigned(OldAfterOpen)) then
    OldAfterOpen(DataSet);
end;

procedure TDBSumListProducer.DataSetAfterPost(DataSet: TDataSet);
var i: Integer;
  item: TDBSum;
  ARecNo, C: Integer;
begin
  if Active then
  begin
    for i := 0 to FSumCollection.Count - 1 do
    begin
      item := TDBSum(FSumCollection.Items[i]);
      if (item.GroupOperation = goCount) or (item.FieldName <> '') then
      begin
        case Item.GroupOperation of
          goSum:
            if (FDataSet.FieldByName(Item.FieldName).IsNull = False) then
              Item.SumValue := Item.SumValue - Item.Value + FDataSet.FieldByName(Item.FieldName).AsFloat
            else
              Item.SumValue := Item.SumValue - Item.Value;
          goCount:
            if (Item.FieldName = '') or not FDataSet.FieldByName(Item.FieldName).IsNull
              then Item.SumValue := Item.SumValue - Item.Value + 1
              else Item.SumValue := Item.SumValue - Item.Value;
          goAvg:
            begin
              if (FDataSet.FieldByName(Item.FieldName).IsNull = False) then
              begin
                if Item.VarValue = Null then Inc(Item.FNotNullRecordCount);
                Item.FSumValueAsSum := Item.FSumValueAsSum - Item.Value + FDataSet.FieldByName(Item.FieldName).AsFloat
              end else
              begin
                if Item.VarValue <> Null then Dec(Item.FNotNullRecordCount);
                Item.FSumValueAsSum := Item.FSumValueAsSum - Item.Value;
              end;
              if Item.FNotNullRecordCount <> 0
                then Item.SumValue := Item.FSumValueAsSum / Item.FNotNullRecordCount
                else Item.SumValue := 0;
            end;
        end;
      end;
    end;

    if not FDataSet.IsSequenced and VirtualRecords and FTryedInsert = True then
    begin
      ARecNo := FOldRecNo;
      if (ARecNo = -1) or (ARecNo >= FVirtualRecList.Count) then ARecNo := 0;
      if (FVirtualRecList.Count > 0) then
        C := DataSetCompareBookmarks(DataSet, FVirtualRecList[ARecNo], FDataSet.Bookmark)
      else
        C := 0;
      if (C > 0) then
        while C > 0 do
        begin
          if (ARecNo = 0) then Break;
          Dec(ARecNo);
          C := DataSetCompareBookmarks(DataSet, FVirtualRecList[ARecNo], FDataSet.Bookmark);
        end
      else if (C < 0) then
        while C < 0 do
        begin
          Inc(ARecNo);
          if (ARecNo >= FVirtualRecList.Count) then Break;
          C := DataSetCompareBookmarks(DataSet, FVirtualRecList[ARecNo], FDataSet.Bookmark);
        end;
      FVirtualRecList.Insert(ARecNo, FDataSet.Bookmark);
      FTryedInsert := False;
    end;
    DoSumListChanged;
  end;
  if (Assigned(OldAfterPost)) then
    OldAfterPost(DataSet);
end;

procedure TDBSumListProducer.DataSetAfterScroll(DataSet: TDataSet);
begin
  if (Assigned(OldAfterScroll)) then
    OldAfterScroll(DataSet);
  if (Active = False) then Exit;

  if (Changing = False) then
  begin
    if ((DataSet.Filtered and (Filter <> DataSet.Filter)) or (Filtered <> DataSet.Filtered)) then
      RecalcAll;
   {else if (FMasterDataset <> GetMasterDataSet(FMasterPropInfo)) then begin
     ResetMasterInfo;
     RecalcAll;
   end;}
  end;
end;

procedure TDBSumListProducer.DataSetBeforeDelete(DataSet: TDataSet);
var i: Integer;
  item: TDBSum;
begin
  if (Assigned(OldBeforeDelete)) then
    OldBeforeDelete(DataSet);
  if (Active = False) then Exit;

  for i := 0 to FSumCollection.Count - 1 do
  begin
    item := TDBSum(FSumCollection.Items[i]);
    if (item.GroupOperation = goCount) or (item.FieldName <> '') then
    begin
      case Item.GroupOperation of
        goSum:
          Item.SumValue := Item.SumValue - FDataSet.FieldByName(Item.FieldName).AsFloat;
        goCount:
          if (Item.FieldName = '') or not FDataSet.FieldByName(Item.FieldName).IsNull
            then Item.SumValue := Item.SumValue - 1;
        goAvg:
          begin
            Item.FSumValueAsSum := Item.FSumValueAsSum - FDataSet.FieldByName(Item.FieldName).AsFloat;
            if not FDataSet.FieldByName(Item.FieldName).IsNull then Dec(Item.FNotNullRecordCount);
            if Item.FNotNullRecordCount <> 0
              then Item.SumValue := Item.FSumValueAsSum / Item.FNotNullRecordCount
              else Item.SumValue := 0;
          end;
      end;
    end;
  end;

  if not FDataSet.IsSequenced and VirtualRecords then
  begin
    i := FindVirtualRecord(FDataSet.Bookmark);
    if i >= 0 then
    begin
//      FDataSet.FreeBookmark(FVirtualRecList[i]);
      FVirtualRecList.Delete(i);
    end;
  end;

  DoSumListChanged;
end;

procedure TDBSumListProducer.DataSetAfterClose(DataSet: TDataSet);
//var
//  i: integer;
begin
  if Active then
  begin
    ClearSumValues;
    DoSumListChanged;
    Changing := False;
  end;

//  if Assigned(FDataSet) and Assigned(FVirtualRecList) and (FVirtualRecList.Count > 0) then
//    for i := 0 to FVirtualRecList.Count - 1 do
//      FDataSet.FreeBookmark(FVirtualRecList[i]);
  FVirtualRecList.Clear;

  if (Assigned(OldAfterClose)) then
    OldAfterClose(DataSet);
end;

procedure TDBSumListProducer.SetSumCollection(const Value: TDBSumCollection);
begin
  FSumCollection.Assign(Value);
end;

procedure TDBSumListProducer.SetActive(const Value: Boolean);
begin
  if (FActive = Value) then Exit;
  if (Value = True) then Activate(True);
  if (Value = False) then Deactivate(True);
end;

procedure TDBSumListProducer.Activate(ARecalcAll: Boolean);
begin
  FActive := True;
  if (csLoading in FOwner.ComponentState) or
    (not FDesignTimeWork and (csDesigning in FOwner.ComponentState)) then Exit;
  SetDataSetEvents;
  if ARecalcAll then RecalcAll;
end;

procedure TDBSumListProducer.Deactivate(AClearSumValues: Boolean);
begin
  FActive := False;
  if (csLoading in FOwner.ComponentState) or
    (not FDesignTimeWork and (csDesigning in FOwner.ComponentState)) then Exit;
  ReturnEvents;
  if AClearSumValues then ClearSumValues;
end;

procedure TDBSumListProducer.DoSumListChanged;
begin
  if Assigned(SumListChanged) then SumListChanged(Self);
end;

procedure TDBSumListProducer.ClearSumValues;
var i: Integer;
  item: TDBSum;
begin
  for i := 0 to FSumCollection.Count - 1 do
  begin
    item := TDBSum(FSumCollection.Items[i]);
    item.SumValue := 0;
    item.Value := 0;
    item.FSumValueAsSum := 0;
    item.FNotNullRecordCount := 0;
  end;
  DoSumListChanged;
end;

procedure TDBSumListProducer.SetExternalRecalc(const Value: Boolean);
begin
  if (FExternalRecalc = Value) then Exit;
  FExternalRecalc := Value;
  RecalcAll;
end;


procedure TDBSumListProducer.MasterDataSetAfterScroll(DataSet: TDataSet);
begin
  if (Assigned(OldMasterAfterScroll)) then
    OldMasterAfterScroll(DataSet);

  if (Active = False) then Exit;
  if Changing = False then RecalcAll;
end;

procedure TDBSumListProducer.DataSetAfterCancel(DataSet: TDataSet);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产乱子伦视频一区二区三区 | 亚洲人成在线播放网站岛国| 粉嫩13p一区二区三区| 国产精品污网站| 成人aa视频在线观看| 日韩精品一区第一页| 91精品一区二区三区久久久久久| 日韩成人午夜精品| 欧美成人三级电影在线| 国产成人8x视频一区二区 | 欧美变态口味重另类| 国产一区二区三区免费看| 国产欧美日韩不卡免费| 色婷婷综合久久久中文字幕| 日韩福利电影在线观看| 国产午夜精品一区二区三区视频| 成人国产一区二区三区精品| 亚洲午夜免费电影| 精品捆绑美女sm三区| 成人a免费在线看| 日日骚欧美日韩| 久久精品免视看| 91传媒视频在线播放| 日本女优在线视频一区二区| 国产丝袜在线精品| 欧美日韩一区二区三区高清| 国产乱码精品一品二品| 亚洲裸体xxx| 日韩精品综合一本久道在线视频| 成人激情校园春色| 免费人成在线不卡| 亚洲欧洲精品成人久久奇米网| 3d动漫精品啪啪| 91在线无精精品入口| 久久精品国产99国产| 亚洲精品伦理在线| 欧美xingq一区二区| 日本高清免费不卡视频| 国产成人夜色高潮福利影视| 亚洲成a人在线观看| 欧美国产精品久久| 日韩一区二区三区免费观看| 99久久99精品久久久久久| 麻豆成人综合网| 亚洲精品日韩专区silk| www国产亚洲精品久久麻豆| 国产日产精品1区| 欧洲色大大久久| 成人av资源在线观看| 免费黄网站欧美| 亚洲一区免费在线观看| 国产精品久久久久aaaa| 欧美精品一区二区三区蜜桃| 欧美精品色综合| 色婷婷久久久久swag精品| 国产91丝袜在线观看| 精品一区免费av| 日本特黄久久久高潮| 亚洲午夜久久久久久久久电影网| 国产精品电影院| 国产精品色一区二区三区| 精品欧美久久久| 日韩欧美一二三四区| 欧美欧美欧美欧美| 欧美亚洲综合另类| 色婷婷激情综合| 97精品久久久午夜一区二区三区| 成人sese在线| 99精品久久只有精品| youjizz久久| 99久久婷婷国产精品综合| 99久久综合国产精品| 成人免费精品视频| 成人av电影在线观看| 99在线视频精品| av亚洲精华国产精华精| 色综合天天性综合| 91国内精品野花午夜精品| 日本精品一级二级| 久久一二三国产| 欧美韩日一区二区三区四区| 中文字幕免费不卡| 国产精品国产三级国产aⅴ中文 | 欧美国产精品一区二区三区| 国产欧美精品在线观看| 国产精品美女久久福利网站| 国产精品久久久久一区 | 欧美激情中文字幕一区二区| 国产欧美日韩在线观看| 1000精品久久久久久久久| 亚洲图片另类小说| 亚洲电影你懂得| 美腿丝袜亚洲综合| 国产69精品久久99不卡| 91色婷婷久久久久合中文| 欧美在线|欧美| 91.xcao| 2023国产精品| 国产精品另类一区| 一区二区三区精品视频| 图片区小说区国产精品视频| 精品系列免费在线观看| 福利电影一区二区| 91福利在线导航| 日韩你懂的在线观看| 欧美激情在线看| 一区二区成人在线| 久久国产精品第一页| 成人av集中营| 6080午夜不卡| 国产精品天美传媒| 亚洲1区2区3区4区| 丰满亚洲少妇av| 欧美日韩国产美| 国产欧美视频一区二区三区| 依依成人综合视频| 国产一区二区剧情av在线| 色偷偷一区二区三区| 日韩美女一区二区三区| 亚洲精品精品亚洲| 久久成人免费电影| 色视频成人在线观看免| 2019国产精品| 亚洲一区二区三区国产| 国产.欧美.日韩| 欧美精品丝袜久久久中文字幕| 国产精品久久精品日日| 麻豆精品在线观看| 色综合久久中文字幕| 亚洲精品在线电影| 亚洲国产乱码最新视频 | 久久久综合网站| 天堂久久久久va久久久久| 不卡高清视频专区| 精品国产百合女同互慰| 丝袜诱惑制服诱惑色一区在线观看| 成人av高清在线| 久久精品免费在线观看| 免费成人在线网站| 欧美日韩中文字幕一区| 中文字幕一区二区三区色视频| 国模无码大尺度一区二区三区| 欧美视频一区二区三区| 综合色中文字幕| heyzo一本久久综合| 久久亚洲综合色| 久久se精品一区精品二区| 555www色欧美视频| 夜夜精品视频一区二区| 91在线观看一区二区| 欧美经典一区二区三区| 精品一区二区三区免费视频| 91精品国产一区二区三区香蕉 | 欧美精品123区| 国产乱子轮精品视频| 欧美日韩三级在线| 亚洲另类中文字| 99久久久国产精品免费蜜臀| 国产精品伦理在线| 国产成+人+日韩+欧美+亚洲| 国产午夜亚洲精品理论片色戒 | 91偷拍与自偷拍精品| 国产精品网站在线播放| 国产精品一级片在线观看| 久久婷婷久久一区二区三区| 激情五月播播久久久精品| 精品福利av导航| 国产精品一区专区| 国产欧美一区二区在线| 成人性生交大片免费| 一区精品在线播放| 91久久国产综合久久| 亚洲午夜在线电影| 精品污污网站免费看| 偷窥国产亚洲免费视频| 91精品免费观看| 国内外成人在线视频| 欧美国产激情一区二区三区蜜月| 粉嫩av亚洲一区二区图片| 亚洲天堂福利av| 欧美亚一区二区| 青青草原综合久久大伊人精品| 欧美α欧美αv大片| 国产福利一区二区三区视频| 国产精品久久久久桃色tv| 91同城在线观看| 日韩电影一区二区三区| 精品国产乱码久久久久久浪潮| 国产成人免费视频| 亚洲激情综合网| 欧美一区二区三区日韩| 国产成人h网站| 亚洲自拍偷拍av| 精品av久久707| 97精品久久久午夜一区二区三区 | 中文字幕亚洲精品在线观看| 色一区在线观看| 美日韩一级片在线观看| 国产精品麻豆视频| 欧美日韩一区小说|