procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if chr(key)=#13 then begin   
Edit1.text:=Edit1.text+#13#10; //我用这方法可得到回车符
end; 
if chr(key)=#9 then begin   
Edit1.text:=Edit1.text+#9;   //可是却得不到TAB符,一按TAB就跳到别的控件了~
end; end;
谢谢!

解决方案 »

  1.   

    不好办,TEDIT是封装的windows标准控件,恐怕得从拦截消息入手了期待楼下给出更好方案
      

  2.   

    tab键是系统按键,用普通的keydown或keyup事件是捕获不到处理不了的,不过可以借助捕获消息来捕捉这个键。一个比较简单的方法是在窗体放一个ApplicationEvents1控件,在onMessage事件里:procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
      var Handled: Boolean);
    begin
        if (Edit1.Focused) and (msg.wParam=vk_tab) and (msg.message=256) then//只捕获Edit1的tab键
        begin
            Edit1.Text:=Edit1.Text+#9;
            Handled:=true;
        end;
    end;