Может быть довольно опасно делать что-либо, кроме поведения по умолчанию элемента управления TEdit
.Ваши пользователи знают, как ведут себя стандартные элементы управления Windows, и любое отклонение от этого может вызвать путаницу.
По умолчанию свойство AutoSelect
установлено на True
.
Определяет, будет ли автоматически выбираться весь текст в элементе управления для редактирования, когда элемент управления получает фокус.
Установите Автовыбор , чтобы выбрать весь текст, когда элемент управления для редактирования получает фокус. Автовыбор применяется только к однострочным элементам управления.
Используйте Автовыбор , когда пользователь с большей вероятностью заменит текст в элементе редактирования, чем добавит его.
Когда это свойство равно True
, все содержимое элемента редактирования редактируется, когда он получает фокус с помощью действия клавиатуры.Если элемент управления фокусируется щелчком мыши, тогда не все содержимое будет выделено.В этом случае вы просто нажимаете CTRL + A , чтобы выбрать все.Двойной щелчок выберет слово под мышью.Это все стандартное поведение, реализуемое базовым элементом управления Windows.
Если вы измените выбор в ответ на событие OnClick
, согласно выбранному в настоящее время ответу, то вы обнаружите, что это невозможноперемещать каретку с помощью мыши.Это чрезвычайно нелогичное поведение.
Это классический пример того, почему вам нужно быть очень осторожным при изменении поведения элемента управления по умолчанию.Просто очень просто не пропустить конкретный вариант использования при тестировании, но когда ваши пользователи овладеют программой, они обязательно найдут все такие складки.
Что вы можете безопасно сделать, это позвонить по номеру SelectAll
OnDblClick
.Я полагаю, что у этого не будет никаких раздражающих побочных эффектов.
Другой вариант будет вызывать SelectAll
, когда фокус переключается на элемент управления редактированием, но не каждый раз, когда вы нажимаете на элемент управления.Это может показаться немного странным для пользователя, но я лично думаю, что было бы разумно предпринять такой шаг.Если вы хотите сделать это, вам нужно обработать событие OnEnter
вашего элемента управления редактированием:
procedure TForm1.Edit1Enter(Sender: TObject);
begin
PostMessage(Edit1.Handle, EM_SETSEL, 0, -1);
end;