我在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;
答案 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_Handling和http://lazarus-ccr.sourceforge.net/docs/lcl/lcltype/index-2.html以供参考。