SET HANDLER - FOR
Syntax
SET HANDLER handler1 handler2 ... FOR { oref |{ALL INSTANCES} }
[ACTIVATION act].
Extras:
Effect
This statement registers the event handlers handler1 handler2 ... for the associated instance events of the objects specified after FOR. The addition ACTIVATION can be used to deregister event handlers or perform a dynamic registration.
An event handler is raised if the associated instance event is raised using RAISE EVENT in an object for which it is registered. An event handler handler can be specified as follows, where the names have the same meaning as in the explicit method call:
- meth
- oref->meth
- class=>meth
Methods meth can be specified from the same class or from other classes defined as instance event handlers using the addition FOR EVENT evt OF {class|intf} of the statements [CLASS-]METHODS. No event handlers for static events can be specified. At least one name must be specified.
The type class or intf specified after FOR EVENT OF in the definition of an instance event handler defines the objects whose events it can handle. Single objects or all handleable objects can be specified after FOR.
Addition 1
... FOR oref
Effect
This addition registers or deregisters the event handlers of the list handler1 handler2 ... for exactly one object. oref is an object reference that must point to an object whose events can be handled by the specified event handlers. The class of the object must be class or a subclass of class, or must implement the interface intf directly or through a superclass.
oref is a functional operand position.
Example
Registers an event handler for an ALV event.
CLASS demo DEFINITION.
PUBLIC SECTION.
METHODS main.
PRIVATE SECTION.
DATA itab TYPE TABLE OF scarr.
METHODS handle_double_click
FOR EVENT double_click OF cl_salv_events_table.
ENDCLASS. CLASS demo IMPLEMENTATION.
METHOD main.
DATA alv TYPE REF TO cl_salv_table.
...
TRY.
cl_salv_table=>factory(
IMPORTING r_salv_table = alv
CHANGING t_table = itab ).
SET HANDLER handle_double_click FOR alv->get_event( ).
CATCH cx_salv_msg.
...
ENDTRY.
ENDMETHOD.
METHOD handle_double_click.
...
ENDMETHOD.
ENDCLASS.
Addition 2
... FOR ALL INSTANCES
Effect
This addition registers or deregisters the event handlers of the list handler1 handler2 ... for all objects whose events they can handle. These are all objects whose classes are either class or the subclass of class, or which implement the interface intf directly or through a superclass. A registration of this type is also valid for all raising instances created after the statement SET HANDLER.
Note
Registration with FOR ALL INSTANCES applies also in particular for temporary instances as they can be created when using the instantiaion operator NEW.
Addition 3
... ACTIVATION act
Effect
A single-character text-like field act can be specified after the addition ACTIVATION. If act has the value "X" (the default value), the event handlers handler are registered. If act has the value " ", however, the registration of the event handlers handler is canceled. A single registration cannot, on the other hand, be deregistered using mass deregistration. Conversely, individual raising objects cannot be excluded from registration after a mass registration.
Note
As long as the registration of an instance method as an event handler for an instance event is not canceled using ACTIVATION " " or all raising instances are deleted, the associated object cannot be deleted by the garbage collector. This is because it is still used by the runtime environment.
Example
Registers an event handler with FOR ALL INSTANCES. The events of all temporary instances created with NEW are handled until registration is stopped. The program can be executed as DEMO_SET_HANDLER_FOR_ALL.
CLASS cls DEFINITION.
PUBLIC SECTION.
EVENTS evt
EXPORTING VALUE(p) TYPE string DEFAULT `nop`.
METHODS meth
IMPORTING p TYPE string.
ENDCLASS. CLASS cls IMPLEMENTATION.
METHOD meth.
RAISE EVENT evt EXPORTING p = p.
ENDMETHOD.
ENDCLASS. CLASS hdl DEFINITION.
PUBLIC SECTION.
METHODS meth FOR EVENT evt OF cls
IMPORTING p.
ENDCLASS. CLASS hdl IMPLEMENTATION.
METHOD meth.
cl_demo_output=>write( p ).
ENDMETHOD.
ENDCLASS. START-OF-SELECTION.
DATA(href) = NEW hdl( ).
SET HANDLER href->meth FOR ALL INSTANCES. NEW cls( )->meth( `Ping 1`).
NEW cls( )->meth( `Ping 2`).
NEW cls( )->meth( `Ping 3`).
SET HANDLER href->meth FOR ALL INSTANCES ACTIVATION ' '.
NEW cls( )->meth( `Ping 4`).
NEW cls( )->meth( `Ping 5`).
NEW cls( )->meth( `Ping 6`).
cl_demo_output=>display( ).

