在dbgrid的标题栏上按一下标题就进行排序,同时加上一下向上向下的图案,请问怎么做啊?
解决方案 »
- Delphi三层架构的精彩文章
- 请问在delphi里面TSamp是什么类型来的?感谢!!!
- delphi中关于动态生成treeview的问题
- 请教关于progressbar的fillcolor属性的问题.
- 获取 网络连接速度
- 怎么知道自己是不是丢包??
- 问一个关于类的问题请大家说说看法。
- 郁闷,女朋友的手机今天掉了,散分
- 如何设置TabControl1.Tabs.InsertObject(index:integer;const s:string;AObject:TObject)中的TObject参数
- DELPHI 与数据库连接问题
- 大家认为<Delphi5开发人员指南>,<Delphi6开发人员指南>和<Delphi技术手册>翻译的怎样?
- 使用rave能不能做出自定义报表的功能出来?
var
ls_str: string;
begin
ls_str:=query1.fields[Column.index].fieldname;
with query1 do
begin
close;
sql.Clear;
sql.Add('select * from dbo.jobs order by '+ls_str);
open;
end;
end;
在dbgrid的TileClick事件中写入下
var
ls_str: string;
begin
ls_str:=query1.fields[Column.index].fieldname;
with adoquery1 do
begin
if 顺序 then sort := ls_Str + ' ASC' //顺序
else sort := ls_Str + ' DESC' //逆序
end;
end;
在dbgrid的onDrawColumnCell事件中编写
具体代码自己搜索一下
BSort:Boolean;//要声明,按DBGrid头升降排序function ClickDBGridTitle(DBGird:TDBGrid;Query:TADOQuery;i:integer):boolean;
var Fieldname:string;
begin
if BSort then
begin
if Query.FieldByName(DBGird.Columns[i].FieldName).FieldKind=fkLookup then
FieldName:=Query.FieldByName(DBGird.Columns[i].FieldName).KeyFields+' ASC'
else
FieldName:=DBGird.Columns[i].FieldName+' ASC';
BSort:=false;
end
else
begin
if Query.FieldByName(DBGird.Columns[i].FieldName).FieldKind=fkLookup then
FieldName:=Query.FieldByName(DBGird.Columns[i].FieldName).KeyFields+' DESC'
else
FieldName:=DBGird.Columns[i].FieldName+' DESC';
BSort:=true;
end;
Query.Sort:=FieldName;
end;
var
i:integer;
fieldname:string;
begin
//排序
i:=Column.Index;
if bSort then
begin
fieldname:=DBGrid1.Columns[i].FieldName+' ASC';
bSort:=False;
end
else
begin
fieldname:=DBGrid1.Columns[i].FieldName+' DESC';
bSort:=True;
end; Query1.Close;
Query1.Sql.Clear;
Query1.Sql.Add('Select * from country');
Query1.Sql.Add('order by '+fieldname);
Query1.Open; //table1.IndexFieldNames := fieldname;
//query1.Sort:=fieldname;
end;