科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道在Access主窗体和子窗体之间轻松导航

在Access主窗体和子窗体之间轻松导航

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

对于有经验的Microsoft Access用户,在主窗体和子窗体之间导航是一项非常直观的操作。用向导来生成主窗体/子窗体,可避免涉及嵌入式子窗体的大量导航问题。

作者:ZDNet China,

关键字:

  • 评论
  • 分享微博
  • 分享邮件
本文译自Builder.com,未经许可请勿转载对于有经验的Microsoft Access用户,在主窗体和子窗体之间导航是一项非常直观的操作。在Access中按[Tab]键或[Enter]键,就能遍历一个窗体上的不同控件,或者转移到一个子窗体。从Access的角度说,嵌入的子窗体本质上就是一个控件。Access像对待其他任何控件那样为子窗体提供焦点——具体由预设的Tab键顺序来决定。进入子窗体后,按[Tab]或[Enter]会在子窗体包含的各个控件之间移动,直到抵达最后一个控件。之后,再按[Tab]或[Enter]会将焦点转移到主窗体的Tab键顺序中的下一个控件。然而,在子窗体中工作时,如果想返回主窗体,就会遇到一个问题。

在子窗体中,可采取两种方式返回主窗体:

  • 按一下[Ctrl][Tab],使焦点转移到主窗体Tab键顺序中的下一个控件。
  • 连续按[Tab]或[Enter],直到遍历子窗体中的所有控件;再按一次,焦点就转移到主窗体Tab键顺序中的下一个控件。
问题

虽然直接按[Ctrl][Tab]似乎是一种非常简单的方案,但它并不直观。用户没办法猜到[Ctrl][Tab]的作用就是让焦点返回主窗体。你必须通过窗体上的一条文本消息、用户培训或者软件文档来提醒用户注意这一点。

如果子窗体是一个嵌入的连续窗体,麻烦会更大。所谓“嵌入”,我的意思是将一个现有的窗体添加到另一个表单中,而这不是一个窗体向导自动生成的结果。在这种情况下,你不能像对待一个由向导生成的子窗体那样,对嵌入的子窗体进行同样的访问和控制。[Ctrl][Tab]组合键仍然有效。在任何时候,它都能使焦点转移到主窗体的Tab键顺序中的下一个控件。然而,如果遍历控件,并在抵达最后一个控件之后按[Tab]或[Enter],就不能转移到主窗体上的下一个控件。相反,焦点会返回子窗体的最后一条记录中的第一个控件。你必须记住,按[Ctrl][Tab]虽然并不繁琐,但假如用户正在查看或输入数据,就会感觉非常麻烦,尤其是在按这个组合键会干扰他们的注意力的情况下。

提供一致和易于使用的界面是开发者的天职。用户需要一致性;但是,如果必须按[Ctrl][Tab]而不是[Tab]或[Enter]才能退出一个连续的子窗体,就违背了一致性。谁都不想强迫用户学习如何使用一个应用程序。虽然组合键的功能是内建的,但假如用户忘记应该按什么键,必定会抱怨设计程序的人。

解决方案

所以,你有必要设计一种方案来替代[Ctrl][Tab]组合键。所有子窗体的行为都应该保持一致。焦点位于子窗体的最后一个控件时,只要按[Tab]或者[Enter],就肯定能使焦点转移到主窗体的下一个控件。幸运的是,通过为最后一个控件的KeyUp事件添加一个过程,就很容易解决这个问题。该事件检查每一次击键操作。如果按下的是[Tab]或[Enter],你的过程就使焦点转移到主窗体的下一个控件。

A展示了一个简单的窗体,它由frmOrders和frmOrderDetailsSub构成,基于的是Northwind数据库(Access配套提供的示范数据库)的Orders和Order Details表。你可任意排列主窗体和子窗体。在修改子窗体之前,先花一些时间试验在主窗体和子窗体之间导航。在子窗体上连续按[Tab]或[Enter],直至抵达新(空白)记录的最后一个控件(空白记录的Discount控件)。此时再按[Tab]或[Enter],焦点会转移到那条新记录的第一个控件(OrderID),而不是像某些人以为的那样转移到ShippedDate控件。

A


我为这个子窗体添加了一个事件过程,强迫连续窗体具有和其他子窗体一致的行为。

    • 评论
    • 分享微博
    • 分享邮件
    閭欢璁㈤槄

    濡傛灉鎮ㄩ潪甯歌揩鍒囩殑鎯充簡瑙T棰嗗煙鏈€鏂颁骇鍝佷笌鎶€鏈俊鎭紝閭d箞璁㈤槄鑷抽《缃戞妧鏈偖浠跺皢鏄偍鐨勬渶浣抽€斿緞涔嬩竴銆�

    重磅专题
    往期文章
    最新文章