2013-09-10 2 views
1

Я пытаюсь сделать новый проект, добавить TEdit и TButton. Установите Edit1.Text на «Это тестовое сообщение». И добавить событие к кнопке:Как использовать TEdits selStart и SelLength для выбора текста?

procedure TForm7.Button1Click(Sender: TObject); 
begin 
    Edit1.SelStart := 5; 
    Edit1.SelLength := 5; 
end; 

Ничего не выбрано при нажатии на кнопку. Может кто-нибудь объяснить, почему и как это сделать, чтобы выбрать часть текста?

С уважением Roland

ответ

9

Он работает, как ожидалось, но так как ваша кнопка stealed фокус, нажав на него, вы затем пытаетесь сосредоточиться, что окно редактирования снова. И, сконцентрировав поле редактирования, весь его текст будет выбран по умолчанию. Вот простое доказательство, что текст выбран, если окно редактирования имеет фокус при выборе:

procedure TForm1.Button1Click(Sender: TObject); 
begin 
    Edit1.SetFocus; 
    Edit1.SelStart := 5; 
    Edit1.SelLength := 5; 
end; 
+1

Смотрите также свойство HideSelection, поэтому вы не видите, что выбран, если он не имеет фокус. – MikeD

+0

@MikeD, ваш вопрос объясняет, почему выбор не отображается. Мой пост больше о том, что я думал о том, что сделал OP (но из его примечания * ничего не выбрано * кажется, что я ошибаюсь, потому что будет * все выбрано *). Пожалуйста, опубликуйте это как ответ. Я удалю это. – TLama

+3

Я лично рекомендовал бы использовать кнопку, которая не может принять фокус для такого рода вещей, то есть скоростной или аналогичной. –

Смежные вопросы