datatool

该博客定义了datatools类,包含多个类过程。如GetSelectedRecord用于获取所选记录字段内容,addValue、insertValue等用于操作DBGridEh控件的页脚,addSum和addCount用于计算总和与数量,saveto可将DBGridEh内容保存为不同格式文件。

Unit datatool;

Interface
Uses
  Windows, Messages, SysUtils, Variants, Graphics, Classes, Controls, Forms,
  Dialogs, ComCtrls, DBGrids, DBGridEhImpExp,DB, DBGridEh;
Type
  datatools = Class(TObject)
  Public
    Class Procedure GetSelectedRecord
      (DataSet: TDataSet; FieldName: String;
      BookmarkList: TBookmarkList; Strings: TStrings); Overload;
    Class Procedure GetSelectedRecord
      (DataSet: TDataSet; FieldName: String;
      BookmarkList: TBookmarkListEH; Strings: TStrings); Overload;
    Class Procedure addValue(dg1: TDBGridEh; col, row: Integer; staticText: String);

    Class Procedure addSum(dg1: TDBGridEh; col, row: Integer; FieldName: String);
    Class Procedure insertValue(dg1: TDBGridEh; col, row: Integer; staticText: String);
    Class Procedure addCount(dg1: TDBGridEh; col, row: Integer; FieldName: String);
    class procedure saveto(dbgrid1:TDBGridEh;savedialog1:TSaveDialog);

  End;
Const thisyearsumfj = 'SELECT SUM(DS_XH.JE) FROM DS_XH,BM_YSKX WHERE DS_XH.KMBM=BM_YSKX.YSKXBM and BM_YSKX.SZBM=:aa ';
  lastyearsumfj = 'SELECT SUM(DS_XH.JE) FROM DS_XH,BM_YSKX WHERE DS_XH.KMBM=BM_YSKX.YSKXBM and BM_YSKX.SZBM=:aa ';
         // 'SELECT SUM(KP_KPMX.KPSJ_KPMX) FROM KP_KPZB,KP_KPMX WHERE KP_KPZB.WDH_KPZB=KP_KPMX.WDH_KPZB AND  KP_KPMX.SZBM=:AA ';
Implementation
Class Procedure datatools.GetSelectedRecord
  (DataSet: TDataSet; FieldName: String;
  BookmarkList: TBookmarkListEH; Strings: TStrings);
//GetSelectedRecord(Table1, `NAME`, DBGrid1.SelectedRows, Form2.ListBox1.Items);

// 这个过程中的参数分别为 : 数据表、字段名称、书签、用来保存所选字段内容的
// 字符串 ( 用于将内容传递到另一个单独窗体中的 TLIST 控件中 )
Var
  i: Integer;
  bm: TBookMark;
Begin
  Strings.Clear;
  With DataSet Do
  Begin
    DisableControls;
    bm := GetBookMark;
    Try
      // 每个选择的记录都有一个书签标志,这就为处理它们提供了条件
      For i := 0 To BookmarkList.Count - 1 Do
      Begin
        Bookmark := BookmarkList[i];
        Strings.Add(DataSet.FindField(FieldName).AsString);
      End;
    Finally
      GotoBookMark(bm);
      FreeBookMark(bm);
      EnableControls;
    End;
  End;
End;
Class Procedure datatools.GetSelectedRecord
  (DataSet: TDataSet; FieldName: String;
  BookmarkList: TBookmarkList; Strings: TStrings);
//GetSelectedRecord(Table1, `NAME`, DBGrid1.SelectedRows, Form2.ListBox1.Items);

// 这个过程中的参数分别为 : 数据表、字段名称、书签、用来保存所选字段内容的
// 字符串 ( 用于将内容传递到另一个单独窗体中的 TLIST 控件中 )
Var
  i: Integer;
  bm: TBookMark;
Begin
  Strings.Clear;
  With DataSet Do
  Begin
    DisableControls;
    bm := GetBookMark;
    Try
      // 每个选择的记录都有一个书签标志,这就为处理它们提供了条件
      For i := 0 To BookmarkList.Count - 1 Do
      Begin
        Bookmark := BookmarkList[i];
        Strings.Add(DataSet.FindField(FieldName).AsString);
      End;
    Finally
      GotoBookMark(bm);
      FreeBookMark(bm);
      EnableControls;
    End;
  End;
End;

Class Procedure datatools.addValue(dg1: TDBGridEh; col, row: Integer; staticText: String);
Begin
  dg1.columns[col].Footers.Add;
  dg1.columns[col].Footers[row].Value := staticText;
  dg1.columns[col].Footers[row].ValueType := fvtStaticText;
End;
Class Procedure datatools.insertValue         //本列后面的项,会自动后移
  (dg1: TDBGridEh; col, row: Integer; staticText: String);
Begin
  dg1.columns[col].Footers.Insert(row);
  dg1.columns[col].Footers[row].Value := staticText;
  dg1.columns[col].Footers[row].ValueType := fvtStaticText;
End;
Class Procedure datatools.addSum(dg1: TDBGridEh; col, row: Integer; FieldName: String);
Begin
  dg1.columns[col].Footers.Add;
  dg1.columns[col].Footers[row].Value := FieldName;
  dg1.columns[col].Footers[row].ValueType := fvtSum;
End;
Class Procedure datatools.addCount(dg1: TDBGridEh; col, row: Integer; FieldName: String);
Begin
  dg1.columns[col].Footers.Add;
  dg1.columns[col].Footers[row].Value := FieldName;
  dg1.columns[col].Footers[row].ValueType := fvtCount;
End;
class procedure datatools.saveto(dbgrid1:TDBGridEh;savedialog1:TSaveDialog);
  Var
  ExpClass: TDBGridEhExportClass;
  Ext: String;
Begin
  SaveDialog1.FileName := 'file1';
  // if (ActiveControl is TDBGridEh) then
  If SaveDialog1.Execute Then
  Begin
    Case SaveDialog1.FilterIndex Of
      1:
        Begin
          ExpClass := TDBGridEhExportAsText;
          Ext := 'txt';
        End;
      // 2: begin ExpClass := TDBGridEhExportAsCSV; Ext := 'csv'; end;
      2:
        Begin
          ExpClass := TDBGridEhExportAsHTML;
          Ext := 'htm';
        End;
      3:
        Begin
          ExpClass := TDBGridEhExportAsRTF;
          Ext := 'rtf';
        End;
      4:
        Begin
          ExpClass := TDBGridEhExportAsXLS;
          Ext := 'xls';
        End;
    Else
      ExpClass := Nil;
      Ext := '';
    End;
    If ExpClass <> Nil Then
    Begin
      If UpperCase(Copy(SaveDialog1.FileName, length(SaveDialog1.FileName) - 2, 3)) <>
        UpperCase(Ext) Then
        SaveDialog1.FileName := SaveDialog1.FileName + '.' + Ext;
      SaveDBGridEhToExportFile(ExpClass, DBGrid1, SaveDialog1.FileName, true);
    End;
  End;
End;
End.

<think>好的,用户想查找Universal Data Tool的安装指南,需要提供安装教程。首先,我需要确认Universal Data Tool的安装方式有哪些。通常这类工具可能支持多种安装方法,比如通过npm、Docker或者直接下载二进制文件。 接下来,我需要检查这些安装方法的具体步骤是否正确。例如,使用npm安装需要先安装Node.js环境,然后执行npm install命令。对于Docker方式,用户需要先安装Docker引擎,然后拉取镜像运行容器。另外,用户可能还需要一些依赖项,比如Python或其他库,这些也需要在教程中提及。 同时,要注意不同操作系统的差异,比如在Linux、macOS和Windows上的安装步骤可能有区别,需要分别说明。例如,在Windows上安装Docker可能需要启用WSL2,而Linux用户可能需要配置sudo权限。 还要考虑常见问题,比如权限不足导致安装失败,或者网络问题无法下载依赖包。这时候应该提供解决方法,比如使用sudo命令或者检查网络设置。 另外,需要验证参考资料的可靠性,确保提供的链接或命令是官方推荐的,避免用户安装过时或有问题的版本。可能还需要检查是否有最新的更新或版本变动,确保教程的时效性。 最后,组织内容结构,分步骤详细说明每种安装方法,并给出验证安装是否成功的命令,比如运行一个示例或查看版本号。这样用户能确认安装是否正确完成。 在编写过程中,要使用中文,保持语言简洁明了,避免技术术语过于复杂,必要时添加注释说明。同时,按照用户的要求,行内公式用$...$,独立公式用$$...$$,不过这里可能涉及代码和命令较多,数学公式较少,但如果有相关数学内容需要展示,比如版本号比较或依赖版本要求,可以适当应用。 总结步骤:确认安装方法→分操作系统说明步骤→检查依赖项→提供验证方法→常见问题解决→参考官方文档确保准确性。</think>### Universal Data Tool 安装教程 Universal Data Tool 是一个开源的协作式数据标注工具,支持图像、文本等多种数据类型。以下是详细的安装步骤: --- #### **方法一:通过 npm 安装** 1. **安装 Node.js 环境** 确保系统已安装 Node.js(版本 ≥ 12.0.0)。可通过以下命令检查: ```bash node -v ``` 若未安装,从[Node.js 官网](https://nodejs.org/)下载对应版本[^1]。 2. **安装 Universal Data Tool** 使用 npm 全局安装: ```bash npm install -g universal-data-tool ``` 3. **验证安装** 运行以下命令,若显示版本号则安装成功: ```bash universal-data-tool --version ``` --- #### **方法二:通过 Docker 运行** 1. **安装 Docker 引擎** 参考[Docker 官方文档](https://docs.docker.com/get-docker/)安装对应系统的 Docker[^2]。 2. **拉取镜像并运行容器** ```bash docker run -p 3000:3000 universaldatatool/universaldatatool ``` 访问 `http://localhost:3000` 即可使用。 --- #### **方法三:从源码构建** 1. **克隆仓库** ```bash git clone https://github.com/UniversalDataTool/universal-data-tool cd universal-data-tool ``` 2. **安装依赖并启动** ```bash npm install npm start ``` --- #### **常见问题** 1. **权限问题** 若安装时报错,尝试使用 `sudo`(Linux/macOS)或以管理员身份运行命令行(Windows)。 2. **依赖缺失** 确保已安装 Python 3.6+ 和构建工具(如 `g++` 或 `build-essential`)。 3. **端口冲突** 若端口 3000 被占用,可通过 `-p <新端口>:3000` 修改 Docker 映射端口。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值