怎样解决回车、Tab键在DBGrid表单元格的移动问题? ( 积分: 50 )

  • 主题发起人 主题发起人 mycolour
  • 开始时间 开始时间
M

mycolour

Unregistered / Unconfirmed
GUEST, unregistred user!
怎样解决回车、Tab键在DBGrid表单元格的移动问题?<br><br>按通常的编辑习惯,在电子表中键入回车,光标会向右移动一格,,但delphi的DBGrid表键入回车及TAB键都原地不动,怎样解决?<br><br>还有指针直接移至某一记录号怎样写?例如要直接将指针移到第10条记录,语句怎样写?<br>应该不需要应10个&nbsp;.next吧?<br>谢谢!!!
 
要用回车键代替TAB键下移一个控件时,把KeyPress设为True,加入下列代码拦&nbsp;<br>截击键:&nbsp;<br>Procedure&nbsp;TForm1.FormKeyPress(Sender:Tobject;Var&nbsp;Key:Char);&nbsp;<br>Begin&nbsp;<br>&nbsp;&nbsp;if&nbsp;key=#13&nbsp;then&nbsp;{&nbsp;判断是按执行键}&nbsp;<br>&nbsp;&nbsp;if&nbsp;not&nbsp;(ActiveControl&nbsp;is&nbsp;TDbgrid)&nbsp;Then&nbsp;<br>&nbsp;&nbsp;Begin&nbsp;{&nbsp;不是在TDbgrid控件内}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;key:=#0;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;perform(WM_NEXTDLGCTL,0,0);{移动到下一个控件}&nbsp;<br>&nbsp;&nbsp;end&nbsp;else&nbsp;<br>&nbsp;&nbsp;if&nbsp;(ActiveControl&nbsp;is&nbsp;TDbgrid)&nbsp;Then{是在&nbsp;TDbgrid&nbsp;控件内}&nbsp;<br>&nbsp;&nbsp;begin&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;With&nbsp;TDbgrid(ActiveControl)&nbsp;Do&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;Selectedindex&lt;(FieldCount-1)&nbsp;then&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;Selectedindex:=Selectedindex+1{&nbsp;移动到下一字段}&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;Selectedindex:=0;&nbsp;<br>&nbsp;&nbsp;end;&nbsp;<br>End;&nbsp;<br><br><br><br>adoquery&nbsp;.MoveBy(10);//当前记录向下(前)移10条。MoveBy(&nbsp;);(&nbsp;)接收一个整数integer;&nbsp;<br>adoquery&nbsp;.MoveBy(-10);//当前记录向上(后)移10条
 
if&nbsp;key=#13&nbsp;then&nbsp;<br>&nbsp;&nbsp;&nbsp;begin&nbsp;&nbsp;&nbsp;&nbsp;//按下回车键<br>&nbsp;&nbsp;&nbsp;&nbsp;if&nbsp;DBGrid1.SelectedIndex&nbsp;&lt;&gt;&nbsp;DBGrid1.Columns.Count&nbsp;-&nbsp;1&nbsp;then&nbsp;&nbsp;&nbsp;&nbsp;//如果不在最后一列则移到下一列<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBGrid1.SelectedIndex&nbsp;:=&nbsp;DBGrid1.SelectedIndex&nbsp;+&nbsp;1<br>&nbsp;&nbsp;&nbsp;&nbsp;else<br>&nbsp;&nbsp;&nbsp;&nbsp;begin&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//在最后一列,则移到下一条记录<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBGrid1.DataSource.DataSet.Next;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;DBGrid1.SelectedIndex&nbsp;:=&nbsp;0;<br>&nbsp;&nbsp;&nbsp;&nbsp;end;<br>&nbsp;&nbsp;&nbsp;&nbsp;Key&nbsp;:=&nbsp;#0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//屏蔽所输入的回车键,使DBGrid处于浏览状态;如无此行代码,则DBGrid将处于编辑状态<br>&nbsp;&nbsp;end;<br>end;
 
学到了~~~
 
谢谢了。
 

Similar threads

S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
S
回复
0
查看
916
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部