如何用回车键实现FORM中所有组件的焦点切换(15分)

  • 主题发起人 主题发起人 zyb
  • 开始时间 开始时间
Form1.KeyPreview:=True;
procedure TForm1.FormKeyPress(Sender: TObject;
var Key: Char);
begin
if Key=VK_RETURN then
Key=VK_TAB
end;
 
对DBGrid呢?
 
if key=VK_RETURN then
begin
findnextcontrol(sender as twincontrol,true,true,true).SETFOCUS;
 
>delphi5>
procedure TForm1.FormShortCut(var Msg: TWMKey;
var Handled: Boolean);
begin
if Msg.CharCode=13 then
begin
Msg.CharCode:=9;
Handled:=False;
end;
end;
delphi4:overload WMkeyDown:message;
give me $
 
onkeypress
VK_Tab
 
在每一个控件的keypress事件里编写代码
当key=#13时要转向的控件SetFocus
 
同意:worldCreater
 
需要用回车键代替TAB键下移一个控件时,把KeyPreview设为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;

 
把KeyPreview设为True
follow is c++ builder code
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &amp;Key)
{
if( (Key == VK_RETURN) &amp;&amp;
(CheckBox1->Checked == true))
{
Key=0;
// swallow the key here
Perform(WM_NEXTDLGCTL,0,0);
// focus next control
}
}
 
接受答案了.
 
如何用向上键接收Shift+Tab键
 
如何用的是第三方控件呢?我比较赞成用Tag来判断的方法!
 
[:(]紧急求救!!!
各位大侠:快来帮帮我,以上所有回车键的方法我都试过了,回车键根本不响应,TAB键已不起作用了,就是回车键光标不动,为什么??
 
Procedure EnterToTab(FM:TForm;Var key:char);
begin
if Key=#13 then
begin
if not (FM.ActiveControl is TDBGridEh) then
begin
Key:=#0;
FM.Perform(WM_NEXTDLGCTL,0,0);
end
else
if(FM.ActiveControl Is TDBGridEh) then
begin
With TDBGridEh(FM.ActiveControl)do
begin
if SelectedIndex<(fieldCount-1) then
SelectedIndex:=SelectedIndex+1
else
keybd_event( VK_TAB, MapVirtualKey( VK_TAB, 0 ), 0 , 0 );
end;
end;
end;
end;
自定义一个enter转Tab函数对所有都适用
 
后退
顶部