首页 > 数据库技术 > 详细

DBGrid列标题单击多列排序

时间:2020-08-07 11:49:47      阅读:110      评论:0      收藏:0      [点我收藏+]

procedure TfrmUnionShipMent.dgMainTitleBtnClick(Sender: TObject;
ACol: Integer; Column: TColumnEh);
VAR
INDEX : INTEGER;
SortString : String;
FirstFlag : boolean;
SortFieldName: string;
begin
inherited;
if adqMain.Active then
begin
// if (not TADODataSet(TDBGridEh(Sender).DataSource.DataSet).Active)
// or (TADODataSet(TDBGridEh(Sender).DataSource.DataSet).RecordCount<=0) then
// Abort;
// {实现排序}
// if Column.Field.FieldKind = fkLookup then
// SortFieldName := Column.Field.KeyFields
// else
// SortFieldName := Column.FieldName;
//
// if TADODataSet(TDBGridEh(Sender).DataSource.DataSet).Sort = SortFieldName then
// begin
// TADODataSet(TDBGridEh(Sender).DataSource.DataSet).Sort := SortFieldName + ‘ DESC‘;
// Column.Title.SortMarker := smDownEh;
// end
// else
// begin
// TADODataSet(TDBGridEh(Sender).DataSource.DataSet).Sort := SortFieldName;
// Column.Title.SortMarker := smUpEh;
// end;
{~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~}
SortString := ‘‘;
if Column.Title.SortMarker <> smUpEh then
Column.Title.SortMarker := smUpEh
else
Column.Title.SortMarker := smDownEh;

FOR INDEX := 1 TO dgMain.SortMarkedColumns.Count DO
if dgMain.SortMarkedColumns[INDEX - 1].Title.SortMarker = smDownEh then
begin
SortString := SortString + dgMain.SortMarkedColumns[INDEX - 1].FieldName + ‘ DESC ‘+‘,‘;
end
else
begin
SortString := SortString + dgMain.SortMarkedColumns[INDEX - 1].FieldName + ‘ ASC ‘+‘,‘;
end;
if (adqMain.RecordCount > 0) and (Trim(SortString)<>‘‘) then
begin
// TADODataSet(TDBGridEh(Sender).DataSource.DataSet).Sort := copy(SortString,1,Length(SortString)-1);
adqMain.Sort := copy(SortString,1,Length(SortString)-1);
end;
end;
end;

DBGrid列标题单击多列排序

原文:https://www.cnblogs.com/zhou0811/p/13451510.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!