在delphi中如何实现键盘操作?(20分)

  • 主题发起人 主题发起人 xiegx
  • 开始时间 开始时间
X

xiegx

Unregistered / Unconfirmed
GUEST, unregistred user!
在应用程序窗口中,通过键盘的回车键或方向键来实现光标的控制(用delphi来实现).
 
设置TAB的顺序,多用一些快捷键!<br>在FormKeyPress中写点代码就可以啦!
 
在键盘事件中多多写代码吧,会很方便的。
 
1。先设置好控件的创建持续<br>2。if key=#13 then ???后面我忘了:(要看看以前的程序
 
定义一个结构:<br>&nbsp; &nbsp;TTab=record<br>&nbsp; &nbsp; &nbsp;up_order:byte;//上方控件的TabOrder值 &nbsp;<br>&nbsp; &nbsp; &nbsp;down_order:byte;//...<br>&nbsp; &nbsp; &nbsp;left_order:byte;//...<br>&nbsp; &nbsp; &nbsp;right_order:byte;//...<br>&nbsp; &nbsp; &nbsp;order:byte;//自己的TabOrder值<br>&nbsp; &nbsp; end;<br>其他的就容易了.
 
在 onkeydown 事件中:<br>if key=#13 then postmessage(wm_keydown,vk_tab,0);<br>则 模拟按键Tab
 
if key=#13 then { 判断是按执行键}<br>if &nbsp;(ActiveControl is Tedit) Then<br>Begin { 不是在TDbgrid控件内}<br>key:=#0;<br>perform(WM_NEXTDLGCTL,0,0);{移动到下一个控件}<br>end;<br>//模拟tab<br>
 
onkeypress<br>if key=#13 then 控件名.SetFocus;
 
首先設置Form1的KeyPreview屬性為True.<br>procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);<br>begin<br>&nbsp;if Key=#13 then<br>&nbsp; Begin<br>&nbsp; &nbsp;If &nbsp;Not (ActiveControl is TDbgrid) Then<br>&nbsp; &nbsp; &nbsp; &nbsp;perform(WM_NEXTDLGCTL,0,0);<br>&nbsp; &nbsp;Else<br>&nbsp; &nbsp; &nbsp;SendMessage(TDbgrid(ActiveControl).handle,WM_KEYDOWN,VK_TAB,0);<br>&nbsp; key:=#0;<br><br>&nbsp;End;<br>end;
 
同意 zxb200 的看法!
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=1407832
 
后退
顶部