#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;