有谁能给个解答啊?Delphi技巧问题!30大赠送!

johnhawke 2001-11-22 10:17:07
我的问题是:
一个Form里面有N个输入框,一个确定按钮,一个取消按钮。现希望打开这个Form时输入焦点自动就在第一个输入框上,而后完成一个输入框的输入后回车能自动将输入焦点转到下一个输入框,当到达最后一个输入框时,回车就能完成按确定按钮的功能,当然用鼠标点确定按钮功能不变,在任何时候按ESC可以等同于按取消按钮。
请各位大虾问如何实现呢?
...全文
111 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiubolecn 2001-11-22
  • 打赏
  • 举报
回复
哪有这么复杂
将form.keypreview设为true
在窗体的
onkeypress里写
if (key =VK_RETURN) then
self. Perform(WM_NEXTDLGCTL, 0, 0);

johnhawke 2001-11-22
  • 打赏
  • 举报
回复
多谢了:)
偶搞懂了
耙子 2001-11-22
  • 打赏
  • 举报
回复
那你就在左后一个Edit的OnKeyPress事件里面写上
ButtonOk.Click(sender);

johnhawke 2001-11-22
  • 打赏
  • 举报
回复
dudo兄,你的办法有用,但是到最后一个Edit框的时候回车只是把输入焦点转到了确定按钮上,而不是像我说的“相当于按下了确定按钮”
耙子 2001-11-22
  • 打赏
  • 举报
回复
OnCreate 不行就在OnShow里面加,或者修改form的activeControl属性,选择第一个Edit
改TAB的顺序就是为了让你能到下一tab stop上去!利用Perform消息就是模拟按了tab键的动作。
self. Perform(WM_NEXTDLGCTL, 0, 0);

抽空看看tab order的说明。
还有setFocus的。

在你的确定按钮里面添加 Edit1.SetFocus;
johnhawke 2001-11-22
  • 打赏
  • 举报
回复
我的这个Form是主窗口,我在它的onCreate事件里面加了Edit1.SetFocus后,运行不能通过,说是Can not focus a disabled or invisible window,而且改TAB的顺序跟我所说的回车进入下一个输入框是两回事!!另外,还有一个问题,需要在确定按钮按了之后,完成了运算,输入焦点自动回到Edit1,还需要怎样做呢?
dudo 2001-11-22
  • 打赏
  • 举报
回复
1、设置form的属性activecontrol为edit1
2、首先在edit1.onkeypress中加入一下代码:
if (key =chr(VK_RETURN)) then
SelectNext(ActiveControl,true,true);
在设置输入框的taborder的值,使每个每个edit 的onkeypress事件指向edit1的onkeypress
明白否?
耙子 2001-11-22
  • 打赏
  • 举报
回复
delphi 里面easy!

1.在form的OnCreate里面
Edit1.SetFocus;
2.调整所有edit的tab order, 变成按tab顺序为 edit1...editn buttonOK buttonCancel
3.各他们一个共同的事件 OnKeyPress
if (key == VK_RETURN)
{
self. Perform(Perform(WM_NEXTDLGCTL, 0, 0);
}
4.把 BtnCancel的cancel属性变为true, 把他的属性ModalResult变成mrCancel
一些ok了
saimaya 2001-11-22
  • 打赏
  • 举报
回复
判断OnKeyPress事件中的Key参数
byrybye 2001-11-22
  • 打赏
  • 举报
回复
你在 ONKEYPRESS里写了,
如果是ESC 那么就给 取消按钮 发送一个 单击的 消息。
如果是 回车, 那么就 给下一个 EDIT SETFOCUS
如果是最后一个, 那么就给 确定 发送一个 单击消息了,

这样比较麻烦,可能用TAG,能方便点,
但是思路就是这样了,

5,388

社区成员

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

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