您的位置:首页 > 其它

根据屏幕中的控件获得其所在的屏幕号

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.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