TEdit焦点和插入符号

Ric*_*ick 6 delphi caret setfocus

我有两个TEdit控件.当我退出edit1时,edit2会收到焦点.在Edit1的OnExit事件中,我有以下代码:

procedure TForm1.Edit1Exit(Sender: TObject);
begin
  edit2.Enabled := false;
  edit2.Enabled := true;
  edit2.setfocus;
end;
Run Code Online (Sandbox Code Playgroud)

Edit2有焦点.但是,它没有任何关注.我可以开始输入,但它很混乱,因为我不知道哪个控件有焦点.

我更感兴趣的是Enabled属性的翻转会导致某些消息无法正常触发?例如,edit2的OnEnter事件未被触发.

如果重要的话,这是在D2006.

谢谢回复.

Whi*_*ler 9

我不明白为什么你禁用和启用edit2,但你这样做:

procedure TForm1.Edit1Exit(Sender: TObject);
begin
  edit2.Enabled := false;
  edit2.Enabled := true;
  edit2.setfocus;
  PostMessage(edit2.Handle, WM_SETFOCUS, 0, 0);
end;
Run Code Online (Sandbox Code Playgroud)

顺便说一下,我同意Andreas Rejbrand的观点.


And*_*and 8

我非常怀疑你是在做一些糟糕的事情,最好的解决方案很可能是重新设计.您不应该在接收焦点时禁用然后启用控件.