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.复选框列
- 选中要显示复选框的列,设置CheckBox 为
true.
在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;
- 效果
8.嵌套表
在设置主表和明细表后,
DBGridEh1.RowDetailPanel.Active:=True; //激活DBGrid1明细面板
DBGridEh2.Parent:=DBGridEh1.RowDetailPanelControl; //设置DBGridEh2的parent 为DBGridEh1的明细面板
DBGridEh2.Left:=0;
DBGridEh2.Top:=0;
DBGridEh2.Width:=400;
- 效果