在StringGrid的一个Cell中输入数据后,回车后,焦点自动跳到下一个Cell。(50分)

  • 主题发起人 主题发起人 cygnet_ljt
  • 开始时间 开始时间
C

cygnet_ljt

Unregistered / Unconfirmed
GUEST, unregistred user!
在StringGrid的一个Cell中输入数据后,回车后,焦点自动跳到下一个Cell。
 
在Keydown中如果接收到回车后,返回的键值是个Tab就行了
 
可以获取焦点所在的cell的fieldindex和recordindex属性,然后,就好办了。。。。
 
lentitz的方法很好
 
在Keydown中如果接收到回车后,把焦点设为下一个cell,好像是setf* 函数
 
谢谢上面的各位热心朋友,不知能否用具体程序相告,在此万分感谢。
我找到了下面的两种方法,都试了一下,但是都没成功,请各位朋友指点:

如何在StringGrid控件中让Enter键作用象Tab键
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
{ 在FORM的OnKeyPress事件中插入,注意将Form的KeyPreview属性设为True }
begin
if Key = #13 then
if not (ActiveControl is TStringGrid) then begin { 如果不是TStringGrid }
Key := #0; { 清除按键 }
Perform(WM_NEXTDLGCTL, 0, 0); { 否则移到下一Control上 }
end
else if (ActiveControl is TStringGrid) then
with TStringGrid(ActiveControl) do
if selectedindex < (fieldcount -1) then
selectedindex := selectedindex +1
else
selectedindex := 0;
end;
另一种更简便的方法:
在StringGrid的KeyPress事件中写入
if Key=Chr(VK_RETURN) then
SendMessage(StringGrid.Handle,WM_CHAR,VK_TAB,0);
*在D2,D3中用时去掉Chr()函数。
 
keydown里加上下面的语句试试。

if key = VK_Return then
keybd_event(VK_TAB, MapVirtualKey(VK_TAB, 0), 0, 0);
 
duckstar的方法最好。
 
在ONKEYDOWN事件中,加入以下代码:
if key=13 then key:=9
我这可是最简单的哦,快给我分!
 
多人接受答案了。
 
后退
顶部