如何使按下Enter(回车)键后使焦点自动跳到窗体上的下一个控件上?

dejoy 2006-01-16 02:41:23
如何使按下Enter(回车)键后使焦点自动跳到窗体上的下一个控件上?其实也就是Enter模仿tab键的功能.我在Form的keyXXXX事件中写代码,但是不起作用.
...全文
674 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞哥 2006-05-27
  • 打赏
  • 举报
回复
delphi用sendkeys要加个包好像
chl_seu 2006-05-27
  • 打赏
  • 举报
回复
jt
wudi_1982 2006-05-27
  • 打赏
  • 举报
回复
if key=#13 then
SELECTNEXT(ACTIVECONTROL,TRUE,TRUE)
wangwest 2006-05-26
  • 打赏
  • 举报
回复
gz
net_morning 2006-03-18
  • 打赏
  • 举报
回复
学习!
janezjtjdx 2006-03-04
  • 打赏
  • 举报
回复
响应顺序是Tag的由值决定的,Tag=0且TabStop=true的控件最先响应,依次后传。
janezjtjdx 2006-03-04
  • 打赏
  • 举报
回复
procedure TFORM1.label1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
SelectNext(Sender as TWinControl, True, True);
end;
在每个需要相应enter键的控件的ONKEYPRESS事件中都填写如上代码。
jgn 2006-03-03
  • 打赏
  • 举报
回复
看看
www.eQmis.com
eqmis高手是什么样实现吧!!!!!!
dejoy 2006-03-03
  • 打赏
  • 举报
回复
不能沉,自己顶
才子鸣 2006-01-28
  • 打赏
  • 举报
回复
UP
dejoy 2006-01-27
  • 打赏
  • 举报
回复
不过还有个问题,我的这个Form的Parent是一个panel,即使设了kepreivew也接收不到Key事件,怎么办?
clasj 2006-01-21
  • 打赏
  • 举报
回复
接分:)
newfang 2006-01-21
  • 打赏
  • 举报
回复
偶再添一笔:
SELECTNEXT(ACTIVECONTROL,TRUE,TRUE)
dejoy 2006-01-21
  • 打赏
  • 举报
回复
搞不懂你那一个星是怎么得的。
>>
呵呵,人有时是一时糊涂,问题其实很简单的,发了贴后我就想起来了,要设个kepreivew,所以就自己回了个贴
zhangl_cn 2006-01-17
  • 打赏
  • 举报
回复
呵呵, Perform(WM_NEXTDLGCTL,0,0);
Ciny_Cou 2006-01-17
  • 打赏
  • 举报
回复
up 学习
must0001 2006-01-16
  • 打赏
  • 举报
回复
搞不懂你那一个星是怎么得的。
gw_delphi 2006-01-16
  • 打赏
  • 举报
回复
procedure TfrmBorrow_Edt.edtBalanceKeyPress(Sender: TObject;
var Key: Char);
begin
if (key = #13) then
begin
Perform(WM_NEXTDLGCTL,0,0);
end;
end;
yrb 2006-01-16
  • 打赏
  • 举报
回复
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key = vk_return then
perform(WM_NEXTDLGCTL, 0, 0);
end;
postfxj 2006-01-16
  • 打赏
  • 举报
回复
如果是用enter鍵來代替tab鍵就用下面的這個函數。
procedure SetReturn(Sender: TObject; Key: Word);
begin
case Key of
Vk_Return:
begin
Sendkeys('{TAB}');
end;
Vk_UP:
begin
Sendkeys('~{TAB}');
end;
end;
end;


function SendKeys(S: String): TSendKeyError;
{ This is the one entry point. Based on the string passed in the S }
{ parameter, this function creates a list of keyup/keydown messages, }
{ sets a JournalPlayback hook, and replays the keystroke messages. }
begin
Result := sk_None; // assume success
try

if Playing then raise ESKAlreadyPlaying.Create('');
MessageList := TMessageList.Create; // create list of messages
ProcessKey(S); // create messages from string
StartPlayback; // set hook and play back messages
except
{ if an exception occurs, return an error code, and clean up }
on E:ESendKeyError do begin
MessageList.Free;
if E is ESKSetHookError then
Result := sk_FailSetHook
else if E is ESKInvalidToken then
Result := sk_InvalidToken
else if E is ESKAlreadyPlaying then
Result := sk_AlreadyPlaying;
end
else
{ Catch-all exception handler }
Result := sk_UnknownError;
end;
end;
加载更多回复(1)

5,388

社区成员

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

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