文档库 最新最全的文档下载
当前位置:文档库 › ooalv自定义按钮、单击、双击、列编辑切换的事件资料

ooalv自定义按钮、单击、双击、列编辑切换的事件资料

ooalv自定义按钮、单击、双击、列编辑切换的事件资料
ooalv自定义按钮、单击、双击、列编辑切换的事件资料

1、需新建屏幕1001 并画container:'CONT1'

2、需新建屏幕1002 并画container:'CONT2'

3、定义屏幕1001、1002的ok_code和逻辑流

4、定义工具栏

程序代码:

1.TABLES t001w.

2.

3.TYPES:BEGIN OF typ_t001w ,

4.werks TYPE t001w-werks,

https://www.wendangku.net/doc/bb6832182.html,1TYPE t001w-name1,

6.werks2 TYPE t001w-werks,

7.rowcolor TYPE char10,

8.zcheckbox TYPE c, "LAYOUT-CHECBOX='ZCHECKBOX'.

9.*zflag TYPE c,"LAYOUT-BOX_FNAME = 'ZFLAG'.

10.zicon TYPE char10, "LAYOUT-ICON= 'ZICON'图标需要显示的

11.END OF typ_t001w.

12.

13.TYPES:BEGIN OF typ_smf ,

14.werks TYPE t001w-werks,

https://www.wendangku.net/doc/bb6832182.html,1TYPE t001w-name1,

16.END OF typ_smf.

17.

18.DATA:i_t001w TYPE TABLE OF typ_t001w,"""""第一次alv内表

19.i_detail TYPE TABLE OF typ_smf, """""单击ALV内表列ZICON显示的明细ALV

内表

20.i_smf TYPE TABLE OF typ_smf.""""SF内表

21.

22.DATA:fieldcat TYPE lvc_t_fcat,

23.grid TYPE REF TO cl_gui_alv_grid,"alv控件名

24.grid2 TYPE REF TO cl_gui_alv_grid,"alv控件名

25.g_container TYPE scrfname VALUE 'CONT1',"重新定义本地容器对象名

26.g_container2 TYPE scrfname VALUE 'CONT2',"重新定义本地容器对象名

27.is_layout TYPE lvc_s_layo,

28.ps_layout TYPE lvc_s_layo,

29.g_custom_container TYPE REF TO cl_gui_custom_container,

30.g_custom_container2 TYPE REF TO cl_gui_custom_container.

31.

32.DATA: ui_functions TYPE ui_functions. "隐藏按钮的内表

33.*********ALV上事件捕捉类

34.DATA:gs_toolbar TYPE stb_button. "按钮

35.CLASS alv_event_receiver DEFINITION DEFERRED. "声明类对象

36.*----------------------------------------------------------------------*

37.* CLASS alv_event_receiver DEFINITION

38.*----------------------------------------------------------------------*

39.*

40.*----------------------------------------------------------------------*

41.CLASS alv_event_receiver DEFINITION."声明类成员可见性

42.PUBLIC SECTION."定义相关类成员可

以被程序中的所有对象调用

43. CLASS-METHODS: "静态方法

44.handle_toolbar"初始化工具栏对象

事件,如增加按钮并设定其属性

45.FOR EVENT toolbar OF cl_gui_alv_grid

46. IMPORTING e_object e_interactive,

47.

48. handle_menu_button"用于在下拉菜单中

增加选项

49.FOR EVENT menu_button OF cl_gui_alv_grid

50. IMPORTING e_object e_ucomm,

51.

52. handle_user_command"工具栏中的按钮的

单击事件

53. FOR EVENT user_command OF cl_gui_alv_grid

54.IMPORTING e_ucomm,

55.

56. handle_hotspot_click

57. FOR EVENT hotspot_click OF cl_gui_alv_grid "屏幕中的单击事件,

可以具体到某行某列,需要设置热点

58.IMPORTING e_row_id e_column_id es_row_no,

59.

60. handle_double_click

61. FOR EVENT double_click OF cl_gui_alv_grid"屏幕中的双击事件,

可以具体到某行某列,即使设置热点也必须双击

62.IMPORTING e_row e_column es_row_no.

63.ENDCLASS."alv_event_receiver DEFINITION

64.*&---------------------------------------------------------------------*

65.*& Class (Implementation)alv_event_receiver

66.*&---------------------------------------------------------------------*

67.*Text

68.*----------------------------------------------------------------------*

69.CLASS alv_event_receiver IMPLEMENTATION."实现类方法

70.METHOD handle_toolbar.

71. gs_toolbar-function ='B_SUM'. "为按钮分配功能码

72. gs_toolbar-icon=icon_display."为按钮分配图标

73. gs_toolbar-text='总行数'."为按钮分配文本

74. gs_toolbar-butn_type = '0'."定义按钮类型,不填时默认为0

75. APPEND gs_toolbar TO e_object->mt_toolbar. "添加按钮到工具栏

76.

77. gs_toolbar-function ='B_PRINT'. "为按钮分配功能码

78. gs_toolbar-icon=icon_import."为按钮分配图标

79. gs_toolbar-text='转储订单打印'."为按钮分配文本

80. gs_toolbar-checked= 'X'.

81. gs_toolbar-butn_type = '0'."定义按钮类型,不填时默认为0

82. APPEND gs_toolbar TO e_object->mt_toolbar. "添加按钮到工具栏

83.

84. gs_toolbar-function ='B_LIST'."为按钮分配功能码

85. gs_toolbar-quickinfo = '自定义下拉菜单'.

86. gs_toolbar-icon=icon_biw_report_view."为按钮分配图标

87. gs_toolbar-text='下拉菜单'."为按钮分配文本

88. gs_toolbar-butn_type = '1'."定义按钮类型

89. APPEND gs_toolbar TO e_object->mt_toolbar. "添加按钮到工具栏

90.

91. gs_toolbar-function ='B_EDIT'. "为按钮分配功能码

92. gs_toolbar-icon=icon_change."为按钮分配图标

93. gs_toolbar-text='切换编辑状态'."为按钮分配文本

94. gs_toolbar-checked= 'X'.

95. gs_toolbar-butn_type = '0'."定义按钮类型,不填时默认为0

96. APPEND gs_toolbar TO e_object->mt_toolbar. "添加按钮到工具栏

97.ENDMETHOD."handle_toolbar

98.METHOD handle_menu_button.

99. IF e_ucomm = 'B_LIST'.

100.CALL METHOD e_object->add_function

101.EXPORTING

102. icon= icon_display

103. fcode = 'B_SUM'

104. text= '显示ALV总数'.

105. ENDIF.

106.ENDMETHOD."handle_menu_button

107.METHOD handle_user_command.

108. DATA sum TYPE i.

109. DATA text TYPE string.

110. DATA: lwa_t001w LIKE LINE OF i_t001w.

111. DATA: lwa_smf LIKE LINE OF i_smf.

112.

113. CASE e_ucomm.

114.WHEN'B_SUM'.

115.DESCRIBE TABLE i_t001w[] LINES sum.

116.text = sum.

117.CONCATENATE'当前表格中数据的总行数:' text INTO text.

118.MESSAGE text TYPE 'I'. "为何消息类型为 E 时运行时显示A类型,异常终止到初始界面

119.WHEN 'B_PRINT'.

120.LOOP AT i_t001w INTO lwa_t001w WHERE zcheckbox = 'X'.

121. lwa_smf-werks = lwa_t001w-werks.

122. lwa_smf-name1 = lwa_t001w-name1.

123. APPEND lwa_smf TO i_smf.

124. CLEAR :lwa_t001w,lwa_smf.

125.ENDLOOP.

126.IF i_smf[] IS INITIAL.

127. MESSAGE '请至少选择一行数据区打印!' TYPE 'E'. "E类型消息会

转化为A类型,很蛋疼,求破!

128.ELSE.

129. PERFORM frm_print_data."这个没具体写。

130.ENDIF.

131.WHEN 'B_EDIT'.

132.IF grid->is_ready_for_input( ) EQ 0.

133. CALL METHOD grid->set_ready_for_input

134.EXPORTING

135.i_ready_for_input = 1.

136.ELSE.

137. CALL METHOD grid->set_ready_for_input

138.EXPORTING

139.i_ready_for_input = 0.

140.ENDIF.

141.WHEN OTHERS.

142. ENDCASE.

143.ENDMETHOD."handle_user_command

144."ALV内表展示处单击事件捕捉,需要设置热点对单击列字段

145.METHOD handle_hotspot_click.

146. DATA:lwa_t001w LIKE LINE OF i_t001w.

147. READ TABLE i_t001w INTO lwa_t001w INDEX es_row_no-row_id. "判断行号148. CASE e_column_id-fieldname . "判断列名

149.WHEN 'NAME1'.

150.CALL TRANSACTION 'ME51N' AND SKIP FIRST SCREEN. "随便写的151.WHEN 'ZICON'."

152.SELECT werks

https://www.wendangku.net/doc/bb6832182.html,1

154. INTO TABLE i_detail

155. FROM t001w

156. WHERE werks = lwa_t001w-werks2.

157.CLEAR lwa_t001w.

158.IF sy-subrc NE 0.

159. MESSAGE'No result finding!' TYPE 'I'.

160.ELSE.

161. CALL SCREEN 1002.

162.ENDIF.

163.WHEN OTHERS.

164. ENDCASE.

165.* MESSAGE i001(00) WITH '当前行:' es_row_no-row_id ',航线代码:' ls_lt001w-werks.

166.ENDMETHOD."handle_hotspot_click

167."ALV内表展示处双击击事件捕捉,如果设置热点双击不起作用

168.METHOD handle_double_click.

169. DATA:lwa_t001w LIKE LINE OF i_t001w.

170. READ TABLE i_t001w INTO lwa_t001w INDEX es_row_no-row_id.

171. IF e_column-fieldname = 'WERKS'.

172.SET PARAMETER ID 'AUN' FIELD lwa_t001w-werks.

173.CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.

174. ENDIF.

175.ENDMETHOD."handle_double_click

176.

177.ENDCLASS."alv_event_receiver

178.START-OF-SELECTION.

179.CALL SCREEN 1001.

180.

181.*&---------------------------------------------------------------------*

182.*&Module STATUS_1001OUTPUT

183.*&---------------------------------------------------------------------*

184.* text

185.*---------------------------------------------------------------------

-*

186.MODULE status_1001 OUTPUT.

187.SET PF-STATUS 'T001'.

188.*SET TITLEBAR 'xxx'.

189.ENDMODULE." STATUS_1001OUTPUT

190.*&---------------------------------------------------------------------*

191.*&Module USER_COMMAND_1001INPUT

192.*&---------------------------------------------------------------------*

193.* text

194.*----------------------------------------------------------------------*

195.MODULE user_command_1001 INPUT.

196.FIELD-SYMBOLS TYPE typ_t001w .

197.DATA: i TYPE i VALUE 0.

198.DATA ok_code TYPE sy-ucomm.

199.ok_code = sy-ucomm.

200.CLEAR sy-ucomm.

201.

202.CASE ok_code.

203. WHEN 'BACK'.

204.LEAVE TO SCREEN 0.

205. WHEN 'EDIT'.

206.IF grid->is_ready_for_input( ) EQ 0.

207.CALL METHOD grid->set_ready_for_input

208. EXPORTING

209.i_ready_for_input = 1.

210.ELSE.

211.CALL METHOD grid->set_ready_for_input

212. EXPORTING

安卓按钮单击事件

第一种:匿名内部类作为事件监听器类 大部分时候,事件处理器都没有什么利用价值(可利用代码通常都被抽象成了业务逻辑方法),因此大部分事件监听器只是临时使用一次,所以使用匿名内部类形式的事件监听器更合适,实际上,这种形式是目前是最广泛的事件监听器形式。上面的程序代码就是匿名内部类来创建事件监听器的!!! 对于使用匿名内部类作为监听器的形式来说,唯一的缺点就是匿名内部类的语法有点不易掌握,如果读者java基础扎实,匿名内部类的语法掌握较好,通常建议使用匿名内部类作为监听器。 第二种:内部类作为监听器 将事件监听器类定义成当前类的内部类。1、使用内部类可以在当前类中复用监听器类,因为监听器类是外部类的内部类,2、所以可以自由访问外部类的所有界面组件。这也是内部类的两个优势。上面代码就是内部类的形式!! 第三种:Activity本身作为事件监听器

这种形式使用activity本身作为监听器类,可以直接在activity类中定义事件处理器方法,这种形式非常简洁。但这种做法有两个缺点:(1)这种形式可能造成程序结构混乱。Activity 的主要职责应该是完成界面初始化;但此时还需包含事件处理器方法,从而引起混乱。(2)如果activity界面类需要实现监听器接口,让人感觉比较怪异。 上面的程序让Activity类实现了OnClickListener事件监听接口,从而可以在该Activity类中直接定义事件处理器方法:onClick(view v),当为某个组件添加该事件监听器对象时,直接使用this作为事件监听器对象即可。 第四种:外部类作为监听器 ButtonTest类 当用户单击button按钮时,程序将会触发MyButtonListener监听器 外部MyButtonListener类

委托及事件响应button_click

C#事件及响应方法——让你明白private void button1_Click(object se nder, System.EventArgs e) C#语言自C/C++演变而来。它是现代、简单、完全面向对象和类型安全的。C#语言是微软公司针对.Net平台才推出来的一门新语言,作为.Net平台的第一语言,它几乎集中了所有关于软件开发和软件工程研究的最新成果。面向对象、类型安全、组件技术、自动内存管理、跨平台异常处理、版本控制、代码安全管理…… 在.NET应用程序开发中,不管是WEB Forms(https://www.wendangku.net/doc/bb6832182.html,)还是Windows Forms,都涉及到大量对象的事件响应及处理,比如客户在线提交一份订单、或是在Windows窗口上移动鼠标等都将有事件发生。那么在C#中,是怎样声明事件并为事件添加响应方法的呢?下面的文章对此为大家作了详细的讲述。 原理简介 在C#中,一个类可以有域(Fields)、属性(Properties)、方法(Methods)、索引(Ind exs)、事件(Events)等成员,其中事件(Events)成员就是用来声明一个类事件的。在类中声明一个事件成员一般采用如下的语法形式: public event 代表名事件名。 如在Control类中声明了一个Click事件成员,其语法如下: public event EventHandler Click; 在C#中,增加了一个新的数据类型delegate(代表)来解决事件处理问题。代表数 据类型非常类似于C语言中的指针,其与指针不同的是,其是代码是安全的,可管理的。 由于C#本身的简易性,对于没有使用过C及指针的程序来说,理解delegate也是非常容易的。 在C#中,通过使用delegate,你可以通过“+=”(加等于)操作符非常容易地为.Ne t对象中的一个事件添加一个甚至多个响应方法;还可以通过非常简单的“-=”(减等于)操作符取消这些响应方法。如下面为temp按钮添加Click事件的语句: temp.Click+=new System.EventHandler(this.Test);//为test添加事件处理方 法 在上面声明事件的语句中,Eventhandler是一个delegate(代表)类型,其在.Net类库中如下声明的: public delegate void EventHandler(object sender,EventArgs e); 这样,所有形如:void 函娄名(object 参数名,EventArgs参数名);的函数都可以作为Co ntrol类的Click事件响应方法了。如下面所定义的一个事件响应方法: private void button1_Click(object sender, System.EventArgs e)

HTML Button.onclick 事件汇总

HTML Button.onclick 事件汇总 关于web设计中的命名标准 #page #header #logo #sm (servicemenu) .regsiter .login #nav .menu .subMenu .search .sreachbtn(搜索按钮).sreachinput(搜索输入 框) #container .bread [#areaSidebar] #sidebar .title .service .news .newslist .piclist .hot .msg(提示信息) .download .tab .list .accordion [#areaBanner] #content .contentMain .input .select .note .summary

在ppt中的按钮事件

在ppt中的按钮事件 2010-09-03 16:40 要想实现标题所示的效果,得使用VBA来实现! 一:首先介绍如何插入Flash影片 单击“视图/工具栏/控件工具箱”,选择“其他控件/ShoCkwave Flash Object”,在幻灯片中用鼠标拖出一个方框,调整好大小。这样,我们用插入控件的方法插入一个Flash控件,选择当前控件,在“属性”面板中作如下设置:“MovIE”中填入所需的Flash影片名称,“名称”就用默认的“ShockwaveFlash1”,这个名称在后面的VBA编程中要用到。 二:插入命令按钮 ①制作(播放)按钮 在“控件工具箱”中选择“命令按钮”,在幻灯片中拖动,即可拖出一个命令按钮。调整好大小,在“属性”面板中作如下设置:“名称”中输入 “Cmd_play”,“Caption”中输入“播放”。双击该按钮,进入VBA编辑窗口,输入如下内容: Private Sub Cmd_play_Click() ShoCkwaveFlash1.Playing = True End Sub ②制作(暂停)、(前进)、(后退)、(返回)、(结束)按钮 按钮制作的方法同上。“属性”面板中分别作如下设置:暂停按钮的“名称”为“Cmd_pause”,“Caption”为“暂停”;前进按钮按钮的“名称”为“cmd_forward”,“Caption”为“前进”;后退按钮的“名称”为 “cmd_back”,“Caption”为“后退”;返回按钮的“名称”为“cmd_start”,“Caption”为“返回”;结束按钮的“名称”为“cmd_end”,“Caption”为“结束”。 分别为各个按钮加上VBA,命令依次如下: Private Sub Cmd_pause_Click() ShoCkwaveFlash1.Playing = False End Sub Private Sub Cmd_forward_Click() ShoCkwaveFlash1.FrameNum = ShockwaveFlash1.FrameNum + 30 ShoCkwaveFlash1.Playing = True End Sub Private Sub Cmd_back_Click() ShoCkwaveFlash1.FrameNum = ShockwaveFlash1.FrameNum - 30 ShoCkwaveFlash1.Playing = True End Sub Private Sub Cmd_start_Click() ShoCkwaveFlash1.FrameNum = 1 ShoCkwaveFlash1.Playing = True End Sub

Button按钮的四种点击方式

Button按钮的四种点击方式 第一种:直接在代码中设置按钮的点击事件即可 private Button btn; private ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(https://www.wendangku.net/doc/bb6832182.html,yout.activity_main3); btn = ((Button) findViewById(R.id.btn)); iv = ((ImageView) findViewById(R.id.iv)); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //第一种点击方式 Toast.makeText(Main3Activity.this,"第一种点击方式",Toast.LENGTH_SHORT).show(); } }); 第二种:在xml布局按钮的属性加上onClick=“...”,然后在代码中撰写该方法即可

相关文档