在编写数据库查询时,通过会遇到Grid表格排序的问题 ,设置列排序的方法如下:
1)打开DBGridEh控件的属性栏,ColumnDefValues->Title->TitleButton设置为True;
另外OptionEh->dbhAutoSortMarking的属性为显示排序标记。
2)在TitleBtnClick事件中使用如下代码
String s;
if(queData->Active)
{
if (DBList->Tag == 0) //顺序排列
{
queData->Sort=Column->FieldName + " ASC";
DBList->Tag=1;
}
else //反序排列,改变字体颜色
{
queData->Sort=Column->FieldName+" DESC";
DBList->Tag=0;
}
}
如果是DBGrid可以参考myseeker的文章http://myseeker.bokee.com/4980126.html, 代码如下
void __fastcall TForm1::DBGrid1TitleClick(TColumn *Column)
{
//点击DBGRID标题实现排序
String s;
if(ADOQuery1->Active)
{
if (DBGrid1->Tag==0) //顺序排列
{
ADOQuery1->Sort=Column->FieldName+" ASC";
s=Trim(Column->Title->Caption);
if(s.Pos("▽")>0||s.Pos("△")>0)
s=s.SubString(1,s.Length()-3);
Column->Title->Caption=s+" △";
Column->Font->Color = clBlack;
DBGrid1->Tag=1;
}
else //反序排列,改变字体颜色
{
ADOQuery1->Sort=Column->FieldName+" DESC";
s=Trim(Column->Title->Caption);
if(s.Pos("▽")>0||s.Pos("△")>0)
s=s.SubString(1,s.Length()-3);
Column->Title->Caption=s+" ▽";
Column->Font->Color=clGreen; //绿色
DBGrid1->Tag=0;
}
}
}