SET HANDLER - FOR的更多相关文章
- android Handler介绍
Handler使用介绍: Handler根据接收的消息,处理UI更新.Thread线程发出消息,通知Handler更新UI. Handler mHandler = new Handler() { p ...
- Handler
1.1 继承AbstractController优点:能定制请求方式 package cn.happyl.controller; import javax.servlet.http.HttpServl ...
- Android消息处理机制(Handler、Looper、MessageQueue与Message)
Android是消息驱动的,实现消息驱动有几个要素: 消息的表示:Message 消息队列:MessageQueue 消息循环,用于循环取出消息进行处理:Looper 消息处理,消息循环从消息队列中取 ...
- Android笔记——Handler Runnable与Thread的区别
在java中可有两种方式实现多线程,一种是继承Thread类,一种是实现Runnable接口:Thread类是在java.lang包中定义的.一个类只要继承了Thread类同时覆写了本类中的run() ...
- Android消息传递之Handler消息机制
前言: 无论是现在所做的项目还是以前的项目中,都会遇见线程之间通信.组件之间通信,目前统一采用EventBus来做处理,在总结学习EventBus之前,觉得还是需要学习总结一下最初的实现方式,也算是不 ...
- Handler系列之内存泄漏
本篇简单的讲一下平常使用Handler时造成内存泄漏的问题. 什么是内存泄漏?大白话讲就是分配出去的内存,回收不回来.严重会导致内存不足OOM.下面来看一下造成内存泄漏的代码: public clas ...
- Handler系列之创建子线程Handler
上一篇我介绍了Handler机制的工作原理,默认情况下,ActivityThread类为我们创建的了主线程的Looper和消息队列,所以当你创建Handler之后发送消息的时候,消息的轮训和handl ...
- Handler系列之原理分析
上一节我们讲解了Handler的基本使用方法,也是平时大家用到的最多的使用方式.那么本节让我们来学习一下Handler的工作原理吧!!! 我们知道Android中我们只能在ui线程(主线程)更新ui信 ...
- Handler系列之使用
作为一个Android开发者,我们肯定熟悉并使用过Handler机制.最常用的使用场景是"在子线程更新ui",实际上我们知道上面的说话是错误的.因为Android中只有主线程才能更 ...
- 阶段一:用Handler和Message实现计时效果及其中一些疑问
“阶段一”是指我第一次系统地学习Android开发.这主要是对我的学习过程作个记录. 本来是打算继续做天气预报的优化的,但因为某些原因,我要先把之前做的小应用优化一下.所以今天就插播一下用Handle ...
随机推荐
- Linux 基础学习大考核
0.关于Linux的简介 Linux(好又免费)的组成部分: Linux 是一种计算机操作系统: 一系列能让您与计算机进行交互操作并运行其它程序的程序. 操作系统由多种基础程序构成.它们使计算机可以与 ...
- 宝塔面板 + Rancher + 阿里云镜像仓库 + Docker + Kubernetes,添加集群、部署 web 应用
目录 一,安装宝塔面板(V 6.8) 二,使用宝塔安装 Docker,配置阿里云容器服务 三,安装 Rancher (Server) 四,管理 Rancher.添加集群 五,添加 Rancher 应用 ...
- PhoneGap 加速计 api 获取加速计 x 轴 y 轴 z 轴信息
一.PhoneGap 加速计 Accelerometer 对象介绍 1.主要方法 accelerometer.getCurrentAcceleration 获取当前设备在 x,y,z 轴上的加速度信息 ...
- 没有什么问题是sudo rm -rf /* 解决不了的
没有什么问题是sudo rm -rf /* 解决不了的. . . . . . . 如果有的话,赶紧跑.
- Java工具类(util) 之01- 数学运算工具(精确运算)
数学运算工具(精确运算) /** * * @author maple * */ public abstract class AmountUtil { private AmountUtil() { } ...
- collecitons.deque
python队列,可以使用collections里面的deque,将列表当作队列使用. deque方法有: from collections import deque deque.append() d ...
- OKHttp3学习
转载 Okhttp3基本使用 基本使用——OkHttp3详细使用教程 一.简介 HTTP是现代应用常用的一种交换数据和媒体的网络方式,高效地使用HTTP能让资源加载更快,节省带宽. OkHttp是一个 ...
- XCODE7 和IOS9适配后的一些问题
网上比较常规的几个问题就不细说了. 什么HTTPS.bitcode.什么什么的. 记录几个自己又遇到了但是网上没有说的. 启动应用报错, *** Terminating app due to unca ...
- C/C++结构体字节对齐详解
结构体的sizeof先看一个结构体:struct S1{ char c; int i;}; sizeof(S1)在VC6中按默认设置得到的结果为8.我们先看看sizeof的定义——size ...
- php json格式化输出
1.json格式是适用于多种语言的数据格式,通用性高 2.在php中将array格式的数据转化为json格式 3.默认情况下转化后的json格式为一个串,需要将这个串格式化成相应的样式输出 主要的函数 ...