3

I want to remove the caret from a TEdit control in Delphi. I have made the component Enabled := False but the caret still appears. My question is how to remove the caret from a disabled TEdit control?

Kromster
  • 6,953
  • 7
  • 59
  • 105
Jordan Borisov
  • 1,523
  • 6
  • 32
  • 67

2 Answers2

8

I assume that you mean TEdit control.

The solution is HideCaret function, the only problem is where to call it. The 2 event handlers below worked fine for me:

procedure TForm18.Edit1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  HideCaret(Edit1.Handle);
end;

procedure TForm18.Edit1MouseEnter(Sender: TObject);
begin
  HideCaret(Edit1.Handle);
end;
kludg
  • 26,909
  • 5
  • 66
  • 117
0

Place a TApplicationEventscontrol on the form and in the OnIdle event, hide the caret, as follows. Set the event to nil so it only fires once.

procedure TFormMain.AppEventsIdle(Sender: TObject; var Done: Boolean);
begin
  AppEvents.OnIdle := nil;
  HideCaret(Memo1.Handle);
end;
Pieter van Wyk
  • 2,286
  • 9
  • 44
  • 64