![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Позиция курсора в TEdit
Kyau © (2007-02-21 23:40:00)Как определить? SelStart не соответствует действительности, если есть выделенный текст.
Kyau (2007-02-22 19:03:00) [1]Отлично работает, спасибо. Потом покажу, что получилось.
begin...end (2007-02-22 18:36:00) [2]> Kyau (22.02.07 18:02) [9]
Всё же я не совсем понял, о чём идёт речь. Возможно, подойдёт это:
var
I: Integer;
P: TSmallPoint;
begin
I := ...; // Нужная позиция курсора
P := TSmallPoint(SendMessage(Edit.Handle, EM_POSFROMCHAR, I, 0));
Edit.SetFocus;
SetCaretPos(P.X, P.Y)
end
Kyau (2007-02-22 18:02:00) [3]> Поместить курсор в нужную позицию? Присвойте нужное значение свойству SelStart. Или нужно решение для случая, когда в edit'е выделение уже есть, и нужно переместить курсор, сохранив выделение?
Когда пользователь мышью будет выделять текст в том месте, где я его нарисую, я должен установить TEdit так, чтобы как будто выделяли на нём. Т.е. если пользователь выделить текст слева направо, то я должен буду установить выделение с такого-то символа и такой-то длины, плюс указать, где должна быть каретка - вначале выделения или после.
begin...end (2007-02-22 17:47:00) [4]> Kyau (22.02.07 12:54) [7]
> А как сделать обратную операцию?
Поместить курсор в нужную позицию? Присвойте нужное значение свойству SelStart. Или нужно решение для случая, когда в edit'е выделение уже есть, и нужно переместить курсор, сохранив выделение?
Kyau (2007-02-22 12:54:00) [5]> Прости за нескромность, а зачем? Можешь пояснить?
Мне нужен TEdit со стандартной рекацией на ввод, который я сам нарисую. Чтобы нарисовать, мне нужно всё знать о нём.
>begin...end © (22.02.07 09:31) [6]
То, что надо. А как сделать обратную операцию?
begin...end (2007-02-22 09:31:00) [6]var
P: TPoint;
I: Integer;
begin
if Edit.Focused then
begin
GetCaretPos(P);
I := SendMessage(Edit.Handle, EM_CHARFROMPOS, 0, Integer(PointToSmallPoint(P)));
ShowMessageFmt('Позиция мигающей штучки: %d', [I])
end
end
Германн (2007-02-22 00:44:00) [7]
> Kyau (22.02.07 00:41) [4]
>
> Мне нужна позиция мигающей штуки.
>
Прости за нескромность, а зачем? Можешь пояснить?
Kyau (2007-02-22 00:41:00) [8]Мне нужна позиция мигающей штуки.
Германн (2007-02-22 00:28:00) [9]
> Kyau (21.02.07 23:40)
>
> Как определить? SelStart не соответствует действительности,
> если есть выделенный текст.
>
Если под "позицией курсора" понимать место в строке куда будет вставлен следущий набранный на клавиатуре символ или куда будет вставлен текст из клипборда, то SelStart полностью соответствует.
Kyau (2007-02-21 23:45:00) [10]> Efir © (21.02.07 23:41) [1]
Тоже нет. Если выделять справа налево, то врёт.
Efir (2007-02-21 23:41:00) [11]А SelStart+SelLength