单击其中一个列名不写代码是否可以实现排序?
要写少量代码,可以在本版中搜索看看,也可以去www.nssoft.net 网的DELPHID 在线帮助中找找看.
不写是不行的
不写代码没有试过
要写几行代码,如下:
procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
if (ADOQuery1.Sort=Column.FieldName+ ASC) then//升序
ADOQuery1.Sort:=Column.FieldName+ DESC//降序
else
ADOQuery1.Sort:=Column.FieldName+ ASC
end;
利用dbgridEH,网上有Down
to:wlxyk(文淮)
我试过,没问题.
请参考我的这个函数!
//DBGRID组件的排序
procedure DBGridTitleSort(ADODataSet: TADODataSet;Column: TColumn);
var
s1,s2: string;
FField: TField;
begin
//数据排序
FField := Column.Field;
case FField.FieldKind of
fkData : s1 := FField.FieldName;
//fkCalculated: s1 := FField.Origin;
fkLookup : s1 := FField.KeyFields;
else abort;
end;
s2 := ADODataSet.Sort ;
//限制排序字段
if FField.DataType in [ftString, ftSmallint, ftInteger,
ftWord, ftBoolean, ftFloat, ftCurrency, ftBCD,ftDate, ftTime,
ftDateTime, ftBytes, ftAutoInc, ftWideString] then
begin
if pos(s1,s2)>0 then
begin
if pos(ASC,s2)>0 then
s2 := s1+ DESC
else
s2 := s1+ ASC;
end
else
s2 := s1+ ASC;
ADODataSet.Sort := s2;
end;
end;
ehlib