procedure SortDBGridEh(Sender: TObject; ACol: Integer; Column: TColumnEh);
var
FieldName : string;
SortStr : string;
begin
Screen.Cursor := crSQLWait;
try
if (Sender is TDBGridEh) and ((Sender as TDBGridEh).DataSource.DataSet <> nil) then
begin
if not ((Sender as TDBGridEh).DataSource.DataSet is TCustomADODataSet) then
Exit;
if not (Sender as TDBGridEh).DataSource.DataSet.Active then
Exit;
FieldName := Column.FieldName;
if (Sender as TDBGridEh).DataSource.DataSet.FindField(FieldName).IsBlob then
Exit;
if (Sender as TDBGridEh).DataSource.DataSet.FieldByName(FieldName).FieldKind =fkData then
SortStr := FieldName
else if (Sender as TDBGridEh).DataSource.DataSet.FieldByName(FieldName).FieldKind =fkLookup then
FieldName := (Sender as TDBGridEh).DataSource.DataSet.FieldByName(FieldName).KeyFields
else
FieldName := '';
if (FieldName = '') or (Pos(';', FieldName) > 0) then
Exit;
case Column.Title.SortMarker of
smNoneEh:
begin
TCustomADODataSet((Sender as TDBGridEh).DataSource.DataSet).Sort :=FieldName+' DESC';
end;
smUpEh:
begin
TCustomADODataSet((Sender as TDBGridEh).DataSource.DataSet).Sort :=FieldName + ' DESC';
end;
smDownEh:
begin
TCustomADODataSet((Sender as TDBGridEh).DataSource.DataSet).Sort := FieldName;
end;
end;
end;
finally
Screen.Cursor := crDefault;
end;
end;
本文介绍了一种基于Delphi的DBGridEh组件的排序方法实现,通过检测组件类型和活动状态,针对不同字段类型调整排序策略,实现了对数据库记录的高效排序。

被折叠的 条评论
为什么被折叠?



