使用了Ehlib3.3+(据说有自动排序功能▽降序△升序):
http://www.2ccc.com/article.asp?articleid=649
但是我用的是ADO,而且通过SQL的PROC连接,字段是根据PROC读出来的(就是说不能预先设定TitleButton 属性设置为 True),请问怎么做最方便?

解决方案 »

  1.   

    不必指明字段,用column.FieldName 去排列试试:
    begin
      if column.Title.SortMarker = smUpEh then
      begin
        aqStore.Sort := column.FieldName + ' DESC';
        column.Title.SortMarker := smDownEh;
      end
      else
      begin
        aqStore.Sort := column.FieldName + ' ASC';
        column.Title.SortMarker := smUpEh;
      end;
    end;
      

  2.   

    我会使用3.3+的自动排序功能了,但是不能用于TADOStoredProc;提示NOT A SQL BASED DATASET.
    请问有办法解决吗?
      

  3.   

    要在uses里加上ehlibado
    optioneh里有个dbhautosorting,设置为true,
    然后在dbgrideh上添加字段,设置title的titlebutton为true
    ehlib有两个demo,基本包含了所有的功能,仔细看看
      

  4.   

    soaringsouth(栈桥捉鳖) :
    你的方法我会用,问题我使用TADOStoredProc;提示NOT A SQL BASED DATASET.
    是不是不能用在SQL的PROC的?
      

  5.   

    是点击TITLE那个三角形的时候出错的:TADOStoredProc NOT A SQL BASED DATASET
    看来TADOStoredProc不能用自动排序了
      

  6.   

    你可以写个简单的存储过程试试(比如只有一个语句select * from xxx)应该可以的可能是存储过程的问题,应该与控件无关的,检查一下你的语句
      

  7.   

    我问了作者了,PROC是不能做排序的!
    支持的数据集:
    引擎           数据集           单元文件 BDE            TQuery           EhLibBDE 
    ADO            TADOQuery        EhLibADO 
    ClientDataSet  TClientDataSet   EhLibCDS 
    DBExpress      TSQLQuery        EhLibDBX 
    InterBase      Express TIBQuery EhLibIBX 
    我想这样,每执行一次PROC就生成一个表(非临时),以供TADOQuery调用,不知道这个思想是否可行?
      

  8.   

    我的思想:每执行一次PROC就生成一个表(非临时),以供TADOQuery调用。
    不知道这个思想是否可行?大家给点意见