Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.15;
Скачать: CL | DM;

Вниз

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

 
Wood   (2007-03-29 05:41) [0]

Хотелось бы знать, а существует ли функция определения позиции курсора в строке в многострочном тексте? Что-то, типа, SelStart, только для конкретной строки. Или нужно вычислять сначала строку, затем ее длину, а затем позицию?
Спасибо.


 
Жуков Олег   (2007-03-29 06:16) [1]

Есть. Memo.CaretPos.


 
RASkov   (2007-03-29 06:19) [2]

Если

> в многострочном тексте

- это в Memo, и

> позиции курсора в строке

- это позиция каретки, то:

Format("Строка: %d, Поз: %d", [Memo.CaretPos.Y+1, Memo.CaretPos.X+1]);


 
Wood   (2007-03-29 06:22) [3]

Т.е., Memo.CaretPos дает позицию курсора (LongInt) именно в определенной строке, а не тексте? А что есть X и Y?


 
RASkov   (2007-03-29 06:23) [4]

> CaretPos

Вообще-то TPoint;


 
Wood   (2007-03-29 06:29) [5]


> RASkov   (29.03.07 06:23) [4]


ну, ясно, что пойнт, чего точка, мыши?


 
RASkov   (2007-03-29 06:38) [6]

> [5] Wood   (29.03.07 06:29)

Отличаешь курсор от каретки?

или тоже как в соседней ветке
[2] Lavrenty ©   (29.03.07 04:17)
>Курсор,(вертикальная палочка) который мигает.

----------------------------------------------------

>  чего точка, мыши?

А тебе чего надо? Попробывать не судьба?


 
Wood   (2007-03-29 06:48) [7]


> >Курсор,(вертикальная палочка) который мигает.

ага :-)
мне надо узнать позицию каретки (editing cursor) относительно SelStart


 
RASkov   (2007-03-29 06:51) [8]

А что значит
> относительно SelStart

И для чего это надо?
SelStart+SelLength ?


 
Жуков Олег   (2007-03-29 06:54) [9]


> Отличаешь курсор от каретки?
>

Думаю, что не будет ошибки, если эту "вертикальную палочку" называть курсором или кареткой. Она обе эти функции обеспечивает. Есть текстовый курсор, а есть курсор мыши. В контексте "многострочного текста" понятно о чём речь.
http://slovari.yandex.ru/art.xml?art=gl_natural/163/1632_60.HTM&encpage=gl_natural&mrkp=http%3A//hghltd.yandex.com/yandbtm%3Furl%3Dhttp%253A//encycl.yandex.ru/texts/gl_natural/163/1632_60.HTM%26text%3D%25EA%25F3%25F0%25F1%25EE%25F0%26reqtext%3D%25EA%25F3%25F0%25F1%25EE%25F0%253A%253A161196%26%26isu%3D2


 
Wood   (2007-03-29 06:57) [10]

пока я делаю так:
Узнаю SelStart, номер строки, длину строки, позицию selstart вначале данной строки. Затем, нехитрыми арифм. вычислениями узнаю позицию курсора для данной строки..
Думал, может есть некая функция, чтоб не изобретать велик :)


 
Жуков Олег   (2007-03-29 06:58) [11]


> позицию selstart вначале данной строки

Звучит подозрительно


 
Wood   (2007-03-29 07:05) [12]


> Жуков Олег   (29.03.07 06:58) [11]

ну, как обозвать еще эту позицию...:)
млин, может я туплю конечно.. Но вычисления просты:

SelStart=340,
LengthLine(4)=80,
FirstStartPosLine=315,
SelCaretPos= LengthLine-(SelStart-FirstStartPosLine); = 55 (получаем selstart для данной строки)


 
RASkov   (2007-03-29 07:11) [13]

> [9] Жуков Олег   (29.03.07 06:54)

Согласен, погорячился :)
Я пытался понять, что же нужно автору - мышь или клава, поэтому такой жесткий вопрос и получился :)

> [12] Wood   (29.03.07 07:05)

Ничего не понятно :(


 
Wood   (2007-03-29 07:13) [14]


> Ничего не понятно :(
>

Даже так?!
SelCaretPos from Line number 4


 
RASkov   (2007-03-29 07:20) [15]

> [14] Wood   (29.03.07 07:13)

У тебя, что две(а) каретки/курсора? :)

> существует ли функция определения позиции курсора в строке в многострочном тексте

Тебе уже ответили еще в [1]
Напиши по русски, типа - имеется выделенный текст, каретка(мигающая палка) находится в начале/середине/конце выделенного фрагмента нужно опредилить....


 
Wood   (2007-03-29 07:38) [16]

Нет, выделенного фрагмента нет


 
Wood   (2007-03-29 07:41) [17]

TCaretPos = record
   Line,
   Col: Integer;

A как найти Сol? ту самую символьную позицию в данной строке


 
ЮЮ ©   (2007-03-29 07:45) [18]

>Напиши по русски, типа - имеется выделенный текст, каретка(мигающая палка) находится в начале/середине/конце выделенного фрагмента нужно опредилить....

при выделенном тексте каретка, обычно отсутсвует, т.к. выделенный текст и есть та самая каретка: вставленный символ, Delete или Backspace "сожрут" всё выделениие и только тогда появится каретка, показывающая, как и выделение, место вставки символа и намекающая на символ, на которого падет кара клавиш
Delete и Backspace


 
Wood   (2007-03-29 07:47) [19]


> A как найти Сol? ту самую символьную позицию в данной строке

Это то, что как раз ищу я или нет?


 
RASkov   (2007-03-29 08:13) [20]

> [17] Wood   (29.03.07 07:41)
> TCaretPos = record
>   Line,
>   Col: Integer;

Ну так Memo.CaretPos.Y = Line
Memo.CaretPos.X = Col
???

> [18] ЮЮ ©   (29.03.07 07:45)
> при выделенном тексте каретка, обычно отсутсвует, т.к.

Как это отсутствует? А у меня присутствует и даже еще мигает :), но далее по тексту все верно...


 
Wood   (2007-03-29 08:23) [21]


> RASkov   (29.03.07 08:13) [20]

спасиб... мой моск работает в одном, каком-то левом направлении :)


 
ЮЮ ©   (2007-03-29 08:30) [22]

>Как это отсутствует? А у меня присутствует и даже еще мигает :),

Каюсь, на TMemo не посмотрел, ограничелся поведением в DM Cliente :) Во всяком случае, мигвть внутри блока выделения его не заставишь, а слившигося с краем этого блока можно и игнорировать.



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

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

Наверх




Память: 0.51 MB
Время: 0.047 c
15-1174302787
Клара
2007-03-19 14:13
2007.04.15
Обращение к записям


15-1174535794
Slider007
2007-03-22 06:56
2007.04.15
С днем рождения ! 22 марта


15-1174620432
Slider007
2007-03-23 06:27
2007.04.15
С днем рождения ! 23 марта


15-1174559873
Megabyte
2007-03-22 13:37
2007.04.15
Приматы-программисты :)


6-1161783101
Rey_Mysterio
2006-10-25 17:31
2007.04.15
HTML код страницы