Delphi如何使用UpArrow DownArrow进行导航

时间:2015-12-20 16:57:44

标签: delphi delphi-xe

我有一个包含TDBGrid和TClientDatabase的表单。

我想允许使用UpArrow或DownArrow在数据库中导航,无论哪个控件都有焦点。

我设置了Form.KeyPreview:= true

这是Form.OnKeyPress

procedure TfrmMain.FormKeyPress(Sender: TObject; var Key: Char); 
var Direction : Integer; 
begin    
   Direction := -1;    
   if Key = VK_UP then Direction := 1; {Previous}    
   if Key = VK_DOWN then Direction := 0; {Next}       
   if Direction <> -1 then    
   begin
      if Direction = 0 then cds1.Next else cds1.Prior;
      NextRecord; {Processes AfterScroll event}    
   end; 
end;

这给我一个错误 E2008不兼容的类型

我做错了什么?

1 个答案:

答案 0 :(得分:2)

  1. Key是Char,但VK_UP是整数常量。您必须在具有参数Key:Word

  2. 的KeyDown事件处理程序中使用这些常量
  3. 此外,箭头键不会生成OnKeyPress事件(它用于字母数字键)

  4. 来自帮助:导航键(Tab键,BackTab,箭头键等)不受KeyPreview影响,因为它们不会生成键盘事件