楼主: cutepollux

请教table control屏幕重画后选中行选中标志丢失的问题

[复制链接]
论坛徽章:
15
2013年新春福章
日期:2013-02-25 14:51:24
11#
发表于 2008-7-9 08:09 | 只看该作者
原帖由 weddingmax 于 2008-7-8 23:09 发表
顺便说一下,在table control属性里面设置为单选,只能实现在当前表示的几行里面只能但选。
比如现在换面显示的行的范围为第5行到第14行。那么在这个范围里面你只能够有一条数据是被选中的。
但是你忘下面滚动的时候,比如现在表示范围为15到24行,在这个范围里面你又可以选中一条了。
那样就变成整个table control中有两条数据被选中了。

哎!

还有这样的啊..

使用道具 举报

回复
论坛徽章:
2
2014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09
12#
发表于 2008-7-9 08:51 | 只看该作者
原帖由 weddingmax 于 2008-7-8 23:09 发表
顺便说一下,在table control属性里面设置为单选,只能实现在当前表示的几行里面只能但选。
比如现在换面显示的行的范围为第5行到第14行。那么在这个范围里面你只能够有一条数据是被选中的。
但是你忘下面滚动的时候,比如现在表示范围为15到24行,在这个范围里面你又可以选中一条了。
那样就变成整个table control中有两条数据被选中了。

哎!


是可以解决的.

只要了解了MODULE 的 ON REQUEST 和 ON INPUT.  就可以完美解决这样的问题.

出现上面的问题只是因为PAI中的LOOP是相当于

LOOP ** FROM TC_**-CURRENT_LINE TO ( TC_**-CURRENT_LINE + G_TC_**_LINES ).

也就是LOOP从屏幕的第一条在内表中的索引到屏幕最后一条在内表中的索引.

其实你选择的行一定是在这个范围内的.  只要你令这条不在这个范围内了(滚动鼠标滚轮或是拖动滚动条)就一定出发了PAI.

那你就可以做相应的操作了.   试试就知道了  用我说的MODULE的属性.

使用道具 举报

回复
论坛徽章:
83
生肖徽章2007版:羊
日期:2009-03-18 14:00:34生肖徽章2007版:羊
日期:2009-02-28 10:00:44生肖徽章2007版:羊
日期:2009-03-20 14:47:19生肖徽章2007版:羊
日期:2009-03-22 11:39:08生肖徽章2007版:羊
日期:2009-03-23 14:01:04生肖徽章2007版:羊
日期:2009-06-12 12:46:14生肖徽章:羊
日期:2007-09-26 17:02:21生肖徽章:羊
日期:2007-09-26 17:02:14生肖徽章:羊
日期:2007-09-26 17:02:07生肖徽章:羊
日期:2007-09-26 12:34:37
13#
发表于 2008-7-9 09:05 | 只看该作者
学习!

使用道具 举报

回复
论坛徽章:
3
奥运会纪念徽章:皮划艇静水
日期:2008-10-24 13:20:44授权会员
日期:2009-01-21 21:49:40ERP板块每日发贴之星
日期:2010-05-21 01:01:01
14#
发表于 2008-7-9 10:30 | 只看该作者
再次回复楼主,今天来到公司,把SOURCE给你贴上来。
pai里面:
LOOP WITH CONTROL TCL_DETAIL_2.
    MODULE MDL_SET_TABLECONTROL_9502.
ENDLOOP.

主程序里面:
LN_END_LINE = TCL_DETAIL_2-TOP_LINE + 12.          “我的TABLE CONTROL一页显示12行

MODULE MDL_SET_TABLECONTROL_9502 INPUT.
     IF  TCL_DETAIL_2-CURRENT_LINE BETWEEN TCL_DETAIL_2-TOP_LINE
                                                                    AND LN_END_LINE.
*--    当选中的行在画面显示的范围内的时候,把选中标志修改回内部表中
         MODIFY  TBL_DETAIL FROM  HE_DETAIL
                                          INDEX TCL_DETAIL_2-CURRENT_LINE
                            TRANSPORTING SELFLAG.
     ELSE.
