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

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

?? ehlibcds.pas

?? EHlib CN For Delphi2009
?? PAS
字號:
{*******************************************************}
{                                                       }
{                       EhLib v3.5                      }
{          Register object that sort data in            }
{                TCustomClientDataSet                   }
{                                                       }
{   Copyright (c) 2002, 2003 by Dmitry V. Bolshakov     }
{                                                       }
{*******************************************************}

{*******************************************************}
{ Add this unit to 'uses' clause of any unit of your    }
{ project to allow TDBGridEh to sort data in            }
{ TClientDataSet automatically  after sorting markers   }
{ will be changed.                                      }
{ TCDSDatasetFeaturesEh determine if                    }
{ TDBGridEh.SortLocal = True then it will create index  }
{ with name 'SortIndexEh' using SortMarkedColumns       }
{ else if SortLocal = False and CDS connected to other  }
{ DataSet via DataSetProvider it will try to sord data  }
{ in this DataSet using GetDatasetFeaturesForDataSet    }
{ function                                              }
{*******************************************************}

unit EhLibCDS;

{$I EhLib.Inc}

interface

uses
{$IFDEF EH_LIB_6} Variants, {$ENDIF}
  DbUtilsEh, DBGridEh, Db, DBClient, Provider, SysUtils;

type

{$IFNDEF EH_LIB_6}
  TCustomClientDataSet = class(TClientDataSet);
{$ENDIF}

  TCDSDatasetFeaturesEh = class(TDatasetFeaturesEh)
  public
    function GetProviderDataSet(DataSet: TDataSet): TDataSet; virtual;
    procedure ApplySorting(Sender: TObject; DataSet: TDataSet; IsReopen: Boolean); override;
    procedure ApplyFilter(Sender: TObject; DataSet: TDataSet; IsReopen: Boolean); override;
  end;

implementation

uses Classes;

type
{$IFDEF EH_LIB_6}
  TCustomClientDataSetCrack = class(TCustomClientDataSet);
{$ELSE}
  TCustomClientDataSetCrack = class(TClientDataSet);
{$ENDIF}

{ TCDSDatasetFeaturesEh }

function TCDSDatasetFeaturesEh.GetProviderDataSet(DataSet: TDataSet): TDataSet;
var
{$IFDEF CIL}
  CDS: TClientDataSet;
{$ELSE}
  CDS: TCustomClientDataSetCrack;
{$ENDIF}
  ProvComp: TComponent;
  DS: TObject;
begin
  Result := nil;
{$IFDEF EH_LIB_6}
  if not (DataSet is TCustomClientDataSet) then Exit;
{$ELSE}
  if not (DataSet is TClientDataSet) then Exit;
{$ENDIF}
{$IFDEF CIL}
{ TODO : How to get ProviderName for TCustomDataSet under CIL }
  if DataSet is TClientDataSet
    then CDS := TClientDataSet(DataSet)
    else Exit;
{$ELSE}
  CDS := TCustomClientDataSetCrack(DataSet);
{$ENDIF}
  if (CDS.ProviderName <> '') and Assigned(CDS.Owner) then
  begin
    ProvComp := CDS.Owner.FindComponent(CDS.ProviderName);
    if Assigned(ProvComp) and (ProvComp is TCustomProvider) then
    begin
      DS := GetObjectProperty(ProvComp, 'DataSet');
      if Assigned(DS) and (DS is TDataSet) then
        Result := TDataSet(DS);
    end;
  end;
end;

procedure TCDSDatasetFeaturesEh.ApplySorting(Sender: TObject; DataSet: TDataSet; IsReopen: Boolean);
var
  DS: TDataSet;
  CDS: TCustomClientDataSetCrack;
  DatasetFeatures: TDatasetFeaturesEh;
  i: Integer;
  IndexFields, IndexDescFields: String;
begin
  if Sender is TCustomDBGridEh then
    if TCustomDBGridEh(Sender).SortLocal then
      with TCustomDBGridEh(Sender) do
      begin
        IndexFields := '';
        IndexDescFields := '';
        for i := 0 to SortMarkedColumns.Count - 1 do
        begin
          IndexFields := IndexFields + SortMarkedColumns[i].FieldName + ';';
          if SortMarkedColumns[i].Title.SortMarker = smUpEh then
            IndexDescFields := IndexDescFields + SortMarkedColumns[i].FieldName + ';'
        end;
        Delete(IndexFields,Length(IndexFields),1);
        Delete(IndexDescFields,Length(IndexDescFields),1);
{$IFDEF EH_LIB_6}
        if (DataSet is TCustomClientDataSet) then
{$ELSE}
        if (DataSet is TClientDataSet) then
{$ENDIF}
        begin
          CDS := TCustomClientDataSetCrack(DataSet);
          CDS.IndexDefs.Update;
          if CDS.IndexDefs.IndexOf('SortIndexEh') >= 0 then
            CDS.DeleteIndex('SortIndexEh');
          if IndexFields > '' then
          begin
            CDS.AddIndex('SortIndexEh', IndexFields, [], IndexDescFields);
            CDS.IndexDefs.Update;
            CDS.IndexName := 'SortIndexEh';
          end else
            CDS.IndexName := '';
          CDS.First;
        end;
      end
    else
    begin
      DS := GetProviderDataSet(DataSet);
      if DS <> nil then
      begin
        DatasetFeatures := GetDatasetFeaturesForDataSet(DS);
        if DatasetFeatures <> nil then
          DatasetFeatures.ApplySorting(Sender, DS, False);
        DataSet.Close;
        DataSet.Open;
      end;
    end;
end;

procedure TCDSDatasetFeaturesEh.ApplyFilter(Sender: TObject; DataSet: TDataSet; IsReopen: Boolean);
var
  DS: TDataSet;
  DatasetFeatures: TDatasetFeaturesEh;
begin
  if TDBGridEh(Sender).STFilter.Local then
  begin
    TDBGridEh(Sender).DataSource.DataSet.Filter :=
      GetExpressionAsFilterString(TDBGridEh(Sender),
        GetOneExpressionAsLocalFilterString, nil, False, True);
    // CDS bug when empty filter and aggrigated fields
    if TDBGridEh(Sender).DataSource.DataSet.Filter = '' then
      TDBGridEh(Sender).DataSource.DataSet.Filter := '1=1';
    TDBGridEh(Sender).DataSource.DataSet.Filtered := True;        
  end else if (DataSet is {$IFDEF EH_LIB_6}TCustomClientDataSet{$ELSE}TClientDataSet{$ENDIF}) then
  begin
    DS := GetProviderDataSet(TCustomClientDataSet(DataSet));
    if DS <> nil then
    begin
      DatasetFeatures := GetDatasetFeaturesForDataSet(TDataSet(DS));
      if (DatasetFeatures <> nil) then
        DatasetFeatures.ApplyFilter(TDBGridEh(Sender), TDataSet(DS), False);
      DataSet.Close;
      DataSet.Open;
    end;
  end;
end;

initialization
{$IFDEF EH_LIB_6}
  RegisterDatasetFeaturesEh(TCDSDatasetFeaturesEh, TCustomClientDataSet);
{$ELSE}
  RegisterDatasetFeaturesEh(TCDSDatasetFeaturesEh, TClientDataSet);
{$ENDIF}
end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久桃色tv| 蜜桃视频在线一区| 成人午夜免费av| 久久久亚洲高清| 久久精品国内一区二区三区| 日本高清成人免费播放| 亚洲视频在线观看三级| 色综合天天天天做夜夜夜夜做| 久久综合丝袜日本网| 精品一区二区三区视频| 日韩午夜在线影院| 亚洲激情六月丁香| 在线视频你懂得一区| 一区二区三区欧美视频| 欧美日韩中文一区| 国产精品的网站| 91在线观看美女| 一区二区三区欧美视频| 欧美日韩在线三级| 日本欧美在线观看| 日韩欧美的一区| 国产999精品久久| 最新日韩在线视频| 欧洲视频一区二区| 青草av.久久免费一区| 3atv在线一区二区三区| 久久福利视频一区二区| 久久精品无码一区二区三区| 国产精品综合二区| 国产精品不卡在线| 欧美美女bb生活片| 国产在线国偷精品产拍免费yy | 久久精品水蜜桃av综合天堂| 国产成a人亚洲| 一区二区三区在线免费视频| 777午夜精品免费视频| 国产精品中文有码| 亚洲一区二区四区蜜桃| 91精品国产91久久综合桃花| 国模娜娜一区二区三区| 中文字幕+乱码+中文字幕一区| 国产精品99久久久久| 亚洲精品菠萝久久久久久久| 91精品久久久久久蜜臀| 极品瑜伽女神91| 亚洲丝袜制服诱惑| 欧美一二三区精品| 国产精品自拍网站| 一区二区在线观看免费| 欧美xxxx老人做受| 成年人网站91| 免费成人小视频| 亚洲欧美国产77777| 精品国产三级电影在线观看| 99视频国产精品| 久久精品国产色蜜蜜麻豆| 中文字幕在线免费不卡| 51精品秘密在线观看| 99re这里只有精品首页| 国产高清精品久久久久| 久久国产乱子精品免费女| 亚洲a一区二区| 亚洲国产一区二区三区青草影视| 国产精品福利电影一区二区三区四区| 久久久综合精品| 久久综合久久综合久久| 日韩免费视频线观看| 日韩欧美专区在线| 欧美一级欧美一级在线播放| 欧美日韩在线三级| 精品视频免费看| 欧美日韩1区2区| 91精品国产综合久久久久久久| 欧美色电影在线| 制服丝袜激情欧洲亚洲| 欧美日韩日日摸| 欧美日产国产精品| 日韩欧美在线1卡| 日韩免费视频一区二区| 91精品免费观看| 欧美mv和日韩mv的网站| 欧美va日韩va| 久久综合狠狠综合久久激情| 欧美精品一区二区在线播放| 久久色.com| 国产精品情趣视频| 性欧美大战久久久久久久久| 国产精品女同一区二区三区| 日韩一级片网站| 欧美日韩美少妇| www.日韩精品| 在线视频一区二区三| 国产精品99久久久久久似苏梦涵| 欧美一区二区三区视频免费播放 | 91捆绑美女网站| 精品一区二区免费在线观看| 不卡av电影在线播放| 精品国产一区二区精华| 自拍偷拍亚洲综合| 欧美tickle裸体挠脚心vk| 国产三级一区二区三区| 久久久久久久久久久电影| 欧美精品一区二区久久婷婷| 一本大道久久a久久综合| 国产成人精品1024| 中文字幕一区二区三区不卡在线 | 欧美色图在线观看| 91极品视觉盛宴| 精品欧美黑人一区二区三区| 久久九九国产精品| 综合婷婷亚洲小说| 男女激情视频一区| 免费观看成人av| 男女性色大片免费观看一区二区 | 91精品综合久久久久久| wwwwww.欧美系列| 国产精品免费观看视频| 最新中文字幕一区二区三区| 国产精品久久久久aaaa樱花| 亚洲男人天堂一区| 亚洲国产精品久久人人爱| 一区二区三区欧美日| 国产精品白丝在线| 午夜视频一区在线观看| 国产精品久久久久一区二区三区 | 亚洲欧美电影院| 日本中文一区二区三区| 成人av综合在线| 久久久精品国产免大香伊| 青青草一区二区三区| 欧美一级生活片| 国产一区二区精品久久99| 91一区二区在线| 日本一区二区在线不卡| 亚洲视频综合在线| 亚洲人成网站色在线观看| 午夜婷婷国产麻豆精品| 不卡av免费在线观看| 国产亚洲精品资源在线26u| 777奇米成人网| 国产拍揄自揄精品视频麻豆| 亚洲成a人片在线不卡一二三区| 国产精品一区二区三区99| 欧美日韩免费一区二区三区视频| 国产精品美女久久久久久久| 激情都市一区二区| 欧美一区二区三区免费大片| 亚洲一区二区三区三| 成人一区二区三区| 精品动漫一区二区三区在线观看| 亚洲成人www| 91久久精品一区二区| 国产精品污www在线观看| 韩国一区二区在线观看| 日韩三级在线免费观看| 日韩精品久久久久久| 欧美日韩国产高清一区二区三区 | 日本美女视频一区二区| 色婷婷综合久久久中文字幕| 国产精品福利一区二区| 成人免费av网站| 欧美韩日一区二区三区四区| 国产麻豆视频精品| 久久这里只有精品首页| 激情偷乱视频一区二区三区| 欧美一级片在线| 久久精品国产精品亚洲综合| 91精品国产丝袜白色高跟鞋| 日韩电影在线观看电影| 这里只有精品免费| 日本午夜精品视频在线观看 | 色综合久久久久综合体桃花网| 国产91在线看| 狠狠色丁香婷综合久久| 日韩激情一二三区| 中文字幕人成不卡一区| 欧美成人一区二区三区在线观看| 国产乱理伦片在线观看夜一区| 亚洲激情av在线| 久久久国产精华| 欧美肥妇毛茸茸| 91高清在线观看| 日韩国产欧美在线播放| 成人精品免费网站| 中文字幕亚洲电影| 欧美性xxxxxxxx| 日本不卡不码高清免费观看| 日韩欧美中文字幕一区| 国产大陆亚洲精品国产| 亚洲欧美另类久久久精品2019| 色老汉一区二区三区| 亚洲午夜影视影院在线观看| 欧美一区二区视频网站| 精品无人区卡一卡二卡三乱码免费卡| 久久久久久免费| 色天使久久综合网天天| 美国三级日本三级久久99| 久久九九久久九九| 欧美无砖砖区免费| 精品一区二区三区久久|