dbgrid控件如何响应键盘事件(50分)

  • 主题发起人 主题发起人 ynwxh111
  • 开始时间 开始时间
Y

ynwxh111

Unregistered / Unconfirmed
GUEST, unregistred user!

各位大虾,小弟初用dephi。有如下问题
在使用dbgrid时,我使用回车键在各个单元格之间切换,我想在当前输入焦点离开某一
单元格后加入事件控制,不知有何高招。
 
此问题已讨论多次,可以检索旧帖子。
 
OnKeypress

OnColExit
 
我来解决估计没什么问题,在DBGrid的KeyPress事件下写入如下代码:
if key=#13 then
begin
sendmessage(dbgrid1.handle,wm_keydown,vk_tab,0);
end;
另外,设置窗体的KeyPreview属性为false即可实现你的功能!!![:)]
 
用他 procedure TForm2.DBGrid1ColExit(Sender: TObject);
 
sendmessage(dbgrid1.handle,wm_keydown,vk_tab,0);
里面的四个参数分别是什么意思啊?
 
我也想知道!
 
光标指向sengmessage按F1察看帮助或者单击右键——单击Find Declaration 查找帮助,
我也理解的不是很彻底,但是这段代码却肯定没问题,我一直用的很好,多查查帮助吧![:)]
 
dbgrid1.handle表示当前的消息是发给dbgrid1的
wm_keydown表示消息的类型是键盘消息
vk_tab表示发个Tab键
 
多谢!!qianwt[:)]
 
sendmessage(dbgrid1.handle,wm_keydown,vk_tab,0);
首先,这个函数的功能是发送一个消息到指定Object.

第一个参数dbgrid1.handle,就是要接收消息的Object.
第二个参数wm_keydown,意思是这个消息是一个键盘按下的消息(消息类型)

后面的两个参数的功能是为第二个参数的辅助(之所以有两个,是因为有些消息
可能会用到两个辅助参数)。

VK_TAB是说这个按下的键是TAB键。
至于说后面的那个0,是因为wm_keydown消息只用一个参数VK_TAB就能说明问题了
不用第二个参数了。
 

Similar threads

D
回复
0
查看
767
DelphiTeacher的专栏
D
D
回复
0
查看
809
DelphiTeacher的专栏
D
后退
顶部