社区
C++ Builder
帖子详情
BCB 怎么利用 TabOrder属性的
koelum
2004-04-05 04:58:04
图形界面,按 TAB键 时,光标会根据框或按钮 属性TabOrder值从小到大循环跳动。
1. 请问BCB(or Windows?)怎么样实现以上功能的,通过哪个函数?
2. 当随意点击某个框或按钮时,请问BCB(or Windows?)怎么样知道目前光标的TabOrder属性的,从而使下次按 TAB键时,光标从目前开始直接往下跳?
...全文
207
18
打赏
收藏
BCB 怎么利用 TabOrder属性的
图形界面,按 TAB键 时,光标会根据框或按钮 属性TabOrder值从小到大循环跳动。 1. 请问BCB(or Windows?)怎么样实现以上功能的,通过哪个函数? 2. 当随意点击某个框或按钮时,请问BCB(or Windows?)怎么样知道目前光标的TabOrder属性的,从而使下次按 TAB键时,光标从目前开始直接往下跳?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jishiping
2004-04-10
打赏
举报
回复
请楼主再好好看看Help,看看我写的文字和代码好不好!!!VCL的属性,只针对VCL控件。
你的IPEdit不是VCL控件(或者由VCL控件派生的),ActiveControl 怎么可能指向它们呢?
看看我上面的代码,是如何处理IPEdit控件的?我上面的只是1个IPEdit,多个IPEdit,你
自己改改吧。别人给你提供思路,你自己要好好看看,看懂这中间的原理,然后达到举一反
三的效果。不能什么都靠别人吧,这是最后一答了。
koelum
2004-04-09
打赏
举报
回复
谢谢季老大底关注。
还是不行哦。
另外,我下载并测试了sncel写的IPedit编辑框,设置其Taborder属性。也有同样情况
即如下问题:
我点击IP编辑框后,光标停留在IP编辑框上,此时再按TAB键,光标此时应该从IP编辑框开始往下走。但是实际上光标却从点击IP编辑框以前的位置往下走。相当于响应TAB键的函数没有侦测到鼠标点击到IP编辑框上。
koelum
2004-04-09
打赏
举报
回复
不会吧?
这样的,我总共创建了4个IP编辑框,比如命名IPEdit1,IPEdit2,IPEdit3,IPEdit4,且已经设定IPEdit1.Taborder=0,IPEdit2.Taborder=1,IPEdit3.Taborder=2,IPEdit4.Taborder=3。
现在我的要求就是:鼠标点击任一IP编辑框后(焦点停在此编辑框上),按TAB键,下次光标停留在下一个Taborder比他大1的编辑框。
似乎是这样的,我点击IP编辑框IPEdit1时,虽然可以输入IP地址,但此时的ActiveControl却不是IPEdit1。
jishiping
2004-04-09
打赏
举报
回复
那就是你的IP编辑框的问题了。说来说去,说了半天,都不知道你究竟想要干什么了!IP
编辑框用鼠标都不能被激活,你干吗要问TAB键、问TabOrder啊?
koelum
2004-04-09
打赏
举报
回复
季老大,其实最主要底问题是当我鼠标点击IP编辑框组件时,IP编辑框并没有被激活。
jishiping
2004-04-09
打赏
举报
回复
因为你的IP编辑框不是VCL控件,所以你自己拦截TAB按键时,要自己设定激活哪个控件啊。
上面已经说了很多,本来就是很简单的,怎么还是搞不定啊?!假设你的IPEdit之前的控件
为Edit4,之后的控件为Edit5,那么你只需要这样写就可以了:
void __fastcall TForm1::FormShortCut(TWMKey &Msg, bool &Handled)
{
if (Msg.Msg==CN_KEYDOWN && Msg.CharCode==VK_TAB) {
bool ShiftDown = GetKeyState(VK_SHIFT)<0;
if (::GetFocus() == IPEditWnd) {
(ShiftDown?Edit4:Edit5)->SetFocus();
Handled = true;
}
else if((ActiveControl==Edit4 && !ShiftDown)
|| (ActiveControl==Edit5 && ShiftDown)) {
::SetFocus(IPEditWnd); Handled = true;
}
}
}
koelum
2004-04-08
打赏
举报
回复
季老大,那有什么办法解决阿,这星期要交货的阿,老大帮人帮到底阿。
jishiping
2004-04-08
打赏
举报
回复
你只是想要用程序激活下一个控件吧,直接用 SelectNext(ActiveControl, true, true);就可以了。
koelum
2004-04-08
打赏
举报
回复
怎么样查找比目前激活的控件的TabOrder大1的那个控件哦?
通过哪个API哦?
jishiping
2004-04-08
打赏
举报
回复
你试试Form的事件OnShortCut,在里面拦截TAB按键。
jishiping
2004-04-07
打赏
举报
回复
1、拦截键盘消息,当按键是TAB时,ActiveControl 就是当前激活的控件,取得它的属性
TabOrder,再查找所有同一层所有控件,找到比目前激活的控件的TabOrder大1的那个控件,
再激活这个控件就可以了。大概的原理就是这样,当然还有一些细节,你自己可以看源程序
啊。
2、上面已经说了,ActiveControl 就是当前激活的控件,API函数就是 GetFocus()
koelum
2004-04-07
打赏
举报
回复
不难吧,我描述得应该够清楚阿
jishiping
2004-04-07
打赏
举报
回复
"自己写的IP编辑框" 不是VCL控件吧。VCL拦截TAB按键,只对VCL控件做处理。
koelum
2004-04-07
打赏
举报
回复
我将Form的KeyPreview设为ture, OnKeyPress捕捉按TAB键时将ShowMessage, 在激活其他edit控件时,按Tab键都能ShowMessage。 但我用鼠标激活自己写的IP编辑框时,按TAB键居然不能秀出ShowMessage, 也就是说此时没有响应OnKeyPress, 是何缘故呢?
koelum
2004-04-06
打赏
举报
回复
怎么没人进来呢, 大家帮帮一下我阿,多谢
koelum
2004-04-05
打赏
举报
回复
谢谢楼上的,这个我都知道。
我写了个类,class TIPAddress : public TWinControl,用来产生IP编辑框。我设置IP编辑框的TabOrder属性后,按TAB键光标循环跳动,功能正常。
但我点击IP编辑框后,光标停留在IP编辑框上,此时再按TAB键,光标此时应该从IP编辑框开始往下走。但是实际上光标却从点击IP编辑框以前的位置往下走。相当于响应TAB键的函数没有侦测到鼠标点击到IP编辑框上。
顽皮小子
2004-04-05
打赏
举报
回复
在组件的父组件上右击鼠标,选中TabOrder命令,将你要排序的组件按顺序排列即可。
hongjq
2004-04-05
打赏
举报
回复
设置一个窗体上的所有可获得焦点的属性的TabOrder值就可以了,从0开始。要么就在要设置这个功能的窗体上右击鼠标,选择TabOrder命令在出来的对话框中调整控件顺序就可以了。
BCB
中的TButton
BCB
拥有强大的组件功能, 在本文中, 我们先来学习看看最简单的按钮: //--------------------------------------------------------------------------- #include #pragma hdrstop #include "Unit1.h" //-------...
BCB
界面布局之控件调整、排列
BCB
界面布局之控件调整、排列 1、在对任何一个控件做进一步的调整操作之前需要将其选中,单击该控件此时控件的四周将出现一个虚拟的边框,边框由上、下、左、右、左上、左下、右上、右下位置上的八个黑色控制点...
BCB
的
属性
编辑器
Delphi Open Tools API 浅探 -
属性
编辑器savetime2k@yahoo.com 2004.1.26http://savetime.delphibbs.com昨天开始学习 Delphi Open Tools API,第一站是 TPropertyEditor。在阅读 VCL 源码时发现了不熟悉的 ...
BCB
用OLE操作Excel(目前最全的资料)
设置对象
属性
:void OlePropertySet(
属性
名,参数……); 获得对象
属性
:Variant OlePropertyGet(
属性
名,参数……); 调用对象方法:1) Variant OleFunction(函数名,参数……); 2) void OleProcedure...
60个
BCB
(C++Build)初学者 应用实例
1.怎样在C++Builder中创建使用DLL 2.用C++Bulider在WIN.INI中保存信息...5.
利用
C++ Builder开发动画DLL 6.用C++ Builder 3制作屏幕保护程序 7.TCP/IP头格式 8.UDP 9.判断windows的Desktop及其它目录 10用C++Builde...
C++ Builder
13,825
社区成员
102,679
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章