如何在DELPHI中同一个表单中写一次就可控制回车键?

hare 2000-09-09 08:00:00
在同一表单中, 有很多的TEDIT的对象或TDBEDIT对象,按回车键盘光标下个对象, 我不想在每一个的对象中的ONKEYPRESS的EVENT都写IF KEY=#13的代码,有方法只要写一次什么代码就行了吗?

顺便问一下IF KEY=CHR(VK_RETURN) TEHN
POSTMESSAGE(EDIT1。HANDLE,VM_KEYDOWNM,VK_TAB,0)可以实现吗,对这个语句我不太清楚,帮我解释一句?

另有问题就是哪有DELPHI的功能键对照表??

  
...全文
217 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
fjqiwei 2000-09-10
  • 打赏
  • 举报
回复
procedure TForm1.onkeydown(Sender: TObject; var Key: Char);
begin
if key=#13 then
if (ActiveControl is TDBEdit) then
begin
Key := #0;
perform(WM_NEXTDLGCTL,0,0);
end;
if key=#13 then
if (ActiveControl is TEdit) then
begin
Key := #0;
perform(WM_NEXTDLGCTL,0,0);
end;
end;
whitehare 2000-09-10
  • 打赏
  • 举报
回复
看看这吧!

需要用回车键代替TAB键下移一个控件时,把KeyPress设为True,加入下列代码拦截击键:
Procedure TForm1.FormKeyPress(Sender:Tobject;Var Key:Char);
Begin
 if key=#13 then { 判断是按执行键}
 if not (ActiveControl is TDbgrid) Then
 Begin { 不是在TDbgrid控件内}
  key:=#0;
  perform(WM_NEXTDLGCTL,0,0);{移动到下一个控件}
 end else
 if (ActiveControl is TDbgrid) Then{是在 TDbgrid 控件内}
 begin
  With TDbgrid(ActiveControl) Do
  if Selectedindex<(FieldCount-1) then
  Selectedindex:=Selectedindex+1{ 移动到下一字段}
  else Selectedindex:=0;
 end;
End;
meijg 2000-09-09
  • 打赏
  • 举报
回复
在Windows 环 境 下, 要 使 一 个控 件 取 得 焦 点, 可 在 该 控 件 上 用 鼠 标 单 击 一 下, 或 按Tab 键将 焦 点 移 至 该 控 件 上。 这 种 控 制 焦 点 切 换 的 方 法 有 时 不符 合 用 户 的 习 惯。 就 图 一 而 言, 用 户 就 希 望 用Enter 键,控 制 焦 点 由Edit1 切 换 到 Edit2。 要 实 现 这 样 的 功 能 需 借 助WinAPI 函 数SendMessage 来 完 成。 方 法 是: 先 设Form1 的KeyPreview 属 性 为true, 然 后 在Form1 的OnKeyPress 事 件 中 加 入 如 下 的 代 码。 这 样, 用 户就 可 以 通 过 按Enter, 键 控 制 焦 点 按 定 义 好 的Taborder 顺 序 来移 动 了 !
procedure TForm1.FormKeyPress(Sender:TObject;var Key:char) ;
bagin
if (Key=VK_RETURN) then //或者if key=#13 then
begin
SendMessage(Handle,WM_NEXTDLGCTL,0,0);
Key:=#0;
end;
end.
fyje 2000-09-09
  • 打赏
  • 举报
回复
可以设置form.keypreview=true,在onkeydown事件里设置
if key=13 then
begin
selectnext(activecontrol,true,true);
key:=0;
end;
就行了。
zcw 2000-09-09
  • 打赏
  • 举报
回复
IF KEY=CHR(VK_RETURN) TEHN
POSTMESSAGE(EDIT1。HANDLE,VM_KEYDOWNM,VK_TAB,0)
这句话的意思是用回车代替TAB键,如果按下回车键就向edit1传送一个TAB键被按下的消息。
guoyuzhang 2000-09-09
  • 打赏
  • 举报
回复
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if key=#13 then
if (ActiveControl is TDBEdit) then
begin
Key := #0;
perform(WM_NEXTDLGCTL,0,0);
end;
if key=#13 then
if (ActiveControl is TEdit) then
begin
Key := #0;
perform(WM_NEXTDLGCTL,0,0);
end;
end;

5,386

社区成员

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

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