DBGridEh按标题进行排序
DBGridEh组件可以在标题行单元格中显示小三角形升、降排序标志符图片,在运行时可点击标题行,
图片自动切换并做相应排序。具体属性设置如下:
OptionsEh=dghAutoSortMarking
Column.Title.TitleButton=true
SortMarkedColumns :当前排序列(可在运行时,代码中使用).
两种代码:
第一种:
procedure TManageProjForm.dbgrdh1TitleBtnClick(Sender: TObject;
ACol: Integer; Column: TColumnEh);
begin
if FieldName = ' ' then Exit;
if TADOQuery(TDBGridEh(Sender).DataSource.DataSet).Active = False then
begin
Exit;
end;
if Column.Title.SortMarker = smdowneh then
TADOQuery(TDBGridEh(Sender).DataSource.DataSet).Sort := Column.FieldName
else
TADOQuery(TDBGridEh(Sender).DataSource.DataSet).Sort :=column.FieldName +' DESC';
end;
第二种:
procedure TManageProjForm.dbgrdhProjectTitleBtnClick(Sender: TObject;
ACol: Integer; Column: TColumnEh);
var
sortstring:string; //排序列
begin
//进行排序
with Column do
begin
if FieldName = ' ' then Exit;
if TADOQuery(TDBGridEh(Sender).DataSource.DataSet).Active = False then
begin
Exit;
end;
case Title.SortMarker of
smNoneEh:
begin
Title.SortMarker := smDownEh;
sortstring := Column.FieldName + ' ASC ';
end;
smDownEh:
begin
sortstring := Column.FieldName + ' ASC ';
end;
smUpEh:
begin
sortstring := Column.FieldName + ' DESC ';
end;
end;
//进行排序
try
TADOQuery(TDBGridEh(Sender).DataSource.DataSet).Sort := sortstring //dataset为实际数据集变量名
except
end;
end;
end;
其实两者差不多。注意:切记lookup型字段不可做上述设置,否则系统会提示错误。