小弟刚接触delphi,在登陆窗口上放了一个combox控件,一个Edit控件,还有两个button,其tab值依次为0,1.2,3.
我使用如下代码来实现回车键代替tab键:
//
if Key = #13 then { 如果按下了回车键 }
begin
Key := #0; { 吃掉回车键 }
frm.Perform(WM_NEXTDLGCTL, 0, 0); { 移动到下一个控制 }
end;
//
但是在执行过程中,焦点不从combox控件转移到Edit控件,而直接执行确定按钮。用tab键确是正常的。
上述原因不知何故,望多多指教和明示。谢谢!
我使用如下代码来实现回车键代替tab键:
//
if Key = #13 then { 如果按下了回车键 }
begin
Key := #0; { 吃掉回车键 }
frm.Perform(WM_NEXTDLGCTL, 0, 0); { 移动到下一个控制 }
end;
//
但是在执行过程中,焦点不从combox控件转移到Edit控件,而直接执行确定按钮。用tab键确是正常的。
上述原因不知何故,望多多指教和明示。谢谢!
解决方案 »
- 高手请进,小弟跪求aod和触发器问题。。请高手帮忙!!!!!!!!!
- ■■■ 请问CreateProcess的头两个参数到底该怎么写???????? ■■■
- 请各位帮帮我啊 delphi 中如何设置EXCEL单元格的属性阿?比如改为数值型!
- 用listview将远程文件列出来,知道这个文件名排在第二个位置,怎样将这个文件的文件名取出来?
- 不同情况下运行的结果不一样,郁闷中~~~~~~~~
- delphi5中QReport中的几乎所有控件突然消失,而且无法重新安装这些控件,怎办?
- 关于数据库刷新的问题,,,急,,,
- delphi编写的com组件问题,请高手帮忙
- query将cacheupdates打开后,用append田家新纪录,用applyupdates保存,然后修改刚刚添加的记录再保存,出错
- 有没有兴趣讨论如何用DELPPHI开发三层结构的MIS系统
- 在xp/win2000 上 发布了的access97 + delphi 应用 运行时总出错?
- 非常简单,过来看一下?
switch(wParam)
{
case VK_RETURN:
SendMessage( hwnd, WM_KEYDOWN, VK_TAB, 0 );
return 0;
}
试试。
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;
用tab order 设置次序,不必设置tab 值
自己处理CM_DIALOGKEY事件。
如下面的代码:
unit MyButton;interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TMyButton = class(TButton)
private
{ Private declarations }
protected
{ Protected declarations }
procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY;
public
{ Public declarations }
published
{ Published declarations }
end;procedure Register;implementationprocedure Register;
begin
RegisterComponents('EShell', [TMyButton]);
end;{ TMyButton }procedure TMyButton.CMDialogKey(var Message: TCMDialogKey);
begin
if message.CharCode = vk_return then
message.CharCode := vk_return;
end;end.
begin
//可以适当写代码。也可以不写。
end;