第9章 用户自定义事件
- 格式:ppt
- 大小:784.00 KB
- 文档页数:17
第9 章自定义Excel 2007 界面Excel 2003 及以前版本使用菜单栏和工具栏进行操作,在Excel 2007 中引进行功能区(RibbonX)。
本章实例分别介绍定制这两类控制的方法。
9.1 使用工具栏对象命令栏包括菜单栏和工具栏,在Excel VBA 中,用CommandBars 集合对象表示所有的命令栏集合。
在Excel 2003 中创建的自定义菜单栏,在Excel 2007 中也可打开使用,只是这些菜单都添加到“加载项”选项卡中。
案例 170 创建自定义菜单1.功能说明菜单栏和工具栏是用户与Excel 进行交互的工具,在Excel 中,将菜单栏、工具栏和快捷菜单合并为一种功能,称为命令栏,都放置到CommandBars 集合中。
在Excel 中,可以使用VBA 代码控制菜单(如增加自定义菜单)。
2.语法说明在Excel VBA 中,CommandBarControl 对象表示具体的命令按钮或菜单项,该对象是CommandBarControls 集合中的成员。
每个CommandBar 对象包含一个CommandBarControls 集合对象。
由CommandBar 对象(如主菜单、“常用”工具栏和“格式”工具栏等命令栏)组成CommandBars 集合对象。
CommandBarControl 对象常用属性和方法如下:•Caption 属性,返回或设置指定命令栏控件的题注文字。
•OnAction 属性,返回或设置一个VBA 宏(子过程)名,该宏在用户单击或更改某命令栏控件的值时运行。
CommandBarControls 集合对象由CommandBarControl 对象组成,通过Add 方法可新建一个CommandBarControl 对象,并将其添加到指定命令栏上的控件集合中。
其语法格式如下:expression.Add(Type, Id, Parameter, Before, Temporary)各参数含义的如下:•Type 设置添加到指定命令栏的控件类型。
custome事件用法在过去的日子里,我们在处理网页交互时,通常会使用JavaScript事件来响应用户的操作。
如今,为了提高用户体验,越来越多的开发者开始关注自定义事件(Custome事件)。
本文将详细介绍Custome事件的用法及其在实际开发中的应用。
一、概述Custome事件自定义事件(Custome事件)是指开发者自行定义的一种事件,它允许你在特定情况下触发特定的操作。
与内置事件相比,Custome事件具有更高的灵活性和可定制性。
通过使用Custome事件,你可以更好地控制事件冒泡和捕获,以及处理事件的优先级。
二、Custome事件的用法在创建Custome事件时,你需要遵循以下步骤:1.定义事件名:为你的Custome事件起一个独特的事件名,以便在代码中识别。
2.注册事件处理函数:在HTML元素上使用`addEventListener()`方法注册事件处理函数。
3.编写事件处理函数:在事件处理函数中,编写响应事件的逻辑。
4.触发事件:通过JavaScript代码触发事件。
下面是一个简单的实例,演示如何创建和使用Custome事件:```html<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Custome Event Example</title></head><body><button id="myButton">Click me!</button><script>// 定义Custome事件名const customEventName = "myCustomEvent";// 注册事件处理函数document.getElementById("myButton").addEventListener(customEventN ame, function(event) {// 编写事件处理逻辑console.log("Event triggered:", event);alert("Button clicked!");});// 触发事件setTimeout(() => {const event = new CustomEvent(customEventName, {bubbles: true,cancelable: true,detail: {message: "Hello from custom event!"}});document.querySelector("#myButton").dispatchEvent(event);}, 1000);</script></body></html>```在这个例子中,我们创建了一个名为`myCustomEvent`的Custome事件。
create by amu on 2012-08-16----------------------------------------------------------------------------------------1.window中的事件事件名触发的时机01.Activate 在窗口激活之前触发02.Clicked 当用户用鼠标单击窗口的空白区域(没有控件的区域)时触发03.Close 当关闭窗口时触发04.CloseQuery 当清除或关闭窗口时触发。
然后检查Message.ReturnValue的值,若为1,则窗口不能关闭05.Deactivate 当窗口变为非活动状态时触发06.DoubleClicked 当用户双击窗口的空白区域时触发07.DragDrop 当一个可拖动的控件被拖动到窗口上时触发08.DragEnter 当一个可拖动的控件进入窗口时触发09.DragLeave 当一个可拖动的控件离开窗口时触发10.DragWithin 当一个可拖动的控件在窗口内部拖动时触发11.Hide 在窗口被隐藏时触发12.HotLinkAlarm 在DDE中服务器应用已经发送了新的数据,客户DDE应用已经接收到这些数据时触发13.Key 当用户击了一个键且插入点不在RichTextEdit编辑控件或数据窗口控件时触发14.MouseDown 当用户在窗口的空白区域按下鼠标左键时触发15.MouseMove 当鼠标在窗口内移动时触发16.MouseUp 当用户在窗口的空白区域释放鼠标左键时触发17.Open 当程序调用以此窗口为参数的Open函数时,此事件在该窗口打开之后,显示之前触发18.Help .........19.Other 当一个非PowerBuilder事件的Windows信息发生时触发20.RButtonDown 在窗口的空白区域单击鼠标右键时触发21.RemoteExec 当一个DDE客户应用发送了一个命令时触发22.RemoteHotLinkStart 当一个DDE客户应用开始一个热连接时触发23.RemoteHotLinkStop 当一个DDE客户应用结束一个热连接时触发24.RemoteRequest 当一个DDE客户应用请求数据时触发25.RemoteSend 当一个DDE客户应用已经发送了数据时触发26.Resize 当用户或程序打开或重设窗口大小时触发27.Show 当程序运行此窗口的show函数时,此事件在窗口显示之前触发28.SystemKey 当插入点不在某个行编辑中且用户按了ALT或ALT加其它键时触发29.Timer 在调用Timer函数后,经过了Timer函数指定的时间后触发30.ToolBarMoved 当MDI窗口的工具条移动时触发以上是我新建一个window是window的事件原来的顺序,下面是我自己常用的排序:01.window打开时发生的事件事件名触发的时机Activate 在窗口激活之前触发Resize 当用户或程序打开或重设窗口大小时触发Open 当程序调用以此窗口为参数的Open函数时,此事件在该窗口打开之后,显示之前触发Show 当程序运行此窗口的show函数时,此事件在窗口显示之前触发02.window关闭时发生的事件Deactivate 当窗口变为非活动状态时触发CloseQuery 当清除或关闭窗口时触发。
第9章事件处理机制事件处理机制是计算机系统中的一种重要机制,用于处理外部或内部事件的发生和处理。
事件是指系统中一些特定的行为或状态的改变,可以是用户的输入、硬件设备的信号、软件程序的响应等。
事件处理机制的作用是根据不同的事件类型,采取相应的处理方法,以保证系统的稳定运行和用户的良好体验。
事件处理机制主要由两个部分组成:事件的产生和事件的处理。
事件的产生通常是由外部的触发器或内部的程序发起,例如用户鼠标点击、键盘输入、系统定时等等。
事件的产生会产生一个事件对象,其中包含了事件的相关信息,如事件类型、事件源、事件发生的时间等等。
事件对象会被传递给事件处理器,进行事件的处理。
事件的处理可以分为同步处理和异步处理两种方式。
同步处理是指事件的发生和处理是顺序进行的,即事件处理器会立即对事件进行处理,并阻塞后续的事件。
这种方式适用于对实时性要求较高的场景,例如游戏中的用户操作响应。
异步处理是指事件的发生和处理是分开进行的,即事件处理器会将事件放入事件队列中,等待系统空闲时进行处理。
这种方式适用于对实时性要求不高的场景,可以提高系统的效率。
在事件处理机制中,通常由一个事件分发器负责事件的分发和事件处理器的注册和注销。
事件分发器会根据事件类型和事件源,将事件对象分发给相应的事件处理器进行处理。
事件处理器是实现了特定接口或继承了特定类的对象,具备处理事件的能力。
事件处理器可以是系统的内置事件处理器,也可以是用户自定义的事件处理器。
用户可以根据需要,注册和注销不同的事件处理器,实现定制化的事件处理逻辑。
事件处理机制的设计和实现中,需要考虑以下几个关键问题:1.事件的类型和范围:不同的事件类型需要采取不同的处理方法,因此需要定义清楚各种事件的类型和范围。
2.事件的传递和分发:事件对象需要按照一定规则传递和分发给相应的事件处理器,可以采用观察者模式或责任链模式等方式实现。
3.事件处理的优先级和顺序:事件处理器可以按照优先级或顺序进行注册和注销,以确保事件的处理能够按照一定的顺序进行。
第九章GUI案例9-1 AWT事件处理机制一、案例描述1、考核知识点编号:00109002名称:AWT事件处理机制2、练习目标掌握如何使用AWT事件处理机制3、需求分析事件处理机制专门用于响应用户的操作,比如,想要响应用户的点击鼠标、按下键盘等操作,就需要使用AWT的事件处理机制。
为了让初学者熟悉AWT的事件处理机制,本案例将实现关闭一个窗口的功能。
4、设计思路(实现原理)1)编写类Example012)建立一个窗体,名为“第一个窗体”3)定义一个类MyWindowListener实现事件监听器的接口WindowListener。
4)通过addWindowListener()方法为事件源注册事件监听器对象。
二、案例实现import java.awt.*;import java.awt.event.*;public class Example01 {public static void main(String[] args) {// 建立新窗体Frame f = new Frame("第一个窗体!");// 设置窗体的宽和高f.setSize(300, 300);// 设置窗体的出现的位置f.setLocation(300, 200);// 设置窗体可见f.setVisible(true);// 为窗口组件注册监听器MyWindowListener mw=new MyWindowListener();f.addWindowListener(mw);}}// 创建MyWindowListener类实现WindowListener接口class MyWindowListener implements WindowListener {// 监听器监听事件对象作出处理public void windowClosing(WindowEvent e) {Window window = e.getWindow();window.setVisible(false);// 释放窗口window.dispose();}public void windowActivated(WindowEvent e) {}public void windowClosed(WindowEvent e) {}public void windowDeactivated(WindowEvent e) {}public void windowDeiconified(WindowEvent e) {}public void windowIconified(WindowEvent e) {}public void windowOpened(WindowEvent e) {}}运行结果如图9-1所示。
Web程序设计第九章习题1.填空题(1)在代码隐藏页模型中,一个Web窗体包含用于界面显示代码的.aspx文件和用于事件处理等代码的.aspx.cs文件,其实质是一个典型的二层架构。
(2)三层架构将Web应用程序分为三层:表示层,业务逻辑层,数据访问层。
(3)三层架构中,表示层需要引用业务逻辑层,业务逻辑层需要引用数据访问层。
(4)用户注册需要首先从表示层获取用户名等注册信息,再通过业务逻辑层中的用户检查等方法调用数据访问层中相应的方法实现数据库中用户名查询等操作。
2.是非题(1)表示层既可以用于接收用户的数据输入,又可用于显示业务逻辑处理的结果。
(√)(2)业务逻辑层可以直接访问数据库完成数据查找,插入,更新和删除等操作。
(×)(3)当使用LINQ to SQL技术操作数据库时,三层架构可以只包括表示层,业务逻辑层和数据访问层。
(√)(4)表示层项目可以直接引用数据访问层项目。
(×)(5)从数据访问角度看,用户登录只涉及数据查询操作。
(×)3.选择题(1)在三层架构中,下面(B)不是必须的。
A.表示层B.ModelC. 业务逻辑层D.数据访问层(2)在三层架构中,下面(C)是错误的。
A.表示层项目实质是一个网站或Web应用程序项目B.业务逻辑层项目实质是一个类库项目C.除表示层,业务逻辑层,数据访问层外,一定要包含业务实体类Model和数据访问通过类DBUtilityD.数据访问层项目实质是一个类库项目(3)关于用户管理,下面(A)是错误的。
A.呈现用户状态和权限只需要使用表示层B.注册用户肯定要使用到表示层,业务逻辑层,数据访问层C.修改用户密码肯定要使用到表示层,业务逻辑层,数据访问层D.用户登录肯定要使用到表示层,业务逻辑层,数据访问层。
第九章GUI案例9-1 AWT事件处理机制一、案例描述1、考核知识点编号:00109002名称:AWT事件处理机制2、练习目标掌握如何使用AWT事件处理机制3、需求分析事件处理机制专门用于响应用户的操作,比如,想要响应用户的点击鼠标、按下键盘等操作,就需要使用AWT的事件处理机制。
为了让初学者熟悉AWT的事件处理机制,本案例将实现关闭一个窗口的功能。
4、设计思路(实现原理)1)编写类Example012)建立一个窗体,名为“第一个窗体”3)定义一个类MyWindowListener实现事件监听器的接口WindowListener。
4)通过addWindowListener()方法为事件源注册事件监听器对象。
二、案例实现import java.awt.*;import java.awt.event.*;public class Example01 {public static void main(String[] args) {// 建立新窗体Frame f = new Frame("第一个窗体!");// 设置窗体的宽和高f.setSize(300, 300);// 设置窗体的出现的位置f.setLocation(300, 200);// 设置窗体可见f.setVisible(true);// 为窗口组件注册监听器MyWindowListener mw=new MyWindowListener();f.addWindowListener(mw);}}// 创建MyWindowListener类实现WindowListener接口class MyWindowListener implements WindowListener {// 监听器监听事件对象作出处理public void windowClosing(WindowEvent e) {Window window = e.getWindow();window.setVisible(false);// 释放窗口window.dispose();}public void windowActivated(WindowEvent e) {}public void windowClosed(WindowEvent e) {}public void windowDeactivated(WindowEvent e) {}public void windowDeiconified(WindowEvent e) {}public void windowIconified(WindowEvent e) {}public void windowOpened(WindowEvent e) {}}运行结果如图9-1所示。