*--    当选中的行不在画面显示的范围内的时候,把选中标志清空后再修改回内部表中
         CLEAR HE_DETAIL-SELFLAG.
         MODIFY  TBL_DETAIL FROM  HE_DETAIL
                                          INDEX TCL_DETAIL_2-CURRENT_LINE
                            TRANSPORTING SELFLAG.
     ENDIF.
ENDMODULE.

使用道具 举报

回复
论坛徽章:
15
2013年新春福章
日期:2013-02-25 14:51:24
15#
发表于 2008-7-9 10:56 | 只看该作者
原帖由 weddingmax 于 2008-7-9 10:30 发表
再次回复楼主,今天来到公司,把SOURCE给你贴上来。
pai里面:
LOOP WITH CONTROL TCL_DETAIL_2.
    MODULE MDL_SET_TABLECONTROL_9502.
ENDLOOP.

主程序里面:
LN_END_LINE = TCL_DETAIL_2-TOP_LINE + 12.          “我的TABLE CONTROL一页显示12行

MODULE MDL_SET_TABLECONTROL_9502 INPUT.
     IF  TCL_DETAIL_2-CURRENT_LINE BETWEEN TCL_DETAIL_2-TOP_LINE
                                                                    AND LN_END_LINE.
*--    当选中的行在画面显示的范围内的时候,把选中标志修改回内部表中
         MODIFY  TBL_DETAIL FROM  HE_DETAIL
                                          INDEX TCL_DETAIL_2-CURRENT_LINE
                            TRANSPORTING SELFLAG.
     ELSE.
*--    当选中的行不在画面显示的范围内的时候,把选中标志清空后再修改回内部表中
         CLEAR HE_DETAIL-SELFLAG.
         MODIFY  TBL_DETAIL FROM  HE_DETAIL
                                          INDEX TCL_DETAIL_2-CURRENT_LINE
                            TRANSPORTING SELFLAG.
     ENDIF.
ENDMODULE.


谢谢,学习了.

使用道具 举报

回复
论坛徽章:
10
生肖徽章:牛
日期:2007-01-25 16:50:07参与SAP云计算之旅活动纪念
日期:2011-05-17 13:35:452011新春纪念徽章
日期:2011-02-18 11:43:35ITPUB9周年纪念徽章
日期:2010-10-08 09:31:212009新春纪念徽章
日期:2009-01-04 14:52:28生肖徽章2007版:牛
日期:2008-11-19 11:43:57ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44生肖徽章:狗
日期:2007-09-26 17:03:08生肖徽章:龙
日期:2007-09-26 17:02:10咸鸭蛋
日期:2011-07-27 13:25:50
16#
 楼主| 发表于 2008-7-9 19:31 | 只看该作者
谢谢,学习了,向各位高人学习

使用道具 举报

回复
论坛徽章:
10
生肖徽章:牛
日期:2007-01-25 16:50:07参与SAP云计算之旅活动纪念
日期:2011-05-17 13:35:452011新春纪念徽章
日期:2011-02-18 11:43:35ITPUB9周年纪念徽章
日期:2010-10-08 09:31:212009新春纪念徽章
日期:2009-01-04 14:52:28生肖徽章2007版:牛
日期:2008-11-19 11:43:57ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44生肖徽章:狗
日期:2007-09-26 17:03:08生肖徽章:龙
日期:2007-09-26 17:02:10咸鸭蛋
日期:2011-07-27 13:25:50
17#
 楼主| 发表于 2008-7-9 19:33 | 只看该作者
明天去公司测试,今天出差去了

使用道具 举报

回复
论坛徽章:
10
生肖徽章:牛
日期:2007-01-25 16:50:07参与SAP云计算之旅活动纪念
日期:2011-05-17 13:35:452011新春纪念徽章
日期:2011-02-18 11:43:35ITPUB9周年纪念徽章
日期:2010-10-08 09:31:212009新春纪念徽章
日期:2009-01-04 14:52:28生肖徽章2007版:牛
日期:2008-11-19 11:43:57ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44生肖徽章:狗
日期:2007-09-26 17:03:08生肖徽章:龙
日期:2007-09-26 17:02:10咸鸭蛋
日期:2011-07-27 13:25:50
18#
 楼主| 发表于 2008-7-10 10:33 | 只看该作者
原帖由 weddingmax 于 2008-7-9 10:30 发表
再次回复楼主,今天来到公司,把SOURCE给你贴上来。
pai里面:
LOOP WITH CONTROL TCL_DETAIL_2.
    MODULE MDL_SET_TABLECONTROL_9502.
ENDLOOP.

主程序里面:
LN_END_LINE = TCL_DETAIL_2-TOP_LINE + 12.          “我的TABLE CONTROL一页显示12行

MODULE MDL_SET_TABLECONTROL_9502 INPUT.
     IF  TCL_DETAIL_2-CURRENT_LINE BETWEEN TCL_DETAIL_2-TOP_LINE
                                                                    AND LN_END_LINE.
*--    当选中的行在画面显示的范围内的时候,把选中标志修改回内部表中
         MODIFY  TBL_DETAIL FROM  HE_DETAIL
                                          INDEX TCL_DETAIL_2-CURRENT_LINE
                            TRANSPORTING SELFLAG.
     ELSE.
*--    当选中的行不在画面显示的范围内的时候,把选中标志清空后再修改回内部表中
         CLEAR HE_DETAIL-SELFLAG.
         MODIFY  TBL_DETAIL FROM  HE_DETAIL
                                          INDEX TCL_DETAIL_2-CURRENT_LINE
                            TRANSPORTING SELFLAG.
     ENDIF.
ENDMODULE.


但是这样做有一个问题阿,就是如果选中一行,然后滚动,使之不可见,然后再滚动,使之可见,就会发现这一条记录又变成未选中状态了

使用道具 举报

回复
论坛徽章:
10
生肖徽章:牛
日期:2007-01-25 16:50:07参与SAP云计算之旅活动纪念
日期:2011-05-17 13:35:452011新春纪念徽章
日期:2011-02-18 11:43:35ITPUB9周年纪念徽章
日期:2010-10-08 09:31:212009新春纪念徽章
日期:2009-01-04 14:52:28生肖徽章2007版:牛
日期:2008-11-19 11:43:57ITPUB新首页上线纪念徽章
日期:2007-10-20 08:38:44生肖徽章:狗
日期:2007-09-26 17:03:08生肖徽章:龙
日期:2007-09-26 17:02:10咸鸭蛋
日期:2011-07-27 13:25:50
19#
 楼主| 发表于 2008-7-10 10:36 | 只看该作者
原帖由 dreamgift 于 2008-7-9 08:51 发表


是可以解决的.

只要了解了MODULE 的 ON REQUEST 和 ON INPUT.  就可以完美解决这样的问题.

出现上面的问题只是因为PAI中的LOOP是相当于

LOOP ** FROM TC_**-CURRENT_LINE TO ( TC_**-CURRENT_LINE + G_TC_**_LINES ).

也就是LOOP从屏幕的第一条在内表中的索引到屏幕最后一条在内表中的索引.

其实你选择的行一定是在这个范围内的.  只要你令这条不在这个范围内了(滚动鼠标滚轮或是拖动滚动条)就一定出发了PAI.

那你就可以做相应的操作了.   试试就知道了  用我说的MODULE的属性.


有点不明白,能具体讲讲嘛?

使用道具 举报

回复
论坛徽章:
2
2014年新春福章
日期:2014-02-18 16:43:09马上有钱
日期:2014-02-18 16:43:09
20#
发表于 2008-7-10 10:45 | 只看该作者
PAI 的 LOOP 下面这样写.
    FIELD TH_**-MARK(行选择的标识字段) MODULE MOD_*** ON INPUT.

在MOD_***中这样写.
    DATA TH_**BU TYPE TH_**.
    CLEAR TH_**BU.
    MODIFY  TD_** FROM TH_**BU
              TRANSPORTING MARK
                           WHERE MARK = 'X'.
    MODIFY TD_** FROM TH_** INDEX TC_**-CURRENT_LINE.



这样你说的问题应该都不会有了.

[ 本帖最后由 dreamgift 于 2008-7-10 17:39 编辑 ]

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表