Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TEdit focus & caret

I got two TEdit controls. When I tab out of edit1, edit2 receives the focus. On my OnExit event of Edit1 I have the following code:

procedure TForm1.Edit1Exit(Sender: TObject);
begin
  edit2.Enabled := false;
  edit2.Enabled := true;
  edit2.setfocus;
end;

Edit2 has the focus. However, there is no caret in it. I can start typing but it's confusing as I do not know which control has the focus.

I'm more interested on what's with the flipping of the Enabled property that's causing some messages to be not firing properly ? For instance edit2's OnEnter event is not being triggered.

This is on D2006 if it matters at all.

Thanks for the reply.

like image 548
Rick Avatar asked Sep 05 '11 07:09

Rick


2 Answers

I don't understand why you disable and enable edit2, but you do this:

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

BTW, I agree with Andreas Rejbrand.

like image 73
Whiler Avatar answered Sep 18 '22 23:09

Whiler


I seriously suspect you are doing something in a bad way, and the best solution is most likely a redesign. You are not supposed to disable and then enable a control while it is receiving focus.

like image 23
Andreas Rejbrand Avatar answered Sep 22 '22 23:09

Andreas Rejbrand