一个很实用的Ehlib排序函数,适合ADO

Ehlib3.0版本以上虽然支持排序功能,但不支持带有Order By的SQL语句,而且排序很慢;我写的这个排序函数,利用ADO的sort方法,排序很快,几万条数据也是很快。该函数支持Lookup字段排序,不支持计算字段排序,因为计算字段值在内存里高速运算。排序分为:升序、降序和默认三种,支持排序图标。

procedure  SortDBGridEh(Sender: TObject; ACol: Integer;
  Column: TColumnEh);
var
  FieldName, SortStr: string;
begin
  Screen.Cursor := crSQLWait;
  try
    if (Sender is TDBGridEh) and
      ((Sender as TDBGridEh).DataSource.DataSet <> nil) then
    begin
      if not ((Sender as TDBGridEh).DataSource.DataSet is TCustomADODataSet) then
        Exit;

      if not (Sender as TDBGridEh).DataSource.DataSet.Active then
        Exit;

      FieldName := Column.FieldName;
      if (Sender as TDBGridEh).DataSource.DataSet.FindField(FieldName).IsBlob then
        Exit;

      if (Sender as TDBGridEh).DataSource.DataSet.FieldByName(FieldName).FieldKind =
        fkData then
        SortStr := FieldName
      else if (Sender as TDBGridEh).DataSource.DataSet.FieldByName(FieldName).FieldKind =
        fkLookup then
        FieldName := (Sender as TDBGridEh).DataSource.DataSet.FieldByName(FieldName).KeyFields
      else
        FieldName := '';

      if (FieldName = '') or (Pos(';', FieldName) > 0) then
        Exit;
      case Column.Title.SortMarker of
        smNoneEh:
          begin
            Column.Title.SortMarker := smUpEh;
            TCustomADODataSet((Sender as TDBGridEh).DataSource.DataSet).Sort :=
              FieldName;

          end;
        smUpEh:
          begin
            Column.Title.SortMarker := smDownEh;
            TCustomADODataSet((Sender as TDBGridEh).DataSource.DataSet).Sort :=
              FieldName + ' DESC';
          end;
        smDownEh:
          begin
            Column.Title.SortMarker := smNoneEh;
            TCustomADODataSet((Sender as TDBGridEh).DataSource.DataSet).Sort := '';
          end;
      end;
    end;
  finally
    Screen.Cursor := crDefault;
  end;
end;

--程序实现如下:
--在DBGridEh的事件OnTitleBtnClick引用该函数即可:
procedure TFrmU_BasicSetup.dbgAddrCodeTitleBtnClick(Sender: TObject;
  ACol: Integer; Column: TColumnEh);
begin
   SortDBGridEh(Sender, ACol, Column);
end;
--为了保证表格的每一列都能点击触发排序,你需要将你需要排序的列属性
--  Title->TitleButton设置为True。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ADO中创建Docker镜像的过程涉及几个步骤,包括编写Dockerfile文件,使用Docker命令构建镜像,以及将镜像推送到Docker仓库。下面是一个基本的步骤说明: 1. **编写Dockerfile文件**:Dockerfile是一个文本文件,其中包含了构建Docker镜像所需的指令和配置。你可以根据需要自定义Dockerfile的内容。以下是一个基本的Dockerfile示例: ```Dockerfile # 使用官方的python基础镜像 FROM python:3.8 # 设置工作目录 WORKDIR /app # 将当前目录内容复制到镜像的工作目录中 ADD . /app # 安装需要的依赖 RUN pip install -r requirements.txt # 定义环境变量 ENV NAME World # 运行命令 CMD ["python", "your_script.py"] ``` 这个Dockerfile假设你的应用是一个Python应用,并且有一个requirements.txt文件列出所有需要的依赖。你需要根据你的实际情况修改这个文件。 2. **构建Docker镜像**:在包含Dockerfile的目录中,运行以下命令来构建镜像: ```bash docker build -t your_image_name . ``` 这个命令会根据Dockerfile中的指令构建一个镜像,并命名为your_image_name。你需要将your_image_name替换为你想使用的镜像名称。 3. **推送镜像到Docker仓库**:一旦你的镜像构建完成,你可以将其推送到一个公开的Docker仓库以供其他人使用。运行以下命令将镜像推送到Docker Hub: ```bash docker push your_image_name ``` 这将把你的镜像推送到Docker Hub,其他人可以通过运行以下命令来拉取你的镜像: ```bash docker pull your_image_name ``` 以上就是在ADO中创建Docker镜像的基本步骤。根据你的具体需求,你可能需要调整Dockerfile的内容,例如更改基础镜像、安装不同的依赖、设置环境变量等。同时,你还需要确保你的系统已经安装了适当的Docker组件,并且具有足够的权限来构建和推送镜像。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值