Форум: "Начинающим";
Текущий архив: 2007.03.18;
Скачать: [xml.tar.bz2];
ВнизПозиция курсора в 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.04 c