How to hide caret in Delphi TEdit?

2019-07-07 02:58发布

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?

2条回答
贼婆χ
2楼-- · 2019-07-07 03:09

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;
查看更多
小情绪 Triste *
3楼-- · 2019-07-07 03:09

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;
查看更多
登录 后发表回答