如何通过BROWSE br:CURRENT-COLUMN获取SET-SORT-ARROW()所需列索引?
解决BROWSE控件中通过CURRENT-COLUMN获取排序箭头所需列索引的问题
你不需要额外转换列索引,有两种直接可行的方式来调用SET-SORT-ARROW():
方式一:直接传入列句柄
SET-SORT-ARROW()方法本身支持接收列的句柄作为第一个参数,不需要先转成索引。你可以直接把获取到的hCol(当前列句柄)传进去:
br:SET-SORT-ARROW(hCol, cBrowserSort EQ "").
方式二:通过POSITION属性获取列索引
如果确实需要用到列的索引值,列对象的POSITION属性会返回该列在BROWSE中的位置(从1开始计数),用这个值作为参数即可:
br:SET-SORT-ARROW(hCol:POSITION, cBrowserSort EQ "").
修改后的完整代码示例:
DO: DEFINE VARIABLE hCol AS HANDLE. DEFINE VARIABLE qh AS HANDLE. IF cBrowserSort = "" THEN cBrowserSort = "DESCENDING" . ELSE cBrowserSort = "". ASSIGN hCol = BROWSE br:CURRENT-COLUMN qh = QUERY br:HANDLE cBy = "by temp" + STRING(hCol:NAME). qh:QUERY-PREPARE("FOR EACH TT-Component NO-LOCK BY " + hCol:NAME + " " + cBrowserSort + ":"). qh:QUERY-OPEN(). br:CLEAR-SORT-ARROWS(). // 使用列句柄设置排序箭头 br:SET-SORT-ARROW(hCol, cBrowserSort EQ ""). END.
内容的提问来源于stack exchange,提问作者Raphael Frei
相关产品推荐
相关产品推荐

