Как скрыть курсор в Delphi TEdit?

#delphi #textbox #caret

#delphi #текстовое поле #курсор

Вопрос:

Я хочу удалить курсор из элемента управления TEdit в Delphi. Я создал компонент Enabled := False , но курсор все еще появляется. Мой вопрос в том, как удалить курсор из отключенного элемента управления TEdit?

Ответ №1:

Я предполагаю, что вы имеете в виду TEdit контроль.

Решение — HideCaret функция, единственная проблема — где ее вызвать. 2 обработчика событий, приведенные ниже, отлично работали для меня:

 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;
  

Комментарии:

1. Спасибо. Я нашел другое решение этой проблемы. Я просто установил значение True только для чтения.

2. @Jordan Это делает что-то еще, не так ли.

3. @DavidHeffernan Да, но я хочу удалить курсор только для того, чтобы текстовое поле было доступно только для чтения без курсора при нажатии на него.

4. @user246408 спасибо, это работает и в D7. Но в TEdit нет «MouseEnter», только «MouseDown». Что-то изменилось в более новых версиях Delphi?

Ответ №2:

Поместите TApplicationEvents элемент управления в форму и, в OnIdle случае, скройте курсор следующим образом. Установите для события значение nil, чтобы оно срабатывало только один раз.

 procedure TFormMain.AppEventsIdle(Sender: TObject; var Done: Boolean);
begin
  AppEvents.OnIdle := nil;
  HideCaret(Memo1.Handle);
end;