Edit输入完毕以后,怎样使下一个Edit类型的控件获得焦点?

galaxyseeker 2003-08-20 05:16:28
如题,谢谢!
...全文
76 27 打赏 收藏 转发到动态 举报
写回复
用AI写文章
27 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hedonism 2004-01-02
  • 打赏
  • 举报
回复
tag用起来吧
Hedonism 2003-09-03
  • 打赏
  • 举报
回复
你在设计Tab Order 是就应将顺序调整好。并将Tag属性对应起来,自己再写一个通用的方法(由Tag来查找到相应的Edit并获取焦点)不就OK了吗。然后所有Edit的KEyDown事件均调用 它就可以了。
galaxyseeker 2003-08-26
  • 打赏
  • 举报
回复
我用了Tag属性作为辅助手段,每个Edit控件的tag依次加一。
galaxyseeker 2003-08-26
  • 打赏
  • 举报
回复
mxk19791116(幸运星) ,
如果我的界面上有几十个Edit控件,岂不是要写一大堆OnKeyPress事件处理函数,还有我的目的也不是如何让计算机判断用户已输完,而是 怎样让众多的Edit控件只用一个方法就可以完成切换。
因此我想了一个通用的方法:(C++Builder代码)

TEdit *myedit = dynamic_cast(TEdit *)<sender>;
if (myedit->Text.Length()==myedit.MaxLength)
{
for(;this->Components[myedit->tag+1]->ComponentIndex < this->ComponentCount;)
((TEdit *)this->Components[myedit->tag+1])->SetFocus();//强制类型转换为Edit类型,否则不可使用SetFocus函数。
}
...
这样在所有的Edit类型的控件中引用相同的OnChang事件处理函数就可以了。

mxk19791116 2003-08-25
  • 打赏
  • 举报
回复
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if length(edit1.Text)=6 then
begin
key:=#0;
edit2.setfocus;
end;
end;
rehuo 2003-08-25
  • 打赏
  • 举报
回复
我想应该是在Edit控件输入完毕之后,通过发消息或其他方式来转移焦点,至于怎么判断输入完毕,这需要你自己来判断,否则计算机是不知道的,可以在onkeypress事件中判断
zhp97 2003-08-25
  • 打赏
  • 举报
回复
呵呵,计算机没法子智能判断用户是否已经输完,所以你必须是一个事件来表示结束输入
overtime 2003-08-25
  • 打赏
  • 举报
回复
selectnext(activecontrol,true,true)
bxh2dai 2003-08-23
  • 打赏
  • 举报
回复
up
DouZHlang 2003-08-23
  • 打赏
  • 举报
回复
up
laihua 2003-08-23
  • 打赏
  • 举报
回复
在onkeypress这样写
if key=#13 then
begin
key=#0;
edit2.setfocus;
end;
ZyxIp 2003-08-22
  • 打赏
  • 举报
回复
你在设计Tab Order 是就应将顺序调整好。

然后在综合使用上面的方法。
galaxyseeker 2003-08-22
  • 打赏
  • 举报
回复
我用长度限制作为判断条件,然后再判断 parent中的下一个控件是否是TEdit类型,如果不是就让parent的下一个component获得焦点,再判断到componentsCount为止。但是提示是Component不能获得焦点,我又将其强制转化为Edit*类型,但是方法又不对。这种做法应是通用的,对每个控件不用单独写代码。
kejian 2003-08-22
  • 打赏
  • 举报
回复
edit.text有长度限制吗?
还是有规律性可言?

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if length(edit1.Text)=6 then
begin
key:=#0;
sendmessage(self.handle,WM_NEXTDLGCTL,0,0);
end;
end;

====================================================================

像和尚的唐僧。。。

====================================================================
Hedonism 2003-08-21
  • 打赏
  • 举报
回复
关注。
二手夏利 2003-08-21
  • 打赏
  • 举报
回复
学习
shmilyjiujiu 2003-08-21
  • 打赏
  • 举报
回复
回车 向下键往下走,上箭头往上走
procedure TFrmDevice.EdtDeviceIDKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if (Key=VK_Return) or (Key=VK_Down) then
begin
Perform(WM_NEXTDLGCTL,0,0);
end;
if Key=VK_Up then
begin
Perform(WM_NEXTDLGCTL,1,0);
end;
end;
delphi_xizhousheng 2003-08-20
  • 打赏
  • 举报
回复
self.SelectNext(ActiveControl.handle,true,true);
delphi_xizhousheng 2003-08-20
  • 打赏
  • 举报
回复
sendmessage(self.handle,WM_NEXTDLGCTL,0,0)
OO_is_just_P 2003-08-20
  • 打赏
  • 举报
回复
^_^有个控件根据你的Taborder顺序自动支持回车,上下箭头。你找不到可以给我发短信。
加载更多回复(7)

5,386

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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