当按下回车后选中下一个,功能和TAB键类似,但确定时(如提交)还是要他本来的功能
解决方案 »
- 请教webbrowser问题1
- 动态数组指向的问题
- 跪求!制造业ERP的需求说明书或流程说明,百分相送,谢谢
- 好消息!Delphi 要出中文版了!也会支持Unicode了!
- 关于设置控件的顺序
- delphi6的子窗口能否再有自己的子窗口?
- 怎样集成excel到窗体的panel中? 100分!!
- 我怎么对DB_GRID的某字段加一个汇总?
- 我用WM_LBUTTONDBLCLK消息怎么对不上窗口还原呀,那到底是哪个?
- 高手请进,报表问题,100分相送,在线等待,在线加分,分多的是,还可在加
- 请问能不能在DBGrid里放入两个Lookup字段?
- 哪儿可 DownLoad 《Delphi COM深入编程》 机械工业出版社(2000年的)?
if (Key = #13)and not (ActiveControl is TBitBtn) then
begin
try
Key := #0; { clear enter key }
Perform(WM_NEXTDLGCTL, 0, 0); { move to next control }
except
end;
end;
perform(WM_NEXTDLGCTL,1,0);即可向上移动
为什么不看MSDN,不看HELP你当然不知道了。
perform(WM_NEXTDLGCTL,0,1)
控制焦点移动,还可以利用TWinControl.SelectNext()方法来做!
*********************
Form.KeyPreview := true; 在Form的KeyDown中
if Key = VK_RETURN then
begin
if ActiveControl is TDBGrid or ... then
PostMessage(ActiveControl.Handle, WM_KEYDOWN, VK_TAB, 0);
else
PostMessage(Handle, WM_KEYDOWN, VK_TAB, 0);
Key := 0;
end
---------------
procedure EnterToTab(aForm: TForm; var Key: Char);
begin
if Key = #13 then
begin
key := #0;
aForm.Perform(CM_DialogKey, VK_TAB, 0);
end;
end;
***************
或者拦截Application.OnMessage即可,添加代码:
if Msg.Message = WM_KEYDOWN then
begin
if Msg.wParam = VK_RETURN then
Keybd_event(VK_TAB, 0, 0, 0);
end; //if
或看看dosmove的源码
if key = #13 then perform(wm_nextdlgctl,0,0)
if key = #13 then perform(wm_nextdlgctl,0,0)
正确