procedure Tcom_form.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if key=vk_return then
begin
  Keybd_event(VK_TAB, 0, 0, 0);
end;当我在edit1中编辑完后按ENTER后以上代码会将光标跳到EDIT2上,但是当EDIT1中的值不符合规则时我
showmessage提示,回车后应该重新定位光标到EDIT1上,但由于以上代码的关系此时光标已经定位到EDIT2了。有什么办法解决?

解决方案 »

  1.   

    你应该在OnExit事件里面判断是否合法输入,procedure TForm1.Edit1Exit(Sender: TObject);
    begin
      if 数据不对 then begin
        ShowMessage(xxxx);
        (Sender as TEdit).SetFocus;
      end;
    end;
      

  2.   

    procedure Tcom_form.FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    begin
    if key=vk_return then
    begin
      if if 数据不对 then begin
        ShowMessage(xxxx);
      else
        Keybd_event(VK_TAB, 0, 0, 0);
    end;