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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dbsumlst.pas

?? Delphi控件源碼
?? PAS
?? 第 1 頁 / 共 3 頁
字號:
    FMasterPropInfo := nil;
    FMasterDataSet := nil;

    FEventsOverloaded := False;
    for i := 0 to FVirtualRecList.Count-1 do FDataSet.FreeBookmark(FVirtualRecList[i]);
    FVirtualRecList.Clear;
  end;
end;

procedure TDBSumListProducer.SetDataSet(Value:TDataSet);
var OldActive:Boolean;
begin
  if (FDataSet = Value) then Exit;
  if not (csLoading in FOwner.ComponentState) and
      (FDesignTimeWork or not (csDesigning in FOwner.ComponentState)) then begin
    OldActive := Active;
    Deactivate(True);

    FDataSet := Value;

    if OldActive then Activate(True);

  end else FDataSet := Value;
end;

procedure TDBSumListProducer.Loaded;
begin
//  inherited;
  if Assigned(FDataSet) and Active then begin
    Activate(True);
  end;
end;

procedure TDBSumListProducer.RecalcAll;
var i: Integer;
    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:
              begin
                if (FDataSet.FieldByName(Item.FieldName).IsNull = False) then
                  Item.SumValue := Item.SumValue + FDataSet.FieldByName(Item.FieldName).AsFloat;
              end;
              goCount: Item.SumValue := Item.SumValue + 1;
            end;
          end;
        end;
        if not FDataSet.IsSequenced and VirtualRecords then
          FVirtualRecList.Add(Pointer(FDataSet.GetBookmark));
        FDataSet.Next;
      end;
      FDataSet.First;

      FDataSet.EnableControls;
    end;
////  Form1.Edit1.Text := FormatFloat('#,##0.0',cur);
////  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 (Assigned(OldAfterEdit)) then
   OldAfterEdit(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:
          if (FDataSet.FieldByName(Item.FieldName).IsNull = False) then
            Item.Value := FDataSet.FieldByName(Item.FieldName).AsFloat
          else
            Item.Value := 0;
        goCount: Item.Value := 0;
      end;
    end;
  end;

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: Item.Value := 0;
          goCount: Item.Value := 1;
        end;
      end;
    end;

    if not FDataSet.IsSequenced and VirtualRecords then begin
      ABookMark := FDataSet.GetBookmark;
      if Assigned(ABookMark) then
        FVirtualRecList.Add(Pointer(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:
            Item.SumValue := Item.SumValue + Item.Value;
        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 := DataSet.CompareBookmarks(TBookMark(FVirtualRecList[ARecNo]), TBookMark(FDataSet.Bookmark))
      else
        C := 0;
      if (C > 0) then
        while C > 0 do begin
          Dec(ARecNo);
          if (ARecNo < 0) then Break;
          C := DataSet.CompareBookmarks(TBookMark(FVirtualRecList[ARecNo]), TBookMark(FDataSet.Bookmark));
        end
      else if (C < 0) then
        while C < 0 do begin
          Inc(ARecNo);
          if (ARecNo >= FVirtualRecList.Count) then Break;
          C := DataSet.CompareBookmarks(TBookMark(FVirtualRecList[ARecNo]), TBookMark(FDataSet.Bookmark));
        end;
      FVirtualRecList.Insert(ARecNo,Pointer(FDataSet.GetBookmark));
      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: Item.SumValue := Item.SumValue - 1;
      end;
    end;
  end;

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

  DoSumListChanged;
end;

procedure TDBSumListProducer.DataSetAfterClose(DataSet: TDataSet);
begin
  if Active then
  begin
    ClearSumValues;
    DoSumListChanged;
    Changing := False;
  end;
  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;
  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);
begin
  if (Assigned(OldAfterCancel)) then
   OldAfterCancel(DataSet);
  FTryedInsert := False;
end;


function TDBSumListProducer.GetOwner: TPersistent;
begin
  Result := FOwner;
end;

procedure TDBSumListProducer.Update;
begin

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人综合网| 亚洲午夜久久久久久久久久久| 五月激情六月综合| 天天色综合天天| 人人狠狠综合久久亚洲| 国产永久精品大片wwwapp| voyeur盗摄精品| 欧美日韩一级二级三级| 久久欧美一区二区| 一区二区三区日韩欧美| 久久福利视频一区二区| 99精品欧美一区二区蜜桃免费| 国产在线一区二区综合免费视频| 亚洲香蕉伊在人在线观| 韩国精品主播一区二区在线观看| 亚洲综合成人在线视频| 美女网站色91| 91丝袜美女网| 精品日韩成人av| 一区二区三区四区精品在线视频 | 亚洲国产精品一区二区久久| 日韩专区中文字幕一区二区| 国产精品中文字幕日韩精品| 色婷婷综合久久久久中文一区二区| 97精品超碰一区二区三区| 91精品一区二区三区久久久久久| 欧美日韩免费电影| 久久久久国产一区二区三区四区| 久久精品一区二区三区不卡牛牛| wwwwww.欧美系列| 一区二区三区日韩精品| 极品少妇xxxx精品少妇偷拍 | 3atv在线一区二区三区| 欧美精彩视频一区二区三区| 日本强好片久久久久久aaa| av一二三不卡影片| 精品国产网站在线观看| 亚洲不卡一区二区三区| 成人午夜碰碰视频| 欧美成人国产一区二区| 一区二区三区欧美视频| 国产.精品.日韩.另类.中文.在线.播放 | 激情综合一区二区三区| 精品视频一区 二区 三区| 国产精品美女久久久久久久久| 亚洲国产高清aⅴ视频| 美女在线视频一区| 欧美日韩成人综合在线一区二区| 欧美精品久久一区二区三区 | 日本中文字幕一区二区有限公司| 奇米色777欧美一区二区| 成人精品免费视频| 久久综合九色综合欧美98| 首页国产欧美久久| 欧美三级韩国三级日本一级| 亚洲欧美韩国综合色| 成人免费视频网站在线观看| 久久综合狠狠综合久久综合88 | 色综合天天综合给合国产| 国产亚洲综合性久久久影院| 蜜臂av日日欢夜夜爽一区| 欧美老人xxxx18| 亚洲电影第三页| 欧美亚洲综合网| 亚洲久草在线视频| 91久久人澡人人添人人爽欧美| 欧美情侣在线播放| 亚洲线精品一区二区三区 | 精品国产1区2区3区| 蜜桃精品视频在线观看| 日韩欧美一区二区三区在线| 秋霞午夜鲁丝一区二区老狼| 欧美一区二区三区影视| 五月开心婷婷久久| 666欧美在线视频| 视频精品一区二区| 欧美一级一区二区| 麻豆久久久久久| 精品美女被调教视频大全网站| 亚洲精品国产一区二区三区四区在线| 青娱乐精品在线视频| 欧美日韩成人综合天天影院| 亚洲国产精品一区二区尤物区| 国产成人免费在线视频| 国产欧美日韩综合精品一区二区| 亚洲r级在线视频| 欧美美女一区二区三区| 日韩精品电影在线| 91精品国产综合久久蜜臀 | 91久久精品一区二区| 亚洲一区二区三区视频在线| 欧美挠脚心视频网站| 日日嗨av一区二区三区四区| 日韩一区二区三区四区 | 欧美视频完全免费看| 天天操天天综合网| 精品免费日韩av| 国产成a人亚洲精品| 亚洲人成网站在线| 欧美性大战久久久久久久| 偷拍一区二区三区| 精品99一区二区| 成人高清视频在线| 亚洲香肠在线观看| 精品日产卡一卡二卡麻豆| 成人h动漫精品| 亚洲日本一区二区| 3d动漫精品啪啪| 国产精品影音先锋| 亚洲精品乱码久久久久久久久 | 久久久久国产一区二区三区四区| 午夜精品一区二区三区免费视频 | 欧美一区二区播放| 国产成人精品在线看| 一区二区三区欧美日| 日韩西西人体444www| 北岛玲一区二区三区四区| 亚洲一级在线观看| 久久久久久亚洲综合| 色88888久久久久久影院按摩| 中文字幕免费不卡在线| 色婷婷av一区二区| 久久机这里只有精品| 中文字幕日韩精品一区| 欧美一区二区三区思思人| 成人永久aaa| 日韩av一区二区在线影视| 国产精品入口麻豆九色| 3d动漫精品啪啪| 91在线一区二区| 卡一卡二国产精品| 亚洲另类中文字| 久久久国产精华| 欧美巨大另类极品videosbest| 日韩电影一二三区| 中文字幕精品三区| 欧美电影影音先锋| 成人av动漫网站| 蜜桃在线一区二区三区| 一区二区三区丝袜| 日本一区二区不卡视频| 欧美一级欧美三级在线观看| 99久久精品国产导航| 激情小说亚洲一区| 日一区二区三区| 亚洲美女区一区| 国产亚洲精品精华液| 欧美一卡二卡在线| 欧美日韩在线综合| 91免费精品国自产拍在线不卡 | 欧美三级韩国三级日本三斤| 国产精品一区二区久久不卡| 丝袜美腿亚洲色图| 亚洲婷婷综合久久一本伊一区| 色美美综合视频| 成人免费观看视频| 国产一区二区久久| 日本一区中文字幕| 亚洲三级在线观看| 国产精品美女www爽爽爽| 日韩欧美国产成人一区二区| 欧美日韩在线播放一区| 色综合中文字幕国产| 波多野结衣精品在线| 国产成人精品免费网站| 国产一区二区福利| 精品一区二区三区影院在线午夜 | 国产91露脸合集magnet| 蜜桃91丨九色丨蝌蚪91桃色| 天天色图综合网| 亚洲国产精品久久久久婷婷884 | 日本欧美在线观看| 五月婷婷综合激情| 五月开心婷婷久久| 亚洲成a人在线观看| 亚洲国产另类精品专区| 一区二区在线电影| 亚洲毛片av在线| 亚洲欧美色综合| 亚洲人成网站在线| 一区二区三区四区中文字幕| 自拍视频在线观看一区二区| 中文字幕乱码日本亚洲一区二区| 欧美在线观看一区二区| 日本黄色一区二区| 在线观看日韩精品| 色94色欧美sute亚洲线路二 | 久久综合999| 精品国产三级电影在线观看| 精品国产一区二区三区忘忧草| 91在线观看高清| 99riav久久精品riav| 99re视频精品| 在线精品视频一区二区三四| 欧美中文字幕不卡| 欧美日韩国产免费一区二区| 欧美一级欧美三级在线观看| 精品精品国产高清a毛片牛牛| 91黄色免费网站| 51精品秘密在线观看|