控件的焦点转移

csdeveloper2010 2010-04-07 04:33:34
假设我现在有一个checkbox,一个button,和一个textbox。如何使用上下键(切记是上下键vbkeyup/vbkeydown)使得焦点在三者键顺序传递。即假设现在焦点在checkbox上,用keyup将焦点转移到textbox,用keydown转移到button,以此类推
...全文
90 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
舉杯邀明月 2010-04-08
  • 打赏
  • 举报
回复
Private Sub Check1_KeyDown(KeyCode As Integer, Shift As Integer)
If (KeyCode = vbKeyUp) Then Text1.SetFocus: Exit Sub
If (KeyCode = vbKeyDown) Then Command1.SetFocus: Exit Sub
End Sub

Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer)
If (KeyCode = vbKeyUp) Then Check1.SetFocus: Exit Sub
If (KeyCode = vbKeyDown) Then Text1.SetFocus: Exit Sub
End Sub

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If (KeyCode = vbKeyUp) Then Command1.SetFocus: Exit Sub
If (KeyCode = vbKeyDown) Then Check1.SetFocus: Exit Sub
End Sub

  • 打赏
  • 举报
回复
把所有的tabstop=false
csdeveloper2010 2010-04-08
  • 打赏
  • 举报
回复
第一,不是tab不好用,而是希望能用上下键操作;所以我的目的是上下键,跟tab键无关。
第二,当焦点已经在button上的时候,按上下键根本不触发keydown事件;反而是焦点从其它控件移到button上的时候触发keydown事件,更奇怪的是还触发了两次,求解???
zst24 2010-04-07
  • 打赏
  • 举报
回复
第一问:楼主,怎样才能不让tab键不好用啊? 求思路!
第二问:焦点要在checkbox,button,textbox间移动,为啥从textbox移到button,又要从button移回textbox?
csdeveloper2010 2010-04-07
  • 打赏
  • 举报
回复
第一,需求不允许用tab键
第二,当焦点从textbox转移到button就触发了button的keydown事件(这不符合要求)。我现在是无法将焦点从button转移到textbox
chuifengde 2010-04-07
  • 打赏
  • 举报
回复
将控件的tabindex设为连续
然后在三者的keydown事件判断keycode为down时sendkeys "{tab}" up时sendkeys "+{tab}"
东方之珠 2010-04-07
  • 打赏
  • 举报
回复
用TAB键,或者上下箭头键是可以的,无须编程。但是,如果光标在文本框内,用箭头键不能转移焦点。
数据库数据关联输入拼音自动过滤件,内含 Caption 属性编辑器。 只在 Delphi7 下测试通过,曾试图移植到 Delphi2009,但是 ChineseSpell.pas 单元出错,哪位高人修改后,请给我传一份,感激不尽。 (抱歉,关键部分没有源代码,但绝没有设置使用期限什么的) 本组件为方便最终用户输入数据而设计。在所有的数据库应用软件中,都必然有输入数据库表中关联字段数据的情况,而且是频繁的出现。比如:在企业ERP系统中,录入入库单时需要选择或输入已录入系统的某种货物,这时就需要解决如何使用户方便的录入这种货物。一般这种情况有两种解决办法,一种是用下拉列表框提供输入的选择,这种方法有很大的缺点:需要用户点击鼠标,弹出下拉框选择输入,比较麻烦;另外如果数据较多,用户选择数据的时间要超过了输入的时间,反而降低了输入速度;用户也不能通过多列数据信息来参照选择。还有一个更大的缺点是程序员编程非常烦琐,需要代码将数据库数据一一列入列表框,并且还需要附加关键字段数据,用代码处理选择的关键字段值。另一种是用一个按钮来调用另一个窗体,用另一个窗体来列出供选择输入的数据,用户选择了数据后返回。这种方法虽然可解决数据显示单一的问题,但是缺点也很明显,即程序员编程烦琐,用户输入也不方便,如果应用软件中多次需要输入关联数据,那么这些显示关联数据的窗体也会很多,大大增加了软件的复杂度,不利于维护和升级。这两种常规的解决办法如果处理不好,还会使用户频繁的在键盘和鼠标之间切换操作,非常麻烦,根本没有人性化可言。 而这个DataHint组件有众多优点: 1)即时显示:在需要时自动显示,在不需要时自动关闭,完全不用人工干预。 2)多列数据显示:支持多列数据显示,程序员甚至可以设置每一列的颜色和字体,以及整个数据显示框的外观,从而美化组件的外观。 3)即时拼音过滤:组件内部可以根据程序员的设置自动生成字段的拼音计算字段。普通用户都熟悉拼音,只要输入数据的汉语简拼或全拼,即时自动过滤出符合的记录,避免了不相干数据的干扰。用户还可以在过滤数据的基础上进一步通过键盘或鼠标选择余下的数据。它还不仅仅支持拼音过滤,程序员可以设置所有的字段都支持过滤,那么如果有序号类的字段,用户只需输入数字序号就可以直接过滤出选择数据,过滤出数据后只要按会车键就可以确认输入,大大简化了用户的操作。 4)统一键盘操作:整个输入过程完全不需要鼠标的辅助,用键盘就可以快速方便的完成操作。焦点进入、离开编辑框组件自动显示和关闭,不需要用户操作,输入关键字符自动过滤数据,敲会车键确认输入,按上下箭头键,进一步选择数据,完全不需要鼠标的参与。如果数据不多,用户也完全可以只用鼠标完成操作。 5)编辑件与本组件分离:编辑件与本组件是合作关系,这种关系的优点是两个对象的生存期互不相干。因此可以使用一个本组件对象,完成多个编辑框的输入。 6)编程方便:本组件设计功能强大,几乎将所有的编写代码的工作都转移到了对象监视器的操作中。程序员只要编辑SQL属性就可以自动将数据库中的数据提取到本组件。组件提供了一个设计字段的组件编辑器,设计列的属性编辑器,这两个编辑器是程序员非常熟悉的字段编辑器和DBGrid列编辑器。其中字段编辑器经过修改和加强,使得程序员可以设置过滤字段和拼音字段。程序员不需要写任何代码。

1,451

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