分享

DbgridEh的一些用法(三)

 昵称27885659 2015-09-23
【多选】
    TDBGridEh 允许在选定的区域上进行选择记录,列以及矩形区域等操作:

×允许多选会影响下面这些属性:
  Options 选项中的 dgMultiSelect 属性 - 设置是否允许多选。
  Options 选项中的 dghClearSelection 属性- 设置在用户移到下一个单元时是否清除已选记录。
  Options 选项中的 EditActions 属性 -设置用户可以在已选记录上执行哪些操作(比如,拷贝,剪切,删除,粘贴,全选等)。
  Options 选项中的 AllowedSelections 属性-设置允许选定记录的类型(比如,行,列,矩形区域等)。
  Options 选项中的 Selection 属性-设置一个当前的多选状态,已选记录,列或矩形区域以及存取它们的属性和函数。

【从注册表或ini文件中保存或恢复网格和列的层次】
    TDBGridEh 有一个常规设置来从注册表或ini文件中保存和恢复网络以及列的层次:
      RestoreColumnsLayout - 从注册表中恢复列的次序,宽度,排序标志。
      RestoreColumnsLayoutIni - 从ini文件中恢复列的次序,宽度,排序标志。
      RestoreGridLayout - 从注册表中恢复列的次序,宽度,可视,排序标志,排序索引或行高。
      RestoreGridLayoutIni - 从ini文件中恢复列的次序,宽度,可视,排序标志,排序索引或行高。
      SaveColumnsLayout - 保存列的次序,宽度,排序标志到注册表中。
      SaveColumnsLayoutIni - 保存列的次序,宽度,排序标志到ini文件中。
      SaveGridLayout - 保存列的次序,宽度,可视,排序标志,排序索引或行高到注册表中。
      SaveGridLayoutIni - 保存列的次序,宽度,可视,排序标志,排序索引或行高到ini文件中。

『以下内容仅供参考了,因为不知道它那个版本是多少,目前最新的版本是3.2吧,俺正在用,感觉很不错啊~~』
  当前版本的TDBGridEh不支持的特性:
  TDBGridEh 不能设置每一个数据窗口中单独行的行高。
  TDBGridEh 不能象TreeView那样工作。它不能拥有节点和枝叶。
  TDBGridEh 不能横向或纵向合并数据单元。

【将已存在的TDBGrid组件转换为TDBGridEh组件】:
    尽管TDBGridEh并不是从TCustomDBGrid组件继承而来的,但是在TDBGridEh和TDBGrid中还是有一些相似的属性。
    它允许仅用一点点代价来转换已存在的TDBGrid组件到TDBGridEh。

【注意】:可以按照下面的提示来转转换已存在的TDBGrid组件到TDBGridEh:
    在Delphi的IDE中打开包含有TDBGrid组件的应用程序。
    设置视图方式为文本方式(Alt-F12)。
    if key=VK_RETURN then //Key:回车
    begin
      if (grdDetailData.SelectedIndex=grdDetailData.Columns.Count-1) and not (dgRowSelect in grdDetailData.Options) then
      BEGIN
        if (dgEditing in grdDetailData.Options) and (grdDetailData.Row=grdDetailData.RowCount-1) then //从表GRID能进行编辑和当前光标焦点在最后一行时
          acAddDetailExecute(self)
        else
        begin
          grdDetailData.Row:=grdDetailData.Row+1; //改变光标焦点行到下一行(当为新增加时,这句不用运行
          grdDetailData.SelectedIndex:=0 //改变光标焦点列到第一列
        end;
      END ELSE
      BEGIN
        grdDetailData.SelectedIndex:=grdDetailData.SelectedIndex+1;
        while grdDetailData.Columns[grdDetailData.SelectedIndex].ReadOnly do
          grdDetailData.SelectedIndex:=grdDetailData.SelectedIndex+1;
      END;
      key:=0;
    end;
    if key=VK_INSERT then //Insert键:新增一条记录
    begin
      acAddDetailExecute(self);
      key:=0;
    end;
    if key=VK_DELETE then //Delte: 删除一条记录
    begin
      acDeleteDetailExecute(self);
      key:=0;
    end;

【页脚合计】
   1、设置DBGRIDEH属性的FooterRowCount值为1;
   2、设置DBGRIDEH属性的SumList的Active值为true;
   3、设置你要求和的该列的Footer的ValueType类型为fvtSum;
   4、运行OK!
    在DataSet打开时写:
      DBGridEh1.Columns[0].Footer.Value := IntToStr DBGridEh1.DataSource.DataSet.RecordCount);

 
 2003-12-5 16:56:13    Ehlib 的 DBGridEh 控件怎样才能像 dxDBGrid 控件那样输出文件到 EXCEL以下是EHLIB的导出代码:(其实EHLIB的DEMO1中已有)

procedure TInvoiceManager.ppmSaveSelectionClick(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;

 
 2003-12-5 17:05:48    Ehlib 在 Delphi 7 中的安装(我可是花了半天的力气才搞定的哦)Delphi 7中的安装方法

   1. 把 EhLib 中的 common 和 DataService 文件拷贝到 Delphi7 目录中.
   2.在 TOOLS->Environment Options->Library->Library Path 中添入EHLIB路径。
   3.打开新建文件夹中的 EHLIB70.DPK ,编译一下,但不要安装。
   4.打开Ehlib中的DclEhLib70.DPK,编译,安装
   5. 在Delphi 7中打开DclEhLib70.dpk,编译并安装。
   6. 组件面板中出现一个EhLib的组件页。
   7. 打开附带的DEMOS,编译并运行,测试安装成功。
 

 
 2003-12-8 16:41:54    DBGridEh控件的页脚属性怎么设?0、将dBGridEh.FooterRowCount := 1
1、将DBGridEh.SumList.Active := True;
2、将Columns[要求和的字段].Footer.ValueType := vtSum;
就行了

最后要注意,在FormCloseQuery事件中,一定要将SumList.Active := False,因为在数据集中的数据多了以后,FormClose会让DBGridEh释放所有EhLib资源,会使得退出很慢,所以将SumList.Active := False不会引起退出很慢

 
 2003-12-10 11:22:37    如何实现在DbgridEh中不同的行显示不同的颜色?或某一些条件的行显示特定的颜色?【实现 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 := $00FFC4C4
   else
     Background := $00FFDDDD;
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;  

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多