《一种处理控件属性的方法及装置.pdf》由会员分享,可在线阅读,更多相关《一种处理控件属性的方法及装置.pdf(12页珍藏版)》请在专利查询网上搜索。
1、10申请公布号CN102004633A43申请公布日20110406CN102004633ACN102004633A21申请号200910172911122申请日20090903G06F9/4420060171申请人阿里巴巴集团控股有限公司地址英属开曼群岛大开曼岛72发明人唐红兵74专利代理机构北京同达信恒知识产权代理有限公司11291代理人郭润湘54发明名称一种处理控件属性的方法及装置57摘要本申请公开了一种处理控件属性的方法,包括在用户界面GUI控件的控件属性表中针对该GUI控件的各类属性预设属性索引,以及属性索引与属性处理方法之间的映射关系;在用户访问所述控件属性表时,根据用户指示确定用。
2、户指定处理的至少一个属性的属性索引;根据所述属性索引与属性处理方法之间的映射关系,获取对应所述至少一个属性的属性索引的属性处理方法;执行获得的属性处理方法并向用户返回执行结果。这在很大程度上避免了字符串匹配流程所带来的繁琐操作,有效提升了控件的属性访问效率,从而提高了系统的运行效率和软件平台的服务质量。51INTCL19中华人民共和国国家知识产权局12发明专利申请权利要求书2页说明书6页附图3页CN102004646A1/2页21一种处理控件属性的方法,其特征在于,包括在用户界面GUI控件的控件属性表中针对该GUI控件的各类属性预设属性索引,以及属性索引与属性处理方法之间的映射关系;在用户访问。
3、所述控件属性表时,根据用户指示确定用户指定处理的至少一个属性的属性索引;根据所述属性索引与属性处理方法之间的映射关系,获取对应所述至少一个属性的属性索引的属性处理方法;执行获得的属性处理方法并向用户返回执行结果。2如权利要求1所述的方法,其特征在于,所述根据用户指示确定用户指定处理的至少一个属性的属性索引,包括若用户指示包含所述至少一个属性的属性索引,则直接获取该属性索引;若用户指示包含所述至少一个属性的属性全局标识ID,则根据预设的属性全局ID与属性索引之间的映射关系,获取对应所述属性全局ID设置的属性索引;若用户指示包含所述至少一个属性的属性名称,则根据预设的属性名称与属性全局ID之间的映。
4、射关系,获取对应所述属性名称设置的属性全局ID,再根据预设的属性全局ID与属性索引之间的映射关系,获取对应该属性全局ID设置的属性索引;其中,属性全局ID用于在系统中唯一标识某一属性。3如权利要求1或2所述的方法,其特征在于,根据所述属性索引与属性处理方法之间的映射关系,获取对应所述至少一个属性的属性索引的属性处理方法时,包括将所述至少一个属性的属性索引分别与所述控件属性表中记录的最小属性索引和最大属性索引进行比较,确定所述至少一个属性的属性索引的取值,归属于所述最小属性索引与最大属性索引限定的取值区间时,根据所述至少一个属性的属性索引与所述最小属性索引的差值获取对应的属性处理方法。4如权利要。
5、求3所述的方法,其特征在于,若确定所述至少一个属性的属性索引的取值,不归属于所述最小属性索引与最大属性索引限定的取值区间,则在当前访问的控件属性表继承的父类控件属性表中继续查找,直至返回处理结果。5如权利要求3所述的方法,其特征在于,根据所述至少一个属性的属性索引获得对应的属性处理方法后,若获知对应该属性索引进一步设置有延迟处理标志,则暂停处理,并在指定时机执行获得的属性处理方法。6如权利要求3所述的方法,其特征在于,所述根据所述至少一个属性的属性索引与所述最小属性索引的差值获取对应的属性处理方法,具体包括根据所述差值在属性方法表中获取对应的属性处理方法。7一种用于处理控件属性的终端,其特征在。
6、于,包括设置单元,用于在用户界面GUI控件的控件属性表中针对该GUI控件的各类属性预设属性索引,以及属性索引与属性处理方法之间的映射关系;存储单元,用于保存针对所述GUI控件的各类属性预设的属性索引,以及属性索引与属性处理方法之间的映射关系第一处理单元,用于在用户访问所述控件属性表时,根据用户指示确定用户指定处理权利要求书CN102004633ACN102004646A2/2页3的至少一个属性的属性索引,并根据所述属性索引与属性处理方法之间的映射关系,获取对应所述至少一个属性的属性索引的属性处理方法;第二处理单元,用于执行获得的属性处理方法并向用户返回执行结果。8如权利要求7所述的终端,其特征。
7、在于,所述第一处理单元根据用户指示确定用户指定处理的至少一个属性的属性索引时,若用户指示包含所述至少一个属性的属性索引,则直接获取该属性索引;若用户指示包含所述至少一个属性的属性全局标识ID,则根据预设的属性全局ID与属性索引之间的映射关系,获取对应所述属性全局ID设置的属性索引;若用户指示包含所述至少一个属性的属性名称,则根据预设的属性名称与属性全局ID之间的映射关系,获取对应所述属性名称设置的属性全局ID,再根据预设的属性全局ID与属性索引之间的映射关系,获取对应该属性全局ID设置的属性索引;其中,属性全局ID用于在系统中唯一标识某一属性。9如权利要求7或8所述的终端,其特征在于,所述第一。
8、处理单元根据所述属性索引与属性处理方法之间的映射关系,获取对应所述至少一个属性的属性索引的属性处理方法时,先将所述至少一个属性的属性索引分别与所述控件属性表中记录的最小属性索引和最大属性索引进行比较,确定所述至少一个属性的属性索引的取值,归属于所述最小属性索引与最大属性索引限定的取值区间时,根据所述至少一个属性的属性索引与所述最小属性索引的差值获取对应的属性处理方法。10如权利要求9所述的终端,其特征在于,若所述第一处理单元确定所述至少一个属性的属性索引的取值,不归属于所述最小属性索引与最大属性索引限定的取值区间,则在当前访问的控件属性表继承的父类控件属性表中继续查找,直至返回处理结果。11如。
9、权利要求9所述的终端,其特征在于,所述第一处理单元根据所述至少一个属性的属性索引获得对应的属性处理方法后,若所述第二处理单元获知对应该属性索引进一步设置有延迟处理标志,则暂停处理,并在指定时机执行获得的属性处理方法。权利要求书CN102004633ACN102004646A1/6页4一种处理控件属性的方法及装置技术领域0001本申请涉及计算机领域,特别涉及一种处理控件属性的方法及装置。背景技术0002现有技术下,软件平台通常会提供大量的控件CONTROL供客户端使用,所谓控件即是指在图形用户界面GUI中的一种对象,是用户可与之交互以输入操作数据的对象,用户可操作该对象来执行某一行为,例如,按钮。
10、、列表框、编辑框或者某个对话框中的静态文本。0003每个控件通常都具有几十到上百个属性,例如,控件的名称、控件的大小、颜色,控件在操作界面中的坐标位置等等,这其中既包含了控件本身特有的属性,也包含了继承自父类控件的属性。客户端往往通过设置控件的属性值来使用各种控件。0004现有技术下,客户端在使用各种控件时,通常是按照控件属性表包含的各种属性的属性名称来调用相应的处理代码,现有的控件属性表是保存一组属性名称及其属性处理方法的指针的容器。设置或获取某控件的一个属性的取值时,根据属性名称在控件属性表中查找该属性的处理方法指针,然后调用该属性的处理方法指针来设置或获取相应的属性值。如果在某控件的控件。
11、属性表中找不到指定的属性,则进入该控件的父类控件,并在其父类控件的控件属性表中继续查找,若仍找不到,则进入父类控件的父类控件进行查找,以此类推,直到找到指定属性并进行相应处理或到达根控件仍不能匹配返回错误为止。0005然而,现有技术下,控件属性表中包含的属性名称均设置为字符串型,并且一个控件包含的属性相当多,因此通过属性名称调用指定属性的处理代码是一个计算密集且繁琐的过程,需要进行多次字符串匹配操作,这将会造成大量的系统开销,特别是在处理一个由基类提供的属性时,需要层层递进地在各个父类控件的控件属性表中执行字符串匹配操作来进行查找,这将会大大增加系统的运行负荷,从而严重降低软件平台中的各类控件。
12、的生成效率,进而影响了系统的服务质量。发明内容0006本申请实施例提供一种处理控件属性的方法及装置,用以提高软件平台中,各类控件的属性处理效率,从而提高系统的运行效率。0007本申请实施例提供的具体技术方案如下0008一种处理控件属性的方法,包括0009在用户界面GUI控件的控件属性表中针对该GUI控件的各类属性预设属性索引,以及属性索引与属性处理方法之间的映射关系;0010在用户访问所述控件属性表时,根据用户指示确定用户指定处理的至少一个属性的属性索引;0011根据所述属性索引与属性处理方法之间的映射关系,获取对应所述至少一个属性的属性索引的属性处理方法;说明书CN102004633ACN1。
13、02004646A2/6页50012执行获得的属性处理方法并向用户返回执行结果。0013一种用于处理控件属性的终端,包括0014设置单元,用于在用户界面GUI控件的控件属性表中针对该GUI控件的各类属性预设属性索引,以及属性索引与属性处理方法之间的映射关系;0015存储单元,用于保存针对所述GUI控件的各类属性预设的属性索引,以及属性索引与属性处理方法之间的映射关系0016第一处理单元,用于在用户访问所述控件属性表时,根据用户指示确定用户指定处理的至少一个属性的属性索引,并根据所述属性索引与属性处理方法之间的映射关系,获取对应所述至少一个属性的属性索引的属性处理方法;0017第二处理单元,用于。
14、执行获得的属性处理方法并向用户返回执行结果。0018本申请实施例中,采用重新定义的属性索引访问控件属性表,在这很大程度上避免了字符串匹配流程所带来的繁琐操作,有效提升了控件的属性访问效率,从而提高了系统的运行效率和软件平台的服务质量附图说明0019图1A和图1B为本申请实施例中控件属性表示意图;0020图2为本申请实施例中用于处理控件属性的终端功能结构图;0021图3为本申请实施例中终端处理控件属性流程图。具体实施方式0022客户端在使用各种控件时,通常是按照控件属性表包含的各种属性的属性名称来调用相应的处理代码,现有的控件属性表是保存一组属性名称及其属性处理方法的指针的容器。设置或获取某控件。
15、的一个属性的取值时,根据属性名称在控件属性表中查找该属性的处理方法指针,然后调用该属性的处理方法指针来设置或获取相应的属性值。0023为了提高软件平台中各类控件的属性处理效率,本申请实施例中,在用户界面GUI控件的控件属性表中针对该GUI控件的各类属性预设属性索引,以及属性索引与属性处理方法之间的映射关系;在用户访问所述控件属性表时,根据用户指示确定用户指定处理的至少一个属性的属性索引;根据所述属性索引与属性处理方法之间的映射关系,获取对应所述至少一个属性的属性索引的属性处理方法;执行获得的属性处理方法并向用户返回执行结果。0024本申请实施例中,以系统中的一个控件为例进行介绍,那么,参阅图1。
16、A所示,为该控件设置对应的控件属性表时,采用的方法包含但不限于以下方式0025如图1A所示,设置了一个控件属性表简称属性表,该控件属性表至少包括1保存继承属性表的数组以下称为继承属性表;2一对表示本属性表中属性索引的取值起止范围的变量以下称为最小属性索引和最大属性索引;3一个保存属性方法项即属性的处理方法的数组以下称为属性方法表。0026进一步地,本申请实施例中,还为控件的各类属性预设了可在系统内即软件平台内对其进行唯一标识的属性全局ID,程序代码中一律使用属性全局ID来访问属性;较佳地,将属性全局ID设置为整型,这样,可以在一定程度上提高访问控件属性表时的匹配说明书CN102004633AC。
17、N102004646A3/6页6效率。那么,如图1A所示,在控件属性表中还需要包含一个保存属性全局ID与属性索引之间映射关系的映射表以下称为属性全局ID映射表。0027最后,还需要在控件属性表中定义一个全局字符串属性表,保存字符串型的属性名称与属性全局ID之间的映射关系。0028本申请实施例中,每个控件的控件属性表在GUI系统初始化时随之进行初始化,初始化过程包括0029加载本属性表直接继承的父类控件属性表的指针到继承属性表中;0030为控件属性表分配属性值索引起止范围,并将最小属性索引和最大属性索引保存到属性表对应的存储位置;0031加载控件自身拥有的属性的处理方法及其属性索引到属性方法表中。
18、;0032进一步地,初始化过程还包括0033加载控件自身拥有的属性的属性全局ID及其在属性方法表中的属性索引到属性全局ID映射表中;0034在全局字符串属性表中添加属性名称与属性全局ID映射项即两者之间的映射关系;0035参阅图1B所示,假设GUI软件平台内只包含2个控件WINDOW和BUTTON,其中BUTTON类是继承自WINDOW类的子控件。并假定GUI软件平台只提供了13个属性。0036那么,参见图1B中的属性全局ID映射表,所有属性均分配一个属性全局ID,用于使用属性全局ID替代属性名称访问。0037参见WINDOW类属性表,GUI软件平台分配给该控件类的最小属性索引为1000,最大。
19、属性索引为1999。在该类的属性方法表中,有7个属性可以由该类处理。在该类的继承属性表中,由于该类为基类,没有父类,所以该表为空。在该类的属性全局ID映射表中,建立起该类能处理的7个属性的属性全局ID及其相应的属性索引之间的对应关系。0038参见BUTTON类属性表,GUI软件平台分配给该控件类的最小属性索引为2000,最大属性索引为2999。在该类的属性方法表中,有6个属性可以由该类处理。在该类的继承属性表中,由于该类继承自WINDOW类,所以该表保存了WINDOW类属性表的指针通过该指针可以访问到WINDOW类属性表。在该类的属性全局ID映射表中,建立起该类能处理的6个属性的属性全局ID及。
20、其相应的属性索引之间的对应关系。0039下面结合附图对本申请优选的实施方式进行详细说明。0040参阅图2所示,本申请实施例中,用于处理控件属性的终端包含设置单元10、存储单元11、第一处理单元12和第二处理单元13,其中,0041设置单元10,用于在GUI控件的控件属性表中针对该GUI控件的各类属性预设属性索引,以及属性索引与属性处理方法之间的映射关系;0042存储单元11,用于保存针对所述GUI控件的各类属性预设的属性索引,以及属性索引与属性处理方法之间的映射关系0043第一处理单元12,用于在用户访问所述控件属性表时,根据用户指示确定用户指定处理的至少一个属性的属性索引,并根据所述属性索引。
21、与属性处理方法之间的映射关系,获取对应所述至少一个属性的属性索引的属性处理方法;0044第二处理单元13,用于执行获得的属性处理方法并向用户返回执行结果。说明书CN102004633ACN102004646A4/6页70045参阅图3所示,本申请实施例中,终端根据用户指令访问控件属性表以对控件属性进行处理的详细流程如下0046步骤300接收用户通过人机界面发送的用于访问控件属性表的请求消息,该请求消息中至少携带该控件属性表的标识信息。0047用户通过终端访问控件属性表,是为了调用控件某个属性的处理方法以获取该属性的取值供用户参考,或者对该属性的取值进行调整以创建新的控件。0048步骤301根据。
22、获得的控件标识信息获取对应该标识信息保存的控件属性表。0049步骤302根据用户指示确定该用户指定处理的至少一个属性的属性索引。0050实际应用中,终端可以根据用户指示同时访问多个属性,本实施例仅以访问一个属性为例进行介绍。0051现有技术下,在程序的开发过程中,用于保存控件属性表的程序资源文件通常是一组可扩展标记语言EXTENSIBLEMARKUPLANGUAGE,XML格式的文件,而属性名称以字符串型定义,那么程序运行时须通过处理字符串型属性名称来实现属性的访问。0052而本申请实施例中,较佳地,可以将设置为XML格式的程序资源文件转成二进制格式的文件,这样,在转换中,使得字符串型的属性名。
23、称被转换成了属性索引,例如,以图1B所示的WINDOW类属性表和BUTTON类属性表为例,其对应的XML格式的程序资源文件格式为005300540055005600570058005900600061006200630064转换成二进制格式的文件后,文件中将不再出现字符串型的属性名称。例如上面的CONTROLID、IMAGE等变成了相应的整型属性索引。0065CONTROLID在WINDOW类属性表包含的属性方法表中的索引为2,在WINDOW类属性表中的最小属性索引为1000,因此,CONTROLID被转换成整型属性索引1002。IMAGE在BUTTON类属性表包含的属性方法表中的索引为4,在。
24、BUTTON类属性表的最小属性索引为2000,因此,IMAGE被转换成整型属性索引2004。以此类推,那么,转换后的二进制文件的内容包括0066CONTROLID10020067VISIBLE10000068ENABLE10010069LEFT1003说明书CN102004633ACN102004646A5/6页80070TOP10040071WIDTH10050072HEIGHT10060073TOOLTIP20030074IMAGE20040075步骤303判断获得的至少一个属性的属性索引是否在对应的控件属性表限定的取值区间内若是,则进行步骤304,否则,执行步骤305。0076判断获得的。
25、至少一个属性的属性索引是否在对应的控件属性表限定的取值区间,即是判断该属性的属性索引是否在控件属性表中记录的最小属性索引和最大属性索引之间,例如,控件属性表中的最小属性索引为1000,最大属性索引为1200,即取值区间为1000,1200,那么,若一属性的属性索引为1002,归属于上述取值区间,则表明该属性对应的属性处理方法可以在已获得的控件属性表中找到,若一属性的属性索引为1202,不归属于上述取值区间,则表明该属性对应的属性处理方法不能在已获得的控件属性表中找到,需要在其直接继承的父类控件属性表中继续寻找。0077步骤304根据获得的至少一个属性的属性索引在对应的控件属性表包含的属性方法表。
26、中的索引,并根据该索引在属性方法表中获取并执行对应的属性处理方法。0078本申请实施例中,将一属性的属性索引减去控件属性表中记载的最小属性索引即可获得该属性在属性方法表中的索引,例如,控件属性表中的最小属性索引为1000,一属性的属性索引为1002,则该属性在属性方法表中的索引即为100210002。0079从属性方法表中获得属性的处理方法后,即可调用该方法包含的处理代码执行相关操作,例如,设置属性值或获取属性值等等;接着,执行步骤308。0080步骤305判断已获得的控件属性表直接继承的父类控件属性表是否已遍历若是,则进行步骤309;否则,执行步骤306。0081本申请实施例中,根据控件属性。
27、表包含的继续属性表中记录的父类控件属性表的指针,访问本控件属性表直接继承的全部父类控件属性表。0082步骤306获取下一个父类控件属性表,并根据该父类属性表继续查找用户指定处理的属性的属性索引及对应的属性处理方法。0083如果在当前获得的控件属性表直接继承的父类控件属性表中仍未查找到所需的属性索引,则进入父类控件属性表的父类控件属性表进行继续查找,以此类推,直到找到指定属性的属性索引并进行相应处理或到达根控件仍不能匹配返回错误为止。在各父类控件属性表中查找属性索引及其对应的属性处理方法时,采用的技术手段与步骤303步骤304记载的内容一致,在此不再赘述。0084步骤307判断是否已在某父类控件。
28、属性表中获得用户指定处理的属性的属性处理方法并执行完毕,若是,则执行步骤308,否则,返回步骤305。0085步骤308向用户返回执行成功的提示信息。0086步骤309向用户返回执行失败的提示信息。0087基于上述实施例,在执行步骤302时,根据用户指示确定该用户指定处理的至少一个属性的属性索引时,包含但不限于以下三种实施方式0088若用户在访问指令中输入属性的属性索引进行查找,则从该访问指令中直接获取说明书CN102004633ACN102004646A6/6页9属性的属性索引即可。0089若用户在访问指令中输入属性的属性全局ID进行查找,则根据控件属性表中包含的属性全局ID映射表,获取与该。
29、属性全局ID对应的属性索引;0090若用户在访问指令中输入属性的属性名称进行查找,则先根据控件属性表中包含的全局字符串属性表,获取与该属性名称对应的属性全局ID,再根据控件属性表中包含的属性全局ID映射表,获取与该属性全局ID对应的属性索引。0091与现有技术不同,本申请实施例中,无论用户采用何种方式访问控件属性表,终端均会根据用户指令将用户输入的查询信息转换为对应的属性索引再进行查找,这样,即使用户输入的查询信息是字符串型的属性名称,终端也只需经过两次转换,即可获得对应的属性索引,并根据该属性索引迅速获取并执行相应的属性处理方法。显示,在这很大程度上避免了字符串匹配流程所带来的繁琐操作,有效。
30、提升了控件的属性访问效率,从而提高了系统的运行效率和软件平台的服务质量0092基于上述实施例,在实际应用中,对于属性延迟处理,也可以在现有技术的基础上作进一步优化。0093现有技术下,提供一个延迟处理表,某些属性的访问需要延迟处理如,必须等到控件创建完成后才能处理时,在延迟处理表中作相应记录,因此,每个属性在处理时须检查延迟处理表是否存在相关记录,如果有,则暂不处理。由于属性名称定义为字符串型,因此,在属性延迟处理表中查找相关记录时也需要执行大量的字符串匹配操作,从而导致处理效率低下。0094有鉴于此,本申请实施例中,参阅图1所示,控件属性表中包含的每个属性都对应一个用于表示是否进行延迟处理的。
31、标志,因此,在根据属性索引获得对应的属性处理方法的同时,即可以获知针对该属性是否需要执行延迟处理,而不需要执行大量字符串匹配操作,这样,便进一步提高了控件的属性访问效率,进一步提升了系统的运行效率。0095显然,本领域的技术人员可以对本申请中的实施例进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请实施例中的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请中的实施例也意图包含这些改动和变型在内。说明书CN102004633ACN102004646A1/3页10图1A说明书附图CN102004633ACN102004646A2/3页11图1B图2说明书附图CN102004633ACN102004646A3/3页12图3说明书附图CN102004633A。