dbgrid的字段排序 单击其中一个列名不写代码是否可以实现排序(类似PB)? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 要写少量代码,可以在本版中搜索看看,也可以去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; 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; 传说中DELPHI的BUG?DELPHI7-DELPHI2009都有 一个简单的问题 關於fastReport3.X的使用 基础性的问题:TCustomForm部分 .如何做出像东方快车,金山快译那样没有标题栏,没有最大,最小,关闭按钮,却可以随意移动,谢谢。 在某个类的方法中怎么对自身对象进行引用? 不高兴,散分 sql赋值问题, 在filter里怎么进行关键字查询呢? 请问如何让一个Form Create 之后,ListBox1.SetFocous;然后再自动选中其中一个Item? 怎么样在sqlerver中update一个图片字段,对应的delphi的代码怎么写 ? 帮帮忙!!!!!
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;
我试过,没问题.
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;