ouyida3

要编出最人性化的程序
posts - 12, comments - 5, trackbacks - 0, articles - 0

KEYPRESS,KEYDOWN,KEYUP之区别

Posted on 2007-03-10 23:45 ouyida3 阅读(1164) 评论(0)  编辑  收藏 所属分类: Delphi
今天想在strg的3、4行都输入了以后自动算出第5行的值,于是在keypress事件这么写:
//计算实洋
  if (strg1.Cells[3,strg1.Row]<>'') and (strg1.Cells[4,strg1.Row]<>'') then
  strg1.Cells[5,strg1.Row]:=floattostr(strtofloat(strg1.Cells[3,strg1.Row])
      * strtofloat(strg1.Cells[4,strg1.Row]));
谁知道运行时我输入了第3行和第4行后报第4行的值为空,换成keyup竟然行了,于是上网查了一下三者的区别,xiaobian的blog里这么说:
{KeyPress主要用来接收字母、数字等ANSI字符,而 KeyDown 和 KeyUP 事件过程可以处理任何不被 KeyPress 识别的击键,诸如:功能键(F1-F12)、编辑键、定位键以及任何这些键和键盘换档键的组合等。与 KeyDown 和 KeyUp 事件不同的是,KeyPress 不显示键盘的物理状态(SHIFT键),而只是传递一个字符。KeyPress 将每个字符的大、小写形式作为不同的键代码解释,即作为两种不同的字符。而 KeyDown 和 KeyUp 用两种参数解释每个字符的大写形式和小写形式:keycode — 显示物理的键(将 A 和 a 作为同一个键返回)和 shift —指示 shift + key 键的状态而且返回 A 或 a 其中之一。
    KeyDown、KeyUp事件是当按下 ( KeyDown ) 或松开 ( KeyUp ) 一个键时发生的。由于一般按下键盘的键往往会立即放开(这和鼠标不同),所以这两个事件使用哪个差别不大。}

而且,up和其他两者还有一个区别:要判断key修改后的状态必须用up。

只有注册用户登录后才能发表评论。


网站导航: