设置DBGridEh1的OptionsEh的dghautosortMarking为True,AQ_DBGridEh1是adoquery控件,我的代码如下:procedure TForm1.DBGridEh1SortMarkingChanged(Sender: TObject);
var i :Integer;
s:String;
function DeleteStr(str:String; sunstr:String): String;
var i:Integer;
begin
i := Pos(sunstr,str);
if i <> 0 then Delete(str,i,Length(sunstr));
Result := str;
end;
begin
s := '';
for i := 0 to DBGridEh1.SortMarkedColumns.Count-1 do
if DBGridEh1.SortMarkedColumns[i].Title.SortMarker = smUpEh then
s := s + DBGridEh1.SortMarkedColumns[i].FieldName + ' DESC , '
else
s := s + DBGridEh1.SortMarkedColumns[i].FieldName + ', ';
if s <> '' then s := ' ORDER BY ' + Copy(s,1,Length(s)-2);
s := DeleteStr(s,'1');
AQ_DBGridEh1.SQL.Strings[AQ_DBGridEh1.SQL.Count-2] := s;
AQ_DBGridEh1.Close;
AQ_DBGridEh1.Open;
end;或:
procedure TForm1.DBGridEh1TitleBtnClick(Sender: TObject; ACol: Integer;
Column: TColumnEh);
begin
case Column.Title.SortMarker of
smNoneEh: Column.Title.SortMarker := smDownEh;
smDownEh: Column.Title.SortMarker := smUpEh;
smUpEh: Column.Title.SortMarker := smNoneEh;
end;
end;当点击标题栏时,提示如下错误,怎么解决?
List index out of bounds(-1)
var i :Integer;
s:String;
function DeleteStr(str:String; sunstr:String): String;
var i:Integer;
begin
i := Pos(sunstr,str);
if i <> 0 then Delete(str,i,Length(sunstr));
Result := str;
end;
begin
s := '';
for i := 0 to DBGridEh1.SortMarkedColumns.Count-1 do
if DBGridEh1.SortMarkedColumns[i].Title.SortMarker = smUpEh then
s := s + DBGridEh1.SortMarkedColumns[i].FieldName + ' DESC , '
else
s := s + DBGridEh1.SortMarkedColumns[i].FieldName + ', ';
if s <> '' then s := ' ORDER BY ' + Copy(s,1,Length(s)-2);
s := DeleteStr(s,'1');
AQ_DBGridEh1.SQL.Strings[AQ_DBGridEh1.SQL.Count-2] := s;
AQ_DBGridEh1.Close;
AQ_DBGridEh1.Open;
end;或:
procedure TForm1.DBGridEh1TitleBtnClick(Sender: TObject; ACol: Integer;
Column: TColumnEh);
begin
case Column.Title.SortMarker of
smNoneEh: Column.Title.SortMarker := smDownEh;
smDownEh: Column.Title.SortMarker := smUpEh;
smUpEh: Column.Title.SortMarker := smNoneEh;
end;
end;当点击标题栏时,提示如下错误,怎么解决?
List index out of bounds(-1)
解决方案 »
- 急!!如何将其他语言(俄语,法语,繁体)转换成unicode
- idftp如何判断ftp服务器上指定目录里的一个文件是否存在?
- dxLookupTreeView 中KeyField的值如何获取?
- 请教下gsm6.10音频的问题
- 在多线程里调用同一com提示"应用程序调用一个已为另一线程整理的接口"
- 求教,如何通过delphi来获取word中每一步操作代码.
- 工资软件
- 如何设置DBGrid的一列不可修改
- delphi 好东西啊
- DM.DSetTemp.FieldByName('Timemute').AsInteger ; ‘’is not a valid integer value.
- 下拉框的自动检索!
- 数组复制的问题?
procedure TForm.DBGridEhTitleBtnClick(Sender: TObject;
ACol: Integer; Column: TColumnEh);
var
s :string;
begin
//进行排序
with Column do
begin
if FieldName = '' then
Exit;
case Title.SortMarker of
smNoneEh:
begin
Title.SortMarker := smDownEh;
s := Column.FieldName + ' ASC';
end;
smDownEh: s := Column.FieldName + ' ASC';
smUpEh: s := Column.FieldName + ' DESC';
end;
end;
ADOQuery.Sort := s;
end;
不过你一分不给也太……