OS X上的Lazarus OnKeyPress

时间:2015-01-21 17:51:43

标签: macos lazarus onkeypress

我在OS X Yosemite上使用Lazarus 1.2.6,我的问题是,当我在每个对象中禁用TabStop时,我自己写了一个很小的代码(因为需要循环选项卡),但使用#9(选项卡)它将无法正常工作。适用于任何其他密钥。

procedure TForm1.ListBox1KeyPress(Sender: TObject; var Key: char);
begin
  if Key = #9 then
  form1.ActiveControl:=button4;
end;  

1 个答案:

答案 0 :(得分:1)

您的问题是由OnKeyPress仅处理可打印的ASCII字符这一事实引起的。为了处理不可打印的符号,例如制表符键,您应该使用OnKeyDown事件。

您的处理程序可能如下所示:

procedure TForm1.ListBox1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
  if Key = VK_TAB then
  form1.ActiveControl := button4;
end;

要访问VK_TAB,您应该在您的uses子句中添加LCLType。当然,此过程应定义为控件或表单的OnKeyDown事件的处理程序。

请参阅http://wiki.lazarus.freepascal.org/LCL_Key_Handlinghttp://lazarus-ccr.sourceforge.net/docs/lcl/lcltype/index-2.html以供参考。