{$R *.dfm}
//uses EhlibADO; //自动排序ADO数据集一定要引用此单元;手工排序可以不需要
procedure TForm1.Button1Click(Sender: TObject);
var i:Integer;
Col:TColumnEh;
begin
DBGridEh1.DataSource:=DataSource1;
DataSource1.DataSet:=ADOQuery1;
ADOQuery1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;'+
'Data Source=f:\mcmygs.mdb;'+
//'User Id=Admin;'+
//'DataBase PassWord=123456;'+
'Persist Security Info=False;'+
//报错:"无法启动应用程序,工作组信息文件丢失,或是已被其他用户已独占方式打开",请使用以下连接
'Jet OLEDB:Database Password=123456';
ADOQuery1.SQL.Text:='Select 自编号,合同号,币种,金额,银行 from dzb';
ADOQuery1.Open;
for i:=0 to ADOQuery1.Fields.Count-1 do
begin
Col:=DBGridEh1.Columns.Add;
Col.FieldName:=ADOQuery1.Fields[i].FieldName;
Col.Title.Font.Color:=clBlue;
Col.Title.Alignment:=taCenter;
//Col.AutoFitColWidth:=True; //自适应单元格宽度
if ADOQuery1.Fields[i].DataType=ftFloat then Col.DisplayFormat:='#,###,###.00';
end;
DBGridEh1.AutoFitColWidths:=True;
DBGridEh1.ColumnDefValues.Title.TitleButton:=True;
//DBGridEh1.OptionsEh:=DBGridEh1.OptionsEh+[dghAutoSortMarking];
DBGridEh1.SortLocal:=True; //客户端排序
end;
procedure TForm1.DBGridEh1TitleBtnClick(Sender: TObject; ACol: Integer;
Column: TColumnEh);
Begin
//使用OnTitleBtnClick事情采用手工排序,不使用dghAutoSortMarking
//注意:DESC和ASC一定要大写
case Column.Title.SortMarker of
smNoneEh:
begin
Column.Title.SortMarker:=smUpEh; //升序标志
TCustomADODataSet((Sender as TDBGridEh).DataSource.DataSet).Sort:=Column.FieldName+' ASC';
end;
smDownEh:
begin
Column.Title.SortMarker:=smNoneEh; //不排序
TCustomADODataSet((Sender as TDBGridEh).DataSource.DataSet).Sort:='';
end;
smUpEh:
begin
Column.Title.SortMarker:=smDownEh; //降序标志
TCustomADODataSet((Sender as TDBGridEh).DataSource.DataSet).Sort:=Column.FieldName+' DESC';
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
DBGridEh1.Align:=alTop;
end;