zoukankan      html  css  js  c++  java
  • EhLib DBGridEh组件在Delphi中应用全攻略总结

    EhLib DBGridEh组件在Delphi中应用全攻略总结

    【DBGridEh(增强型表格组件)功能详解】
    DBGridEh组件无论在外观上还是功能上都非常类似Borland开发工具中现有的dbgrid组件,它除了提供dbgrid组件的全部功能外,还增加了下列新功能:
    ● 任意选择多行、列或矩形区域的数据.
    ● 为多列标题设定共同的父标题行.
    ● 表格底部(Footer) 区显示求和、计数和其它统计信息.
    ● 自动调整组件宽度与客户区域等宽.
    ● 设置标题行、数据行的高度.
    ● 超长的标题行、数据行文本自动折行处理.
    ● 标题行可作为按钮使用,并可选择是否显示排序标志符(▽降序△升序).
    ● 点击列标题可对当前列自动排序而无需编写代码.
    ● 能够自动设置删除超长文本显示不下的多余部分,并以省略号(…)代替.
    ● 自动搜索字段(Lookup)数据单元格以单、多列字段下拉列表形式显示.
    ● 自动搜索字段(Lookup)数据单元格可进行增量搜索.
    ● 可锁定任意列数在屏幕水平方向不滚动.
    ● 日期时间控件DateTime picker 可支持TDateField and TDateTimeField两种日期格式.
    ● 根据字段不同值显示关联的ImageList 对象图片组中的图片.
    ● 隐藏任意列.
    ● 显示3D风格的数据区、表尾区和锁定滚动列,制作3D外观表格.
    ● 显示Memo类型字段值.
    ● 除BOOLEAN型数据外,其它数据类型也可以检查框( checkbox )形式显示数据.
    ● 使用专门的函数和过程来存取以reg或ini文件格式保存的表格布局(包含各数据列表、数据列访问顺序、列宽、索引标识、行高等信息)文件。
    ● 通过设置数据单元格的hint和ToolTips属性,当移动鼠标到该单元格时,可以显示单元格容纳不下的文本内容.
    ● 将组件中数据导入/导出到Text, Csv, HTML, RTF, XLS 和内部数据等多种格式的文件中.

    【Ehlib在 Delphi 7 中的安装】(我可是花了半天的力气才搞定的哦)Delphi 7中的安装方法
    1.把 EhLib 中的common和DataService文件夹下的文件拷贝到 Delphi7 目录中.
    2.在 TOOLS->Environment Options->Library->Library Path 中添入EHLIB路径。
    3.打开新建文件夹中的EHLIB70.dpk,编译一下,但不要安装。
    4.打开新建文件夹中的EhLibDataDrivers70.dpk,编译一下,但不要安装。
    5.打开Ehlib中的DclEhLib70.dpk,编译,安装
    6.打开Ehlib中的DclEhLibDataDrivers70.dpk,编译,安装(实际中不用也可以)
    7.组件面板中出现一个EhLib的组件页。
    8.打开附带的DEMOS1,编译并运行,测试安装成功。

    【DBGridEh控件的页脚属性怎么设】
    1、将dBGridEh.FooterRowCount := 1
    2、将DBGridEh.SumList.Active := True;
    3、将Columns[要求和的字段].Footer.ValueType := vtSum;
    就行了,最后要注意,在FormCloseQuery事件中,一定要将SumList.Active := False,因为在数据集中的数据多了以后,FormClose会让DBGridEh释放所有EhLib资源,会使得退出很慢,所以将SumList.Active := False不会引起退出很慢(还没有试)。

    【实现DBGridEh隔行分色显示】
    procedure TForm1.DBGridEh1GetCellParams(Sender: TObject; Column: TColumnEh;
    AFont: TFont; var Background: TColor; State: TGridDrawState);
    begin
    if DBGridEh1.SumList.RecNo mod 2 = 1 then
        Background := clinfobk
    else
        Background := RGB(238, 238, 238);
    end;

    【DBGridEh在某些条件下某行显示特定颜色】
    procedure TForm1.DBGridEh1GetCellParams(Sender: TObject; Column: TColumnEh; AFont: TFont; var Background: TColor; State: TGridDrawState);
    begin
    //在 name 字段值为 aaa 的行设置行背景色(ado 设置情况下)
    if ADOQuery1.FieldByName('name').AsString = 'aaa' then
          Background := $00FFC4C4
    //在 xm 字段值为 Li ming 的行设置行背景色(bde 设置情况下)
    else if DBGridEh1.DataSource.DataSet.FieldByName('xm').AsString = 'Li ming' then
         Background := $00FFC4C4
    else
         Background := $00FFDDDD;
    end;

    【实现DBGridEh全选】
    procedure TForm1.N_CopyPolListClick(Sender: TObject);
    begin
    if (ActiveControl is TDBGridEh) then
        with TDBGridEh(ActiveControl) do
          if CheckSelectAllAction and (geaSelectAllEh in EditActions) then
            Selection.SelectAll;
    end;

    【Ehlib的DBGridEh控件输出文件到 EXCEL】(其实EHLIB的DEMO1中已有)
    procedure TForm1.N_SaveSelectionClick(Sender: TObject);
    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;
            3: begin
                 ExpClass := TDBGridEhExportAsHTML;
                 Ext := 'htm';
               end;
            4: begin
                 ExpClass := TDBGridEhExportAsRTF;
                 Ext := 'rtf';
               end;
            5: 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,TDBGridEh(ActiveControl),
                 SaveDialog1.FileName,False);
          end;
        end;
    end;

    【在DBGridEh中直接点击title就可按点击的那个字段排序的方法】
    procedure TForm1.DBGridEh1TitleClick(Column: TColumnEh);
    var
    sortstring: string; //排序列
    begin
    //进行排序
    with Column do
    begin
        if FieldName = '' then
          Exit;
        if (Title.SortMarker = smNoneEh) or (Title.SortMarker = smDownEh) then
        begin
          sortstring := Column.FieldName + ' ASC';;
          Title.SortMarker := smUpEh;
        end
        else
        begin
          sortstring := Column.FieldName + ' DESC';
          Title.SortMarker := smDownEh;
        end;
        try
          ADOQryPolicyList.Sort := sortstring; //dataset为实际数据集变量名
        except
          MessageBox(Handle,'排序出错,请核实后重试!', '提示', MB_ICONError);
        end;
    end;
    end;
    注意:1.在窗体上放置一个DBGridEh组件,并将其连接到相应的 BDE 数据集;
    2.将该组件的[OptionsEn]中的 dgAutoSortMarking 属性设置为 True;
    3.双击该组件,在其弹出的属性编辑器中添加相关字段;
    4.将要排序的字段的属性列表的 [Title]的 TitleButton 属性设置为 True;
    5.最后,千万不要忘了在 uses 子句中加上 EhlibBDE单元。

    【DBGridEh从注册表或ini文件中保存或恢复网格和列的层次】
        TDBGridEh 有一个常规设置来从注册表或ini文件中保存和恢复网络以及列的层次:
          RestoreColumnsLayout - 从注册表中恢复列的次序,宽度,排序标志。
          RestoreColumnsLayoutIni - 从ini文件中恢复列的次序,宽度,排序标志。
          RestoreGridLayout - 从注册表中恢复列的次序,宽度,可视,排序标志,排序索引或行高。
          RestoreGridLayoutIni - 从ini文件中恢复列的次序,宽度,可视,排序标志,排序索引或行高。
          SaveColumnsLayout - 保存列的次序,宽度,排序标志到注册表中。
          SaveColumnsLayoutIni - 保存列的次序,宽度,排序标志到ini文件中。
          SaveGridLayout - 保存列的次序,宽度,可视,排序标志,排序索引或行高到注册表中。
          SaveGridLayoutIni - 保存列的次序,宽度,可视,排序标志,排序索引或行高到ini文件中。
    举例如下:
    //存储Grid格式ini
    function SaveGridIni(ADBGridEhNameStr: string;ADBGridEh:TDBGridEh): Boolean;
    var
    IniFileNameStr:string;
    begin
        IniFileNameStr := ExtractFileDir(ParamStr(0)) + '\' + 'DBGirdConfig.ini';
        ADBGridEh.SaveGridLayoutIni(IniFileNameStr,ADBGridEhNameStr,False);
    end;

    //加载读取Grid格式ini
    function RestoreGridIni(ADBGridEhNameStr: string;ADBGridEh:TDBGridEh): Boolean;
    var
    IniFileNameStr:string;
    RestoreParams: TDBGridEhRestoreParams;
    begin
        IniFileNameStr := ExtractFileDir(ParamStr(0)) + '\' + 'DBGirdConfig.ini';
        ADBGridEh.RestoreGridLayoutIni(IniFileNameStr,ADBGridEhNameStr,RestoreParams);
    end;

  • 相关阅读:
    Day1-while and for/break and continue
    Day1-用户输入及字符串格式化输入
    Day1-python基础
    2-21-源码编译搭建LNMP环境
    2-20-使用apache搭建web网站
    2-19-mysql优化
    2-18-搭建mysql集群实现高可用
    2-17-MySQL读写分离-mysql-proxy
    2-16-2MySQL主从
    2-14-存储过程-触发器-事务
  • 原文地址:https://www.cnblogs.com/chenbg2001/p/1922514.html
Copyright © 2011-2022 走看看