CN103761097B - 一种数据表的表结构对比方法 - Google Patents

一种数据表的表结构对比方法 Download PDF

Info

Publication number
CN103761097B
CN103761097B CN201410032087.0A CN201410032087A CN103761097B CN 103761097 B CN103761097 B CN 103761097B CN 201410032087 A CN201410032087 A CN 201410032087A CN 103761097 B CN103761097 B CN 103761097B
Authority
CN
China
Prior art keywords
control
tables
data
text control
text
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201410032087.0A
Other languages
English (en)
Other versions
CN103761097A (zh
Inventor
吴正辉
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SHENZHEN LAN-YOU TECHNOLOG Co Ltd
Original Assignee
SHENZHEN LAN-YOU TECHNOLOG Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SHENZHEN LAN-YOU TECHNOLOG Co Ltd filed Critical SHENZHEN LAN-YOU TECHNOLOG Co Ltd
Priority to CN201410032087.0A priority Critical patent/CN103761097B/zh
Publication of CN103761097A publication Critical patent/CN103761097A/zh
Application granted granted Critical
Publication of CN103761097B publication Critical patent/CN103761097B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种数据表的表结构对比方法,方法包括以下步骤:S1、设置第一文本控件和第二文本控件,其中第一文本控件和第二文本控件均包括具有表结构的数据表;S2、当第一文本控件滚动时,控制第二文本控件一并滚动;S3、设置与第一文本控件捆绑的第一分格控件以及与第二文本控件捆绑的第二分格控件,并在第一分格控件和第二分格控件中分别绘制与第一文本控件和第二文本控件中的数据表对应的行号;S4、对比第一文本控件和第二文本控件中与行号对应的数据表的表结构。实施本发明的有益效果是,对齐两个控件中的滚动条,直观地对比数据表,提高了开发效率。

Description

一种数据表的表结构对比方法
技术领域
本发明涉及计算机领域,更具体地说,涉及一种数据表的表结构对比方法。
背景技术
C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。C#是面向对象的编程语言,它使得程序员可以快速地编写各种基于MICROSOFT.NET平台的应用程序,MICROSOFT.NET提供了一系列的工具和服务来最大程度地开发利用计算与通讯领域。
但是,在C#开发过程中,对数据表的表结构进行对比时的行号显示功能在滚动的时候容易出现错乱,对比常见的是Richtextbox控件内容与行号未能对应,而且在控制两个Richtextbox控件同步滚动时,两个Richtextbox控件的滚动条位置未对齐,造成开发效率低。
发明内容
本发明要解决的技术问题在于,针对两个控件的滚动条位置未对齐的问题,提供一种数据表的表结构对比方法。
本发明解决其技术问题所采用的技术方案是:构造一种数据表的表结构对比方法,所述方法包括以下步骤:
S1、设置所述第一文本控件和第二文本控件,其中所述第一文本控件和第二文本控件均包括具有表结构的数据表;
S2、当所述第一文本控件滚动时,控制所述第二文本控件一并滚动;
S3、设置与所述第一文本控件捆绑的第一分格控件以及与所述第二文本控件捆绑的第二分格控件,并在所述第一分格控件和第二分格控件中分别绘制与第一文本控件和第二文本控件中的数据表对应的行号;
S4、对比所述第一文本控件和第二文本控件中与所述行号对应的数据表的表结构。
在本发明所述的方法中,所述步骤S1还包括:
S11、设置所述数据表中的关键字及其显示的颜色和字体大小;
S12、设置所述数据表中的触发智能感知的单词,以及所述单词所触发的智能感知内容。
在本发明所述的方法中,所述步骤S2包括以下子步骤:
S21、当所述第一文本控件通过滚动条或鼠标轮滚动时,控制所述数据表中设置有显示的颜色的关键字无闪屏;
S22、控制所述第二文本控件一并滚动。
在本发明所述的方法中,所述步骤S3包括以下子步骤:
S31、设置与所述第一文本控件捆绑的第一分格控件以及与所述第二文本控件捆绑的第二分格控件;
S32、获取所述第一文本控件和第二文本控件中的数据表的第一行与最后一行的第一个字符的位置信息,从而获得所述数据表的总高度和总行数;
S33、根据所述总高度和总行数,计算所述数据表每一行的行高;
S34、根据所述行高,在所述第一分格控件和第二分格控件中分别绘制与第一文本控件和第二文本控件中的数据表对应的行号。
在本发明所述的方法中,所述步骤S32包括以下子步骤:
S321、获取所述第一文本控件和第二文本控件中的数据表的第一行与最后一行的第一个字符的位置信息;
S322、计算所述位置信息之间的距离从而获得所述数据表的总高度,并获取所述数据表的总行数。
在本发明所述的方法中,在所述步骤S33中,所述数据表每一行的行高为所述总高度与所述总行数的商。
在本发明所述的方法中,所述方法还包括:
S331、在所述步骤S33之前,判断所述数据表是否只有一行,若是,则根据字体大小计算所述行高,并转至步骤S34,若否,转至步骤S33。
在本发明所述的方法中,所述步骤S4还包括:
S41、在对比所述第一文本控件和第二文本控件中与所述行号对应的数据表的表结构时,获取在第一文本控件或第二文本控件中的光标所在行以及该行的第一个字符;
S42、根据所述总行数、光标所在行以及该行第一个字符,获取光标处的单词;
S43、若所述单词存在智能感知内容,则触发所述智能感知内容。
在本发明所述的方法中,所述步骤S42包括以下子步骤:
S421、根据所述光标所在行的第一个字符,以空格分隔所述光标所在行的每一个单词;
S422、根据所述总行数和光标所在行,获取当前光标处正在输入或已存在的单词。
在本发明所述的方法中,所述步骤S43包括以下子步骤:
S431、设置显示所述智能感知内容的提示框;
S432、若所述单词存在智能感知内容,则弹出所述提示框,以显示所述智能感知内容。
实施本发明的一种数据表的表结构对比方法,具有以下有益效果:对齐两个控件中的滚动条,提高开发用户的使用体验,多种扩展功能集成在一起,后续开发设置属性即可通过行号一目了然地对比数据表,提高了开发效率。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1是本发明第一实施例提供的一种数据表的表结构对比方法的流程图;
图2是本发明提供的控件结构示意图;
图3是本发明第二实施例提供的一种数据表的表结构对比方法的流程图;
图4是本发明第三实施例提供的一种数据表的表结构对比方法的流程图;
图5是本发明第三实施例提供的判断数据表行数的方法的流程图;
图6是本发明第四实施例提供的一种数据表的表结构对比方法的流程图。
具体实施方式
为了对本发明的技术特征、目的和效果有更加清楚的理解,现对照附图详细说明本发明的具体实施方式。
如图1所示,本发明第一实施例提供的一种数据表的表结构对比方法,用于在开发环境中,增设两个文本控件数据表的表结构对比功能,其中文本控件一般为Richtextbox控件,Richtextbox允许用户输入和编辑文本的同时提供了比普通的TextBox控件更高级的格式特征。Richtextbox控件提供了数个有用的特征,可以在控件中安排文本的格式。要改变文本的格式,必须先选中该文本。只有选中的文本才可以编排字符和段落的格式。有了这些属性,就可以设置文本使用粗体,改变字体的颜色,创建超底稿和子底稿。也可以设置左右缩排或不缩排,从而调整段落的格式。
具体的,该方法用于对比第一文本控件和第二文本控件中的数据表的表结构,方法包括以下步骤:
S1、设置第一文本控件和第二文本控件,其中第一文本控件和第二文本控件均包括具有表结构的数据表;第一文本控件和第二文本控件均为包含数据表的Richtextbox控件。
S2、当第一文本控件滚动时,控制第二文本控件一并滚动;其中,利用滚动条控件可对与其相关联的其它控件中所显示的内容的位置进行调整。控件工具箱中一般有水平滚动条和垂直滚动条两种形式的控件。水平滚动条进行水平方向的调整,垂直滚动条进行垂直方向的调整,两种滚动条也可同时使用。
处理滚动及鼠标轮滚动可以采用下述C#代码实现:
S3、设置与第一文本控件捆绑的第一分格控件以及与第二文本控件捆绑的第二分格控件,并在第一分格控件和第二分格控件中分别绘制与第一文本控件和第二文本控件中的数据表对应的行号。如图2所示,图2中,包括第一文本控件1和第二文本控件2,与第一文本控件1捆绑的第一分格控件3,与第二文本控件2捆绑的第二分格控件4。第一分格控件3和第二分格控件4可以是Panel控件,Panel控件用于为其他控件提供可识别的分组。通常,使用面板按功能细分窗体。将所有选项分组在一个面板中可向用户提供逻辑可视提示。在设计时所有控件都可以轻松移动:当移动Panel控件时,它包含的所有控件也将移动。分组在一个面板中的控件可以通过面板的Controls属性进行访问。此属性返回一批Control实例,因此,通常需要将该方式检索得到的控件强制转换为它的特定类型。相应地,在第一分格控件3和第二分格控件4中绘制行号,采用C#为Richtextbox绘制行号可以通过新建一个用户控件类(UserControl),取名叫“AdaScrollRichTextBox”继承自“System.Windows.Forms.RichTextBox”。在这个类里再加上一个RichTextBox类。如下面这个方法:
在AdaScrollRichTextBox的构造函数里调用这个方法,就可以实现行号了。
S4、对比第一文本控件和第二文本控件中与行号对应的数据表的表结构。这样开发用户就可以一目了然地对比两个Richtextbox中数据表的表结构了。对于绘制的行号的大小以及颜色,可以通过如下代码实现:
[Description(“设置字体大小”)]
Private Font_font=new Font(“宋体”,9)
Public Font CustonFont...
Public RichTextBox OtherRichTextBox...
[Description(“文本框字体颜色”)]
Public Color DIYBaseColor...
本实施例的有益效果是,通过行号的绘制以及滚动的实现,对齐两个控件中的滚动条,直观地对比数据表,提高了开发效率。
如图3所示,本发明第二实施例提供的一种数据表的表结构对比方法,本实施例不同于第一实施例之处在于:设置第一文本控件与第二文本控件时设置控件中的关键字及其显示的颜色和字体大小,以及感知内容;对设置有显示的颜色的关键字在滚动时控制其无闪屏;根据数据表中的总高度与总行数绘制行号。
具体的,本实施例包括以下步骤:
S201、设置第一文本控件和第二文本控件,其中第一文本控件和第二文本控件均包括具有表结构的数据表;其中还包括,S11、设置数据表中的关键字及其显示的颜色和字体大小;S12、设置数据表中的触发智能感知的单词,以及单词所触发的智能感知内容。在Richtextbox控件中新增如关键字等自定义属性,可通过以下代码实现:
[Description(“关键字列表,每个关键字直接以英文的逗号隔开”)]
Public string DIYKeyWord...
[Description(“关键字对应的文本颜色”)]
Public color DIYKeyWordColor...
设置智能感知内容的原理是先设置控件关键字的属性,例如,关键字的属性为:select、alter、update和set。当输入s时,提示框提示两条数据select和set,从而从每个关键字的第一个字符开始查找,判断输入字符是否相同,上述功能可通过以下代码实现:
S202、当第一文本控件滚动时,控制第二文本控件一并滚动;该步骤具体包括以下子步骤:S21、当第一文本控件通过滚动条或鼠标轮滚动时,控制数据表中设置有显示的颜色的关键字无闪屏;S22、控制第二文本控件一并滚动。
其中,Richtextbox控件中的字符在着色后,必然有一个短暂的时间会有文字被选中,结果就是你要加亮的文字会在一瞬间闪现蓝色背景的白色文字。这在滚动时会出现的闪屏现象,并不一定每次都能够看到,但是如果在不停的进行输入的话,就一定会看到这个情况了。控制关键字无闪屏可以通过添加如下代码实现:
SendMessage(base.Handle,0xB,0,IntPtr.Zero)
SendMessage(base.Handle,0xB,1,IntPtr.Zero)
S203、设置与第一文本控件捆绑的第一分格控件以及与第二文本控件捆绑的第二分格控件,并在第一分格控件和第二分格控件中分别绘制与第一文本控件和第二文本控件中的数据表对应的行号;该步骤具体包括以下子步骤:S31、设置与第一文本控件捆绑的第一分格控件以及与第二文本控件捆绑的第二分格控件;S32、获取第一文本控件和第二文本控件中的数据表的第一行与最后一行的第一个字符的位置信息,从而获得数据表的总高度和总行数;S33、根据总高度和总行数,计算数据表每一行的行高;S34、根据行高,在第一分格控件和第二分格控件中分别绘制与第一文本控件和第二文本控件中的数据表对应的行号。
其中,S32包括以下子步骤:S321、获取第一文本控件和第二文本控件中的数据表的第一行与最后一行的第一个字符的位置信息;S322、计算位置信息之间的距离从而获得数据表的总高度,并获取数据表的总行数。那么相应地步骤S33中,数据表每一行的行高为总高度与总行数的商。获取数据表的第一行与最后一行的第一个字符的位置信息时,可以通过获取字符的坐标点信息,然后计算两个坐标的y轴上的值之差,即为位置信息之间的距离,再用该距离除以行数得到行高,在行高中绘制行号。
S204、对比第一文本控件和第二文本控件中与行号对应的数据表的表结构。
本实施例的有益效果是,根据平均行高绘制行号,美化了Richtextbox的开发环境。
如图4所示,本发明第三实施例提供的一种数据表的表结构对比方法,本实施例不同于第二实施例之处在于在设置第一分格控件与第二分格控件时(对应本实施例的步骤S303),添加了行数判断步骤,本实施例具体包括以下步骤:
S301、设置第一文本控件和第二文本控件,以及关键字、智能感知内容;
S302、当第一文本控件滚动时,控制第二文本控件一并滚动,控制关键字无闪屏;
S303、设置第一分格控件以及第二分格控件,判断数据表是否只有一行,得到行高并绘制行号;其中,该步骤具体如图5所示,图5是判断数据表行数的方法的流程图,包括以下子步骤:
S3031、设置与第一文本控件捆绑的第一分格控件以及与第二文本控件捆绑的第二分格控件;
S3032、获取第一文本控件和第二文本控件中的数据表的第一行与最后一行的第一个字符的位置信息,获得总高度,并获取总行数;
S3033、判断数据表是否只有一行,若是,转至步骤S3034,若否,转至步骤S3035;
S3034、根据字体大小计算行高,转至步骤S3036;
S3035、数据表每一行的行高为总高度与总行数的商;
S3036、绘制行号。
S304、对比第一文本控件和第二文本控件中的表结构。
本实施例的有益效果是,在数据表只有一行的情况下,简化了获得行高的步骤,提高了绘制效率。
如图6所示,本发明第四实施例提供的一种数据表的表结构对比方法,本实施例不同于第二实施例之处在于在对比第一文本控件与第二文本控件时(对应本实施例的步骤S404),获取光标处的单词并显示其感知内容,本实施例具体包括以下步骤:
S401、设置第一文本控件和第二文本控件,其中第一文本控件和第二文本控件均包括具有表结构的数据表;
S402、当第一文本控件滚动时,控制第二文本控件一并滚动;
S403、设置与第一文本控件捆绑的第一分格控件以及与第二文本控件捆绑的第二分格控件,并在第一分格控件和第二分格控件中分别绘制与第一文本控件和第二文本控件中的数据表对应的行号;
S404、对比第一文本控件和第二文本控件中与行号对应的数据表的表结构,获取光标处的单词并显示其感知内容。其中,该步骤还包括:
S41、在对比第一文本控件和第二文本控件中与行号对应的数据表的表结构时,获取在第一文本控件或第二文本控件中的光标所在行以及该行的第一个字符;
S42、根据总行数、光标所在行以及该行第一个字符,获取光标处的单词;具体的,该步骤包括以下子步骤:S421、根据光标所在行的第一个字符,以空格分隔光标所在行的每一个单词;S422、根据总行数和光标所在行,获取当前光标处正在输入或已存在的单词。
S43、若单词存在智能感知内容,则触发智能感知内容。具体的,该步骤包括以下子步骤:S431、设置显示智能感知内容的提示框;S432、若单词存在智能感知内容,则弹出提示框,以显示智能感知内容。查找该单词是否存在感知内容,如果不存在,则将提示框释放掉;如果存在,则在Richtextbox控件中查找该提示框,找到后释放掉,在重新定义该提示框的单击事件、键盘事件、名称、显示位置(Richtextbox光标所在的位置),大小等等。并根据用户需要实现鼠标单击事件,键盘事件等。
本实施例的有益效果是,多个扩展功能模块集成在一起,对后续开发的用户提高了体验度,不仅能够直观地对比数据表的内容,还可以智能显示智能感知内容。
上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。

Claims (7)

1.一种数据表的表结构对比方法,其特征在于,所述方法包括以下步骤S1-S4:
S1、设置第一文本控件和第二文本控件,其中所述第一文本控件和第二文本控件均包括具有表结构的数据表;所述步骤S1还包括步骤S11-S12:
S11、设置所述数据表中的关键字及其显示的颜色和字体大小;
S12、设置所述数据表中的触发智能感知的单词,以及所述单词所触发的智能感知内容;
S2、当所述第一文本控件滚动时,控制所述第二文本控件一并滚动;所述步骤S2包括以下子步骤S21-S22:
S21、当所述第一文本控件通过滚动条或鼠标轮滚动时,控制所述数据表中设置有显示的颜色的关键字无闪屏;
S22、控制所述第二文本控件一并滚动;
S3、设置与所述第一文本控件捆绑的第一分格控件以及与所述第二文本控件捆绑的第二分格控件,并在所述第一分格控件和第二分格控件中分别绘制与所述第一文本控件和第二文本控件中的数据表对应的行号;所述步骤S3包括以下子步骤S31-S34:
S31、设置与所述第一文本控件捆绑的第一分格控件以及与所述第二文本控件捆绑的第二分格控件;
S32、获取所述第一文本控件和第二文本控件中的数据表的第一行与最后一行的第一个字符的位置信息,从而获得所述数据表的总高度和总行数;
S33、根据所述总高度和总行数,计算所述数据表每一行的行高;
S34、根据所述行高,在所述第一分格控件和第二分格控件中分别绘制与第一文本控件和第二文本控件中的数据表对应的行号;
S4、对比所述第一文本控件和第二文本控件中与所述行号对应的数据表的表结构。
2.根据权利要求1所述的方法,其特征在于,所述步骤S32包括以下子步骤:
S321、获取所述第一文本控件和第二文本控件中的数据表的第一行与最后一行的第一个字符的位置信息;
S322、计算所述位置信息之间的距离从而获得所述数据表的总高度,并获取所述数据表的总行数。
3.根据权利要求2所述的方法,其特征在于,在所述步骤S33中,所述数据表每一行的行高为所述总高度与所述总行数的商。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
S331、在所述步骤S33之前,判断所述数据表是否只有一行,若是,则根据字体大小计算所述行高,并转至步骤S34,若否,转至步骤S33。
5.根据权利要求4所述的方法,其特征在于,所述步骤S4还包括:
S41、在对比所述第一文本控件和第二文本控件中与所述行号对应的数据表的表结构时,获取在第一文本控件或第二文本控件中的光标所在行以及该行的第一个字符;
S42、根据所述总行数、光标所在行以及该行第一个字符,获取光标处的单词;
S43、若所述单词存在智能感知内容,则触发所述智能感知内容。
6.根据权利要求5所述的方法,其特征在于,所述步骤S42包括以下子步骤:
S421、根据所述光标所在行的第一个字符,以空格分隔所述光标所在行的每一个单词;
S422、根据所述总行数和光标所在行,获取当前光标处正在输入或已存在的单词。
7.根据权利要求6所述的方法,其特征在于,所述步骤S43包括以下子步骤:
S431、设置显示所述智能感知内容的提示框;
S432、若所述单词存在智能感知内容,则弹出所述提示框,以显示所述智能感知内容。
CN201410032087.0A 2014-01-23 2014-01-23 一种数据表的表结构对比方法 Active CN103761097B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201410032087.0A CN103761097B (zh) 2014-01-23 2014-01-23 一种数据表的表结构对比方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201410032087.0A CN103761097B (zh) 2014-01-23 2014-01-23 一种数据表的表结构对比方法

Publications (2)

Publication Number Publication Date
CN103761097A CN103761097A (zh) 2014-04-30
CN103761097B true CN103761097B (zh) 2019-04-02

Family

ID=50528341

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410032087.0A Active CN103761097B (zh) 2014-01-23 2014-01-23 一种数据表的表结构对比方法

Country Status (1)

Country Link
CN (1) CN103761097B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111832270B (zh) * 2019-03-27 2024-03-19 珠海金山办公软件有限公司 一种非表格文档中的表格的行号和列标的显示方法、装置及电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102841938A (zh) * 2012-08-14 2012-12-26 北京久其软件股份有限公司 一种参数化报表的生成方法及系统

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102841938A (zh) * 2012-08-14 2012-12-26 北京久其软件股份有限公司 一种参数化报表的生成方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
beyond compare3.3.5;天极下载;《天极网 天极下载》;20120820;软件截图

Also Published As

Publication number Publication date
CN103761097A (zh) 2014-04-30

Similar Documents

Publication Publication Date Title
US11252158B2 (en) Interactive user-interface to adjust access privileges
CN104731584B (zh) 一种开放式数控系统人机界面可定制的组态设计方法
CN104239044B (zh) 一种图形用户界面动态生成方法
CN104685466B (zh) 用于提供多个视图的浏览器级背景页面
CN108279964B (zh) 蒙层渲染的实现方法、装置、智能设备及存储介质
US9436385B2 (en) Invocation control over keyboard user interface
CN109074246A (zh) 自动确定布局约束的系统和方法
CN104007967B (zh) 一种基于可扩展标记语言的用户界面生成方法和装置
JP2020521214A (ja) フォームのカスタマイズ方法及び装置
CN109358851A (zh) 图表组件的创建方法、装置及计算机可读存储介质
CN105487864A (zh) 代码自动生成的方法和装置
US9665471B1 (en) Program code interface for providing program code and corresponding results of evaluating the program code
CN103577030B (zh) 浏览器窗口界面展现方法及系统
CN105511873A (zh) 用户界面控件展示方法及装置
CN106873863A (zh) 一种界面切换动画的设置方法及装置
CA2716434A1 (en) Systems and methods for determining positioning and sizing of graphical elements
CN107797804A (zh) 生成前端交互界面的方法和装置
CN105760401A (zh) 基于移动终端的报表数据交互方法和系统
CN108108194A (zh) 用户界面编辑方法以及用户界面编辑器
CN102541566A (zh) 半导体软件界面框架生成方法
CN102043586A (zh) 电子表格中的背景色显示方法和装置
CN103473041A (zh) 一种可视化的数据处理方法及系统
CN105607800A (zh) 一种终端屏幕输入显示的方法及装置
CN107491502A (zh) 一种选择词条的方法及终端
CN105528206A (zh) 基于网页的界面生成方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant