如何排序? 一个DBGIRD中点击标题就按所按标题排序.用的是Adoquery.请问如何实现. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 //tryfunction DBGridSort(mColumn: TColumn): Boolean;const cSortSQL: array[Boolean] of string = ('DESC', 'ASC');var vBook: string;begin Result := False; if (not Assigned(mColumn)) or (not Assigned(mColumn.Field)) then Exit; if not (mColumn.Field.DataType in [ftString, ftSmallint, ftInteger, ftWord, ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime, ftBytes, ftVarBytes, ftAutoInc, ftFixedChar, ftWideString, ftLargeint, ftGuid, ftTimeStamp, ftFMTBcd]) then Exit; vBook := mColumn.Field.DataSet.Book; try mColumn.Field.DataSet.DisableControls; with TADODataSet(mColumn.Field.DataSet) do Sort := Format('%s %s', [mColumn.Field.FieldName, cSortSQL[(Pos(#32 + mColumn.Field.FieldName + #32, #32 + Sort) <> 1) or (not (Pos(#32 + cSortSQL[True], Sort) > 0))]]); finally mColumn.Field.DataSet.Book := vBook; mColumn.Field.DataSet.EnableControls; end; Result := True;end; { DBGridSort }procedure TForm1.DBGrid1TitleClick(Column: TColumn);begin DBGridSort(Column);end; Procedure TForm1.DBGrid1TitleClick(Column: TColumn);Begin ADOQuery1.Sort := Column.FieldName; ADOquery1.Filtered := True;End; Procedure TForm1.DBGrid1TitleClick(Column: TColumn);Begin ADOQuery1.Sort := Column.FieldName; ADOquery1.Filtered := True;End; 先声明一个AscOrDesc :Boolean;可以在DBGRID的onTitleBtnClick事件中procedure TFormDev.DBGridTitleBtnClick(Sender: TObject; ACol: Integer; Column: TColumnEh);begin AscOrDesc := not AscOrDesc; if AscOrDesc then begin ADODSDev.Sort := Column.FieldName + ' ASC'; //升序 end else begin ADODSDev.Sort := Column.FieldName + ' DESC'; //降序 end;end; zswangII(伴水清清)(职业清洁工) 的不错. zswangII(伴水清清)(职业清洁工),如果fkData时正确,如fkLookup或fkCalcuted时不行。 ADOQuery1.Sort := Column.FieldName; ADOquery1.Filtered := True;ok 包含tmscomm的应用程序打包问题!! 如何获得网页里showModalDialog弹出的窗口的IHTMLDocument2?????? 求助:Delphi中调用IRQ中断服务函数 一象素等于多少厘米? appbar安装的问题??? 哪里有完整的Win32 Api系统大全,我下载了一个,但是不全! 在线等待!如何得到一个字段的前半部分? 有没有人遇到这种情况,调用自己调用的动态连接库,然后free时出错, 问题:异常类和自定义异常类构造函数的实现代码写在程序的什么部位? 初级问题, 有没有获得当前月份上个月的函数??? 解释下#0好吗?
function DBGridSort(mColumn: TColumn): Boolean;
const
cSortSQL: array[Boolean] of string = ('DESC', 'ASC');
var
vBook: string;
begin
Result := False;
if (not Assigned(mColumn)) or (not Assigned(mColumn.Field)) then Exit;
if not (mColumn.Field.DataType in [ftString, ftSmallint, ftInteger, ftWord,
ftBoolean, ftFloat, ftCurrency, ftBCD, ftDate, ftTime, ftDateTime,
ftBytes, ftVarBytes, ftAutoInc, ftFixedChar, ftWideString,
ftLargeint, ftGuid, ftTimeStamp, ftFMTBcd]) then Exit;
vBook := mColumn.Field.DataSet.Book;
try
mColumn.Field.DataSet.DisableControls;
with TADODataSet(mColumn.Field.DataSet) do
Sort := Format('%s %s', [mColumn.Field.FieldName,
cSortSQL[(Pos(#32 + mColumn.Field.FieldName + #32, #32 + Sort) <> 1) or
(not (Pos(#32 + cSortSQL[True], Sort) > 0))]]);
finally
mColumn.Field.DataSet.Book := vBook;
mColumn.Field.DataSet.EnableControls;
end;
Result := True;
end; { DBGridSort }procedure TForm1.DBGrid1TitleClick(Column: TColumn);
begin
DBGridSort(Column);
end;
Begin
ADOQuery1.Sort := Column.FieldName;
ADOquery1.Filtered := True;
End;
Begin
ADOQuery1.Sort := Column.FieldName;
ADOquery1.Filtered := True;
End;
可以在DBGRID的onTitleBtnClick事件中
procedure TFormDev.DBGridTitleBtnClick(Sender: TObject;
ACol: Integer; Column: TColumnEh);
begin
AscOrDesc := not AscOrDesc;
if AscOrDesc then
begin
ADODSDev.Sort := Column.FieldName + ' ASC'; //升序
end
else
begin
ADODSDev.Sort := Column.FieldName + ' DESC'; //降序
end;
end;
ADOquery1.Filtered := True;
ok