dbgrid的字段排序
单击其中一个列名不写代码是否可以实现排序(类似pb)?
推荐阅读
要写少量代码,可以在本版中搜索看看,也可以去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
.

讨论区