DBGridEh 基本操作

导出到Excel 等文件类型

1.导入导出

  • 引用单元 use DBGridEhImpExp;
  • 类型说明
类型名称 说明
TDbGridEhExportAsText 导出到文本文件
TDbGridExportAsUnicodeText 导出到Unicode 文本
TDbGridEhExportAsCSV 导出到CSV
TDbGridEhAsHtml 导出到HTML
TDBGridEhAsRTF 导出到RTF
TDBGridEhAsXLS 导出到XLS
TDMGridEhAsXLSX 导出到XLSX
  • 示例代码:
var
  path:string;
begin
  GetDir(0,path);
  ExportDbGridEhToXlsx(DbgridEh,Path+'File1.xlsx',[]);
end;

2.多表头,以"|" 分割

  • 需要打开多表头支持:TitleParams->MultiTitle 选择true
  • 给表头赋值时输入格式为:
DBGridEh.MultiTitle:=true;//启用多行标题功能
DbGridEh.TitleLines:=2; //标题占用2行
DBGridEh.Columns[0].FieldName:='Name|FirstName';
DbGridEh.Columns[0].FieldName:='Name|LastName';

相同合并的表头需要用'|'分割

3.页脚合计等功能

  • FooterRowCount 需要输入页脚汇总的行数,比如1
    单击要汇总的Footers属性,在结构视图点击右键选择 Add Item 出现此列页脚的属性,在Valuetype选择需要进行的计算,合计、最大值、最小值,其中fvtFieldValue是根据数据集中字段进行计算,在FieldName属性中,可以选择要汇总合计的字段,在DisplayFormat中可以输入要显示值得格式,比如0.00
    ValueType是fvtStaticText中显示静态文本
    最后需要将DbgridEh1的属性sumList中的Active设置为true,才能根据字段进行计算。

4.复选框列

  • 选中要显示复选框的列,设置CheckBoxtrue.
    在FieldName中选中数据集中要显示的列,数据集中这个字段必须为Bit类型
    5.显示表中表
  • 主表连接方式:
DbGridEh1->DataSource1->MemTableEh1->DataSetDriverEh1->ADOQuery1->ADOConnection1
AdoQuery1.Sql.Text:='select * from WareOut';
  • 子表连接方式:
DBGridEh2->DataSouce2->MemTableEh2->DataSetDriverEh2->AdoQuery2->ADOConnection1
设置MemTableEh2的MasterFields和DetailFields

6.获取单元格值

//获取当前点击单元格值
procedure TForm1.DBGridEh1Cellclick(Column:TColumnEh);
begin
  showMessage(column.DisplayText);
end;
//获取当前选择行某列单元格值
procedure TForm1.DbGridEh1CellClick(column:TColumnEh);
begin
  showMessage(Dbgrid1.Columns[1].DisplayText);
end;

7.隔行变色

  • 斑马线
**EvenRowColor** //偶数行颜色
OddRowColor //奇数行颜色
  • 示例
procedure  TForm1.DBGridEh1DrawColumnCell(sender:TObject;const rect:TRect;DataCol:integer;column:TColumnEh;State:TGridDrawState);
case OraQuery1.FieldByName('upperdeptid').as integer of
0:DbgridEh1.Canvas.Font.Color:=clRed;
1:DbgridEh1.Canvas.Font.Color:=clGreen;
5:begin
   dbgrideh1.Canvas.Font.Color:=clBlue; //改变前景色
   dbgrideh1.Canvas.Brush.Color:=clRed;//改变背景色
end;
   DBGridEh1.DefaultDrawColumnCell(rect,datacol,column,state); //这句必须有,否则不生效
end;
  • 效果
    image

8.嵌套表

在设置主表和明细表后,
  DBGridEh1.RowDetailPanel.Active:=True;  //激活DBGrid1明细面板
  DBGridEh2.Parent:=DBGridEh1.RowDetailPanelControl; //设置DBGridEh2的parent 为DBGridEh1的明细面板
  DBGridEh2.Left:=0;
  DBGridEh2.Top:=0;
  DBGridEh2.Width:=400;
  • 效果
    image
posted @ 2023-07-15 11:03  丹心石  阅读(524)  评论(0编辑  收藏  举报