根据屏幕中的控件获得其所在的屏幕号
2011-12-19 11:10
211 查看
有时候实现更加复杂的屏幕设计时,需要用到很多子屏幕和CONTAINER来实更丰富的功能,假如屏幕有多
个子屏幕,子屏幕上有多个CONTAINER的时候,在某种情况下,如果想知道,用户操作的事件来自哪个子屏幕
号,便可以从事件源来找其所在子屏幕,得到它的屏幕号,同时也可以CONTAINER的名字,这个问题折腾了我
很多时间,也请教过别人,最终还是没得到想要的答案,今天总结一下,就拿OO ALV来说明一下如何取到子屏
幕号。
(1) 首先, 在创建GRID的时候可以先用其SET_NAME的方法把屏幕号保存起来
......
" "保存屏幕号到GRID的NAME中
DATA: FRM_DYNNR TYPE STRING.
FRM_DYNNR = SY-DYNNR.
CALL METHOD P_GRID->SET_NAME
EXPORTING
NAME = FRM_DYNNR
EXCEPTIONS
CNTL_ERROR = 1
PARENT_NO_NAME = 2
ILLEGAL_NAME = 3
OTHERS = 4.
......
(2) 在需要获取屏幕号号的地方加入以下代码
"获得事件对象
DATA: FRM_EVENT TYPE REF TO CL_GUI_EVENT.
CALL METHOD CL_GUI_CFW=>GET_CURRENT_EVENT_OBJECT
RECEIVING
EVENT_OBJECT = FRM_EVENT.
IF FRM_EVENT IS INITIAL.
......
ENDIF.
"从事件对象获得事件源
DATA: FRM_SRC TYPE REF TO CL_GUI_CONTROL.
FRM_SRC = FRM_EVENT->EVENT_SRC.
"从事件源的GRID中获取屏幕号
DATA: FRM_SCREEN_NAME TYPE STRING.
CALL METHOD FRM_SRC->GET_NAME
RECEIVING
NAME = FRM_SCREEN_NAME.
"从事件源中获得容器对象
DATA: FRM_PARENT TYPE REF TO CL_GUI_CONTAINER.
FRM_PARENT = FRM_SRC->PARENT.
"从容器对象获得容器名
DATA:FRM_CONTAINER TYPE STRING.
CALL METHOD FRM_PARENT->GET_NAME
RECEIVING
NAME = FRM_CONTAINER.
个子屏幕,子屏幕上有多个CONTAINER的时候,在某种情况下,如果想知道,用户操作的事件来自哪个子屏幕
号,便可以从事件源来找其所在子屏幕,得到它的屏幕号,同时也可以CONTAINER的名字,这个问题折腾了我
很多时间,也请教过别人,最终还是没得到想要的答案,今天总结一下,就拿OO ALV来说明一下如何取到子屏
幕号。
(1) 首先, 在创建GRID的时候可以先用其SET_NAME的方法把屏幕号保存起来
......
" "保存屏幕号到GRID的NAME中
DATA: FRM_DYNNR TYPE STRING.
FRM_DYNNR = SY-DYNNR.
CALL METHOD P_GRID->SET_NAME
EXPORTING
NAME = FRM_DYNNR
EXCEPTIONS
CNTL_ERROR = 1
PARENT_NO_NAME = 2
ILLEGAL_NAME = 3
OTHERS = 4.
......
(2) 在需要获取屏幕号号的地方加入以下代码
"获得事件对象
DATA: FRM_EVENT TYPE REF TO CL_GUI_EVENT.
CALL METHOD CL_GUI_CFW=>GET_CURRENT_EVENT_OBJECT
RECEIVING
EVENT_OBJECT = FRM_EVENT.
IF FRM_EVENT IS INITIAL.
......
ENDIF.
"从事件对象获得事件源
DATA: FRM_SRC TYPE REF TO CL_GUI_CONTROL.
FRM_SRC = FRM_EVENT->EVENT_SRC.
"从事件源的GRID中获取屏幕号
DATA: FRM_SCREEN_NAME TYPE STRING.
CALL METHOD FRM_SRC->GET_NAME
RECEIVING
NAME = FRM_SCREEN_NAME.
"从事件源中获得容器对象
DATA: FRM_PARENT TYPE REF TO CL_GUI_CONTAINER.
FRM_PARENT = FRM_SRC->PARENT.
"从容器对象获得容器名
DATA:FRM_CONTAINER TYPE STRING.
CALL METHOD FRM_PARENT->GET_NAME
RECEIVING
NAME = FRM_CONTAINER.
相关文章推荐
- android获得控件在屏幕中的绝对坐标
- C# WinForm中 获得当前鼠标所在控件 或 将窗体中鼠标所在控件名显示在窗体标题上
- Android获得控件在屏幕中的绝对坐标
- C#实现根据指定容器和控件名字获得控件的方法
- [Phonegap+Sencha Touch] 移动开发48 扩展的NavigationView控件,支持根据不同的View显示不同的顶栏按钮、不同的屏幕方向,增加视图缓存机制
- android获得控件在屏幕中的绝对坐标
- android获得控件在屏幕中的绝对坐标
- android获得控件在屏幕中的绝对坐标 getLocationInWindow 和 getLocationOnScreen
- Linux根据进程号获得进程程序的所在路径,类似AIX的procwdx命令
- android获得控件在屏幕中的绝对坐标 getLocationInWindow 和 getLocationOnScreen
- 如何获得窗体上控件相对于屏幕的位置?
- 隐藏光标与获得光标2----获得光标所在的控件
- android获得控件在屏幕中的绝对坐标 getLocationInWindow 和 getLocationOnScreen
- 录入学员的身份证后控件焦点转移时根据身份证号码获得生日和性别
- 根据指定的容器和控件名称获得控件
- android获得控件在屏幕中的绝对坐标
- 获取控件所在屏幕的坐标
- android获得控件在屏幕中的绝对坐标 getLocationInWindow 和 getLocationOnScreen
- 录入学员的身份证后控件焦点转移时根据身份证号码获得生日和性别
- 根据手机屏幕分辨率设置组件或控件的大小,利用像素更好的适配不同尺寸的机型的动态布局