wwwhbg888 发表于 2012-4-27 11:01:10

为什么没反映 这写错啦? 高手看看~~

本帖最后由 wwwhbg888 于 2012-4-27 11:21 编辑

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = 48 then
ShowMessage('ksjdkfsjk');
end;

按下键盘没反映砸回事

Biner 发表于 2012-4-29 01:43:24

原因是这样的: 数据类型不一致,因为KRY得数据类型是Word,而0的ASCII码是integer类型。

Biner 发表于 2012-4-29 01:45:37

原因是这样的: 数据类型不一致,因为KRY得数据类型是Word,而0的ASCII码是integer类型。
DELPHI在逻辑运算时有些可以自动数据类型转换 Word转integer 所以程式才能运行。。。。 其实你这个程式是正确的你按下上面那个0就会有提示了 。。。

Biner 发表于 2012-4-29 01:52:27

为什么按上面的程式就可以运行了,而按下面的那个0就不可以运行。。这个我就不知道了    如果你想要在用户按下0后有提示 你可以在KEYPRESS事件中 判断用户按下键的ASCII码 就可以了。。。。。。下面是具体代码:   
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
       if ord(Key) = 48 then
      ShowMessage('你按下0');
end;:D

aminghanhua 发表于 2012-5-15 14:16:55

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
       if Key= #48 then
      ShowMessage(''ksjdkfsjk');
end;
页: [1]
查看完整版本: 为什么没反映 这写错啦? 高手看看~~