在数据约束网络中控制操作表格的实现方法

文档序号:6651175阅读:239来源:国知局
专利名称:在数据约束网络中控制操作表格的实现方法
技术领域
本发明涉及电子技术领域,尤其涉及一种数据约束网格中的表项编辑控制技术。
背景技术
DBGrid(数据约束网格)是Microsoft Visual Basic中内置的表格编辑控件,用于与数据访问控件绑定以实现快速访问数据库内容。
DBGrid在实际应用中,有时会需要同时选定DBGrid中的多行记录,并对选中的多行记录进行相同的操作,例如,同时修改所有被选中记录的某一字段的内容等。
目前,DBGrid本身只支持有限的多行选定方法,即按住键盘中的Ctrl键的同时用鼠标左键单击DBGrid的记录选择器,记录选择器所在的记录就变为选中状态,而原来已经处于选中状态的其他记录也不会变成未选中状态。重复这个操作,可以完成选定多行记录的目的。利用该方法,如果要选定10行记录的话,需要单击鼠标10次。
因此,可以看出现有的DBGrid提供的控制操作选择多项表格时,相应的操作过程较为繁琐,使用起来很不方便。

发明内容
本发明的目的是提供一种在数据约束网格中控制操作表格的实现方法,从而可以实现仅通过两次鼠标单击便可以同时选中多行表格记录,有效简化了表格控制操作过程。
本发明的目的是这样实现的本发明提供了一种数据约束网格中控制操作表格的实现方法,包括A、在操作选择表格行过程中,实时检测Shift键输入信号及鼠标操作键输入信号;B、当获得所述的两输入信号时,则记录表格的当前行;C、根据鼠标输入信号计算鼠标点击的表格行,并将记录的表格当前行与鼠标点击的表格行之间的所有表格行输入到数据约束网格中的表格选择标记集合中。
所述的步骤B还包括在保存数据约束网格当前行之后,删除所有当前其他处于已经选中状态的各行。
所述的步骤B包括B1、当同时检测到Shift键输入信号和鼠标左操作键输入信号,则计算并记录表格的当前行的位置号作为需要选中的连续的若干行中的第一行的位置号。
所述的步骤B1还包括判断鼠标左键输入信号是否位于数据约束网格的记录选择器所在的列,如果是,则保存当前行的位置号作为第一行的位置号,否则退出处理。
所述的步骤B1还包括调用数据约束网格的列计算函数传递鼠标按键抬起事件的横座标变量作为参数,当列计算函数返回值为0时,则确定鼠标点击点所在的列是数据约束网格记录选择器所在的列。
所述的步骤C包括C1、根据鼠标输入信号计算鼠标点击的表格行,计算并记录鼠标点击的表格行对应的位置号作为需要选中的连续的若干行中的末尾行的位置号;C2、将保存的第一行的位置号与保存的末尾行的位置号之间的所有表格行输入到数据约束网格中的表格选择标记集合中。
所述的步骤C2包括根据保存的第一行的位置号与保存的末尾行的位置号的大小确定两位置号之间的所有表格行。
所述的步骤C2包括采用循环方式将所述的第一行的位置号和末尾行的位置号之间的所有行添加数据约束网格中的表格选择标记集合中,且当所述的第一行的位置号小于或等于所述末尾行的位置号时,相应的循环变量为递增循环;当所述的第一行的位置号大于所述末尾行的位置号时,相应的循环变量为递减循环。
所述的位置号是通过保存的数据Data控件的记录集Recordset的绝对位置AbsolutePosition属性值确定确定。
所述的方法还包括在执行完成所述的步骤C后,根据保存的当前行信息恢复当前行。
由上述方案可以得知,本发明是通过对DBGrid控件的改进编程,响应用户的操作来实现一次选定多行记录。即当用户按下键盘Shift键的同时用鼠标左键单击DBGrid的记录选择器时,程序检测到Shift键被按下,则开始计算鼠标单击点所属的行,将该行到当前行之间的所有行的Bookmark值加入到DBGrid的SelBookmarks(表格选择标记)集合中,即可实现选中多行。通过代码对SelBookmarks集合中的行逐个修改内容,即可实现一次修改多行的内容。
因此,通过本发明所描述的方法,用户可以用最少的操作步骤实现对DBGrid表格中的多行记录进行操作,从而大大简化了操作,改善了用户体验,增加了DBGrid操作软件的友好性和易用性。


图1为DBGrid的原始状态示意图;图2为本发明所述的方法的具体实现过程示意图;图3为在DBGrid中选中10行的状态示意图。
具体实施例方式
本发明的核心是修改DBGrid操作控制实体(即DBGrid操作软件)的具体处理过程,从而使得其可以通过少量的操作信号的输入便可以完成同时选中多行表格记录的操作。
本发明提供一种DBGrid中一次选定中多行记录的的方法,避免了原来选定多行需要多次鼠标点击的操作方法,提高了DBGrid操作的效率。
为便于对本发明的理解,下面将结合附图对本发明所述的方法做进一步的详细说明。
假设DBGrid的原始状态如图2所示,DBGrid已经与Data(数据)控件绑定并被填充上记录。当前记录为第1行,当用户按下键盘的Shift键并用鼠标左键单击第10行的记录选择器时,在DBGrid的MouseUp(鼠标按键抬起)事件里便可以采用本发明所述的方法实现,相应的具体实现方式如图2所示,具体包括以下处理过程步骤21判断Shift键是否被按下,即监测是否有Shift键操作信号输入,如果没有,则退出处理,否则继续执行步骤22。
步骤22判断是否有鼠标左键操作输入,如果没有,则退出处理,如果有,则继续执行步骤23。
步骤23判断计算鼠标单击点所在的列是否在记录选择器所在的列,如果不在,则退出处理,否则,继续执行步骤24。
鼠标单击点所在的列的计算方法是调用DBGrid的ColContaining(列计算)函数,传递MouseUp事件的X(横座标)变量作为参数。如果ColContaining返回值为0,则表明鼠标单击点所在的列是DBGrid记录选择器所在的列。
步骤24保存DBGrid的当前行;实际上是保存DBGrid的BookMark(标记)值到一个Variant(不定)变量中。
任何时候,DBGrid总有一行属于当前行,随着用户鼠标对DBGrid单元格的点击(具体是指Shift键未被按下的点击,即用户正常操作时的鼠标点击,而不是在有Shift键按下信号的点击),当前行会发生变化,鼠标点击的行会变成当前行,但是如果用户按下Shift键并且点击DBGrid的记录选择器,则当前行不会发生变化。
步骤25清除所有当前已经被选中的行;也就是清除DBGrid的SelBookmarks集合。
也就是说,用户可能在已经选定多行的情况下再一次执行选定多行的操作,这时就需要先清除原来已经被选定行,再进行以下的操作;当然,如果原来没有选定多行,该清除操作也不会产生多余的问题。
步骤26计算并保存DBGrid当前行在Data控件的记录集中的位置号,也就是保存Data控件的Recordset(记录集)的AbsolutePosition(绝对位置)属性值,即保存需要选中的多行中的第一行对应的位置号;由于DBGrid本身不能读取数据库表的内容,而是通过Data控件来读取数据表的内容,再绑定到DBGrid中,DBGrid才能显示数据,因此,实际编程应用中,DBGrid均需要与Data控件联合使用;所述的Data控件的记录集是Data控件读取数据表的内容后,在内存中的具体保存方式,DBGrid中显示的内容即是记录集中的内容,二者是一一对应的关系。
步骤27计算确定鼠标单击点所在的行,之后,计算并保存该行在Data控件的记录集中的位置号;确定鼠标单击点所在的行通过调用DBGrid的RowContaining(行计算)函数,并传递MouseUp事件的Y(纵座标)变量作为参数。
计算该行在Data控件的Recordset中的位置号是这样实现的把Data控件的Recordset的BookMark值置为鼠标单击点所在的行,再取Recordset的AbsolutePosition值,就是所需要的位置号。
在完成步骤26的操作之后,还需要执行步骤27以便于选择需要选中的连续的多行中的末尾行。
步骤28将步骤26和步骤27确定的两位置号之间的所有行添加到DBGrid的SelBookmarks集合中,该集合用于保存所有被选中的行,凡是添加到这个集合中的行,在DBGrid的界面上都会被显示成选中状态,具体如图3所示。
至此便完成了通过增加一次鼠标点击完成同时选中多行位置号连续的记录,从而简化了相应的DBGrid操作控制过程。
执行上述过程之后,还需要将DBGrid的当前行恢复成步骤24保存的行,这是因为在执行上述各步骤的过程中,会改变DBGrid的当前行,因此,需要通过该步骤以恢复当前行。
另外,本发明在实际的实现过程中还要考虑到步骤26的位置号和步骤27的位置号的大小问题,以便于正确处理执行步骤28,具体的处理方式为在步骤28中是采用循环的方式将步骤26的位置号P1和步骤27的位置号P2之间的所有行添加到DBGrid的SelBookmarks集合中的,如果P1小于或等于P2,则循环变量是递增的循环;如果P1大于P2,则循环变量是递减的循环。
综上所述,本发明中,只需要用户在选中某一行记录的基础上再单击一次鼠标就可以选中DBGrid的多行记录,从而使得相应的操作过程大大简化。
以上所述,仅为本发明较佳的具体实施方式
,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。
权利要求
1.一种数据约束网格中控制操作表格的实现方法,其特征在于,包括A、在操作选择表格行过程中,实时检测Shift键输入信号及鼠标操作键输入信号;B、当获得所述的两输入信号时,则记录表格的当前行;C、根据鼠标输入信号计算鼠标点击的表格行,并将记录的表格当前行与鼠标点击的表格行之间的所有表格行输入到数据约束网格中的表格选择标记集合中。
2.根据权利要求1所述的在数据约束网格中控制操作表格的实现方法,其特征在于,所述的步骤B还包括在保存数据约束网格当前行之后,删除所有当前其他处于已经选中状态的各行。
3.根据权利要求1所述的在数据约束网格中控制操作表格的实现方法,其特征在于,所述的步骤B包括B1、当同时检测到Shift键输入信号和鼠标左操作键输入信号,则计算并记录表格的当前行的位置号作为需要选中的连续的若干行中的第一行的位置号。
4.根据权利要求3所述的在数据约束网格中控制操作表格的实现方法,其特征在于,所述的步骤B1还包括判断鼠标左键输入信号是否位于数据约束网格的记录选择器所在的列,如果是,则保存当前行的位置号作为第一行的位置号,否则退出处理。
5.根据权利要求4所述的在数据约束网格中控制操作表格的实现方法,其特征在于,所述的步骤B1还包括调用数据约束网格的列计算函数传递鼠标按键抬起事件的横座标变量作为参数,当列计算函数返回值为0时,则确定鼠标点击点所在的列是数据约束网格记录选择器所在的列。
6.根据权利要求3、4或5所述的在数据约束网格中控制操作表格的实现方法,其特征在于,所述的步骤C包括C1、根据鼠标输入信号计算鼠标点击的表格行,计算并记录鼠标点击的表格行对应的位置号作为需要选中的连续的若干行中的末尾行的位置号;C2、将保存的第一行的位置号与保存的末尾行的位置号之间的所有表格行输入到数据约束网格中的表格选择标记集合中。
7.根据权利要求6所述的在数据约束网格中控制操作表格的实现方法,其特征在于,所述的步骤C2包括根据保存的第一行的位置号与保存的末尾行的位置号的大小确定两位置号之间的所有表格行。
8.根据权利要求7所述的在数据约束网格中控制操作表格的实现方法,其特征在于,所述的步骤C2包括采用循环方式将所述的第一行的位置号和末尾行的位置号之间的所有行添加数据约束网格中的表格选择标记集合中,且当所述的第一行的位置号小于或等于所述末尾行的位置号时,相应的循环变量为递增循环;当所述的第一行的位置号大于所述末尾行的位置号时,相应的循环变量为递减循环。
9.根据权利要求6所述的在数据约束网格中控制操作表格的实现方法,其特征在于,所述的位置号是通过保存的数据Data控件的记录集Recordset的绝对位置AbsolutePosition属性值确定确定。
10.根据权利要求1至4任一项所述的在数据约束网格中控制操作表格的实现方法,其特征在于,所述的方法还包括在执行完成所述的步骤C后,根据保存的当前行信息恢复当前行。
全文摘要
本发明涉及一种数据约束网格中控制操作表格的实现方法。本发明主要包括首先,在操作选择表格行过程中,实时检测Shift键输入信号及鼠标操作键输入信号,当获得所述的两输入信号时,则首先记录表格的当前行;之后,计算鼠标输入信号对应的表格行;最后将表格的当前行与鼠标输入信号对应的表格行之间的所有表格行输入到数据约束网格中的表格选择集合中。因此,本发明中,用户可以采用最少的操作步骤实现对DBGrid表格中的多行记录进行操作,从而大大简化了操作,改善了用户体验,增加了DBGrid操作软件的友好性和易用性。
文档编号G06F9/44GK1821955SQ200510127918
公开日2006年8月23日 申请日期2005年12月7日 优先权日2005年12月7日
发明者王青 申请人:北京佳讯飞鸿电气有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1