Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.03.18;
Скачать: 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 вся ветка

Текущий архив: 2007.03.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.063 c
5-1149705996
Adil
2006-06-07 22:46
2007.03.18
problema s pointerom


2-1171876396
Прохожев Максим
2007-02-19 12:13
2007.03.18
Количество строк в проекте


2-1172051286
Дмитрий Белькевич
2007-02-21 12:48
2007.03.18
Как вставить html в буфер вместе с картинками?


15-1172072839
ProgRAMmer Dimonych
2007-02-21 18:47
2007.03.18
Помогите, пожалуйста, с задачкой


15-1171978977
Ega23
2007-02-20 16:42
2007.03.18
А куда в Delphi7 делся QuickReport?