做Delphi数据库开发也已经几年了,但是对ADO的一些高级应用和DBGridEh的使用一直不太熟练,趁着这周刚好双休,自己做了一个Demo,算是一个小的总结吧,也方便以后应用可以随时查阅。DBGridEh是Ehlib控件包中的一个,比起Delphi自带的DBGrid好用不少,一般也是数据库显示常使用的表格控件之一。要控制DBGridEh的单元格显示主要使用OnGetCellParams或者OnDrawColumnCell事件,根据数据集字段的值来显示不同样式。数据库高级应用一般包括存储过程、触发器和视图以及事务等,使用这些关键是写好sql语句,然后就可以直接用数据集控件比如ADOQuery或者ADOCommand执行和操作。下面是一个比较简单的Demo,也算是一个入门吧。
1.新建一个数据库Test,表结构如下:
2.新建一个Delphi工程,添加两个窗体。
工程文件代码如下:
program DBGridEhDraw;
uses
Forms,
DrawDemo in 'DrawDemo.pas' {FrmSeeMoney},
AdvDBOp in 'AdvDBOp.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TFrmSeeMoney, FrmSeeMoney);
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
窗体一界面代码和窗体文件如下:
object FrmSeeMoney: TFrmSeeMoney
Left = 385
Top = 73
Width = 657
Height = 410
Caption = '财务登记'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object dbgrdh1: TDBGridEh
Left = 0
Top = 0
Width = 631
Height = 302
Align = alClient
AllowedOperations = [alopUpdateEh, alopAppendEh]
DataGrouping.GroupLevels = <>
DataSource = ds1
Flat = False
FooterColor = clWindow
FooterFont.Charset = DEFAULT_CHARSET
FooterFont.Color = clWindowText
FooterFont.Height = -11
FooterFont.Name = 'MS Sans Serif'
FooterFont.Style = []
RowDetailPanel.Color = clBtnFace
TabOrder = 0
TitleFont.Charset = DEFAULT_CHARSET
TitleFont.Color = clWindowText
TitleFont.Height = -11
TitleFont.Name = 'MS Sans Serif'
TitleFont.Style = []
OnDrawColumnCell = dbgrdh1DrawColumnCell
OnGetCellParams = dbgrdh1GetCellParams
object RowDetailData: TRowDetailPanelControlEh
end
end
object pnl1: TPanel
Left = 0
Top = 302
Width = 631
Height = 60
Align = alBottom
BevelOuter = bvNone
TabOrder = 1
object shp1: TShape
Left = 16
Top = 8