键盘和鼠标编程资料.pptVIP

  • 3
  • 0
  • 约4.66千字
  • 约 28页
  • 2017-05-09 发布于湖北
  • 举报
键盘和鼠标编程资料

键盘和鼠标编程 事件可分为用户事件和系统事件两类。用户事件比较好理解,它用于响应应用程序的用户的动作。单击鼠标,就会调用一个OnMouseDown事件。移动鼠标,就会响应一个OnMouseMove事件。敲击键盘,会响应一个OnKeyDown事件。系统事件是由操作系统产生的。典型的系统事件是定时器的OnTimer事件。不管事件以何种方式调用,Delphi总是先看事件处理器是否添加了代码,如果有代码,代码将被执行,否则什么也不发生。 在事件驱动编程中,Delphi处理事件的顺序非常重要。用户仅仅只发出一个请求就可能触发许多事件,因此弄清楚事件发生的顺序非常重要。清楚了事件发生的顺序后可以避免出现一些竟想不到的结果。例如,单击按钮,首先响应的是OnEnter事件,然后响应OnMouseDown事件,最后触发的是Onclick事件。 键盘事件处理 键盘事件 1.OnKeyDown 当按下键盘上的任一个键,如字母键、数字键、功能键(F1~F12)、Ctrl键、Shift键或Alt键等,都将产生一个OnKeyDown事件。 下面的一段代码说明了OnKeyDown事件的用法:当打印的时候在窗体中按下Esc键后,取消打印作业。 procedureTForm1.FormKeyDown(Sender:TObject;varKey:Word;Shift:TShiftState); begin if(Key=VK_ESCAPE)andPrinter.Printingthen begin Printer.Abort;//中止打印 MessageDlg(打印中止。,mtInformation,[mbOK],0); End; End; 2.OnKeyPress 当按下键盘上的一个字符键,如字母键、数字键等会产生一个OnKeyPress事件,但是单独按下功能键(F1~F12)、Ctrl键、Shift键或Alt键等,不会产生OnKeyPress事件。 下面的一段代码说明了OnKeyPress事件的用法: procedureTForm1.FormKeyPress(Sender:TObject;varKey:Char); begin //显示按下的键 MessageDlg(你按下了+Key+键。,mtInformation,[mbOK],0); End; 3.OnKeyUp 当按下键盘上的任一个键后松开时,都会产生一个OnKeyUp事件。对于功能键(F1~F12)、Ctrl键、Shift键或Alt键等,也会产生一个OnKeyUp事件。 下面的一段代码说明了OnKeyDown事件和OnKeyUp事件的用法: var FormColor:TColor;//用来保存窗体原来的颜色 procedureTForm1.FormKeyDown(Sender:TObject;varKey:Word;Shift:TShiftState); begin //当键按下时先保存窗体的颜色然后再改变窗体的颜色 FormColor:=Form1.Color; Form1.Color:=clAqua; end; procedureTForm1.FormKeyUp(Sender:TObject;varKey:Word;Shift:TShiftState); begin //当键弹起时恢复窗体的颜色 Form1.Color:=FormColor; end; 程序运行后,在窗体中按下某个键然后松开,窗体的颜色会随之改变。 ? 模拟按下键盘上的某个键 有时在一些应用程序中,也需要模拟在键盘上按下某个键的过程,这可以通过向特定对象发送按键事件来实现。 例4-1 模拟按下键盘上的某个键 (1)创建一个新的工程,在窗体中添加一个Edit组件、一个Button组件和一个定时器组件(位于System标签页)。 (2)并添加Button组件的OnClick事件、Timer组件的OnTimer事件的处理过程如下: procedureTForm1.Button1Click(Sender:TObject); //模拟在Edit1组件中按下了字母a键 begin PostMessage(Edit1.Handle,WM_KEYDOWN,65,0); end; procedureTForm1.Timer1Timer(Sender:TObject); //模拟在窗体Form1中按下了Tab键 begin PostMessage(Form1.Handle,WM_KEYDOWN,VK_TAB,0); end; (3)运行程序,可以看到窗体的输入焦点在不断地变化,尽管并没有在键盘上按下Tab键。如果按下Button1按钮,则Edit1组件中的字符串会自动增加一个字母a。 检测功能键 在组件的O

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档