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

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

?? dbsumlst.pas

?? 很COOL的GRID表格控件
?? 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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产寡妇亲子伦一区二区| 91香蕉视频mp4| 成人app网站| 欧美日韩国产另类不卡| 国产亚洲精品7777| 日韩电影在线免费| 色婷婷国产精品| 国产清纯在线一区二区www| 亚洲国产精品一区二区久久| 黄网站免费久久| 欧美三级电影在线看| 国产精品天美传媒| 麻豆91精品视频| 91久久一区二区| 中文字幕乱码日本亚洲一区二区 | 94色蜜桃网一区二区三区| 欧美福利一区二区| 一区二区三区免费网站| 国产成人免费视频网站| 精品入口麻豆88视频| 亚洲va韩国va欧美va精品| 91欧美激情一区二区三区成人| 久久久久久久av麻豆果冻| 秋霞电影一区二区| 欧美日韩亚州综合| 亚洲妇女屁股眼交7| 色88888久久久久久影院按摩| 国产精品色哟哟| 成人免费的视频| 国产欧美日韩麻豆91| 国产传媒欧美日韩成人| 亚洲精品一区二区三区影院| 青青草97国产精品免费观看| 欧美日韩高清一区二区不卡| 亚洲一级二级在线| 欧美日韩在线直播| 午夜在线电影亚洲一区| 欧美日韩精品一区二区天天拍小说 | 欧美a一区二区| 51精品国自产在线| 日韩电影在线免费观看| 日韩午夜在线观看视频| 看国产成人h片视频| 日韩精品一区二区三区老鸭窝| 久久精品国产网站| 久久久久九九视频| 国产99久久精品| 亚洲欧洲国产日本综合| 91浏览器入口在线观看| 一区二区三区产品免费精品久久75| 91免费国产在线| 亚洲主播在线观看| 欧美一区二区视频在线观看| 蜜桃av一区二区三区电影| 国产亚洲人成网站| 成人av在线播放网址| 一区二区三区精品| 日韩一区二区三区高清免费看看| 蜜臀va亚洲va欧美va天堂| 久久精品亚洲一区二区三区浴池| av亚洲精华国产精华精华| 亚洲三级免费电影| 91麻豆精品国产自产在线观看一区| 久久精品噜噜噜成人av农村| 久久婷婷久久一区二区三区| 91在线云播放| 美女视频黄 久久| 亚洲国产激情av| 欧美日韩国产一区| 国产传媒日韩欧美成人| 性欧美大战久久久久久久久| 精品国产伦一区二区三区观看体验 | 欧美成人女星排行榜| 成人午夜在线免费| 丝袜亚洲另类丝袜在线| 亚洲国产精品传媒在线观看| 欧洲一区在线观看| 国产黄色精品网站| 亚洲高清在线视频| 国产精品视频yy9299一区| 欧美日韩三级在线| 成人自拍视频在线| 天天av天天翘天天综合网 | 日韩精品在线看片z| www.色精品| 久久精品国产秦先生| 亚洲三级在线播放| 久久久三级国产网站| 欧美午夜电影在线播放| 国产精品白丝av| 日日摸夜夜添夜夜添亚洲女人| 国产精品全国免费观看高清| 正在播放亚洲一区| 欧美系列一区二区| 成人精品视频一区| 久久99国产精品久久99果冻传媒| 一区二区三区精品久久久| 国产精品丝袜久久久久久app| 欧美一区二区人人喊爽| 欧美性淫爽ww久久久久无| 国产高清精品久久久久| 久久精品72免费观看| 视频一区欧美日韩| 亚洲国产欧美一区二区三区丁香婷| 中文成人av在线| 久久久久久97三级| 精品国产91亚洲一区二区三区婷婷| 欧美视频在线观看一区| 一本色道久久综合狠狠躁的推荐| 懂色av一区二区三区蜜臀| 国产精品自拍在线| 国产精品自拍三区| 狠狠色狠狠色综合日日91app| 日韩av午夜在线观看| 日韩国产在线一| 日韩精品久久理论片| 午夜精品福利在线| 天堂成人免费av电影一区| 亚洲电影一级片| 日本欧美久久久久免费播放网| 午夜欧美电影在线观看| 日一区二区三区| 日本v片在线高清不卡在线观看| 亚洲成a人在线观看| 午夜av一区二区| 美美哒免费高清在线观看视频一区二区 | 国产精品免费久久久久| 国产欧美视频一区二区三区| 国产精品美女久久久久久 | 青青草原综合久久大伊人精品 | 亚洲素人一区二区| 亚洲欧美国产77777| 亚洲精品国产一区二区三区四区在线| 依依成人综合视频| 午夜欧美在线一二页| 久久精品久久99精品久久| 国产精品18久久久久| 成人免费视频caoporn| 91福利社在线观看| 欧美日高清视频| 久久日一线二线三线suv| 国产亚洲人成网站| 亚洲黄色免费电影| 日韩精品1区2区3区| 国产一区二区免费看| 国产寡妇亲子伦一区二区| 色婷婷国产精品| 精品欧美一区二区三区精品久久| 欧美国产视频在线| 亚洲国产wwwccc36天堂| 国产永久精品大片wwwapp | 国产一区91精品张津瑜| 粉嫩嫩av羞羞动漫久久久| 91久久线看在观草草青青| 日韩精品在线看片z| 国产精品第一页第二页第三页| 亚洲成人久久影院| 国产69精品一区二区亚洲孕妇| 欧美在线影院一区二区| 26uuu久久综合| 亚洲欧美日韩久久| 韩国v欧美v亚洲v日本v| 欧美视频一二三区| 国产欧美久久久精品影院| 亚洲国产综合色| 成人av第一页| 日韩一区二区三| 亚洲国产综合视频在线观看| 国产东北露脸精品视频| 欧美二区在线观看| 中文字幕一区二区不卡| 精品午夜一区二区三区在线观看| 色婷婷综合久久| 国产日韩精品一区二区三区| 亚洲h动漫在线| 91影院在线免费观看| 国产亚洲午夜高清国产拍精品| 日韩电影免费在线| 在线中文字幕不卡| 国产精品网站一区| 狠狠色综合播放一区二区| 91精品国产乱码| 亚洲精品第1页| 99久久综合精品| 国产欧美日韩不卡| 国产酒店精品激情| 久久久一区二区三区捆绑**| 蜜桃一区二区三区在线| 欧美日韩国产另类不卡| 亚洲影视在线播放| 色网综合在线观看| 亚洲美女在线一区| 在线观看一区二区精品视频| 亚洲欧洲日韩在线| 99精品欧美一区| 自拍偷拍国产亚洲| 99久久婷婷国产| 成人免费一区二区三区视频| 成人午夜短视频| 国产精品电影一区二区三区|