Вниз
Скачать: CL | DM;

Позиция курсора в TEdit   Найти похожие ветки 

← →
Kyau   (2007-02-21 23:40) [0]

Как определить? SelStart не соответствует действительности, если есть выделенный текст.


← →
Efir ©   (2007-02-21 23:41) [1]

А SelStart+SelLength


← →
Kyau   (2007-02-21 23:45) [2]

>Efir ©   (21.02.07 23:41) [1]

Тоже нет. Если выделять справа налево, то врёт.


← →
Германн ©   (2007-02-22 00:28) [3]


> Kyau   (21.02.07 23:40)
>
> Как определить? SelStart не соответствует действительности,
>  если есть выделенный текст.
>

Если под "позицией курсора" понимать место в строке куда будет вставлен следущий набранный на клавиатуре символ или куда будет вставлен текст из клипборда, то SelStart полностью соответствует.


← →
Kyau   (2007-02-22 00:41) [4]

Мне нужна позиция мигающей штуки.


← →
Германн ©   (2007-02-22 00:44) [5]


> Kyau   (22.02.07 00:41) [4]
>
> Мне нужна позиция мигающей штуки.
>

Прости за нескромность, а зачем? Можешь пояснить?


← →
begin...end ©   (2007-02-22 09:31) [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


← →
Kyau   (2007-02-22 12:54) [7]

>Прости за нескромность, а зачем? Можешь пояснить?

Мне нужен TEdit со стандартной рекацией на ввод, который я сам нарисую. Чтобы нарисовать, мне нужно всё знать о нём.

>begin...end ©   (22.02.07 09:31) [6]

То, что надо. А как сделать обратную операцию?


← →
begin...end ©   (2007-02-22 17:47) [8]

> Kyau   (22.02.07 12:54) [7]
> А как сделать обратную операцию?

Поместить курсор в нужную позицию? Присвойте нужное значение свойству SelStart. Или нужно решение для случая, когда в edit"е выделение уже есть, и нужно переместить курсор, сохранив выделение?


← →
Kyau   (2007-02-22 18:02) [9]

>Поместить курсор в нужную позицию? Присвойте нужное значение свойству SelStart. Или нужно решение для случая, когда в edit"е выделение уже есть, и нужно переместить курсор, сохранив выделение?

Когда пользователь мышью будет выделять текст в том месте, где я его нарисую, я должен установить TEdit так, чтобы как будто выделяли на нём. Т.е. если пользователь выделить текст слева направо, то я должен буду установить выделение с такого-то символа и такой-то длины, плюс указать, где должна быть каретка - вначале выделения или после.


← →
begin...end ©   (2007-02-22 18:36) [10]

> 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 19:03) [11]

Отлично работает, спасибо. Потом покажу, что получилось.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.039 c
1-1169148459
VEZ
2007-01-18 22:27
2007.03.18
Action Dropdown ToolButton


15-1172341546
vasIZmax
2007-02-24 21:25
2007.03.18
F.A.Q. от ламера...


2-1171466891
Анатолиус
2007-02-14 18:28
2007.03.18
dxDBGrid


1-1169618297
Wahnsinng
2007-01-24 08:58
2007.03.18
OleObject.Document


2-1172167625
МегаПупс
2007-02-22 21:07
2007.03.18
Разрешение экрана




   Наверх