Позиционирование в TEXT-контроле
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
-
- Старожил
- Сообщения: 238
- Зарегистрирован: 10 Ноябрь 2005, 23:07
- Откуда: Краснодар
- Благодарил (а): 6 раз
Позиционирование в TEXT-контроле
Не подскажет ли кто оперативно, как в Text-контроле (в частности с атрибутом RTF) запомнить текущую позицию курсора при потере фокуса контролом (или при позиционировании курсора в новую позицию в рамках этого текст-контрола).
Что-то после отпуска простые вещи повелетали из головы.
CW6.3 АВС
Что-то после отпуска простые вещи повелетали из головы.
CW6.3 АВС
-
- Старожил
- Сообщения: 238
- Зарегистрирован: 10 Ноябрь 2005, 23:07
- Откуда: Краснодар
- Благодарил (а): 6 раз
Re: Позиционирование в TEXT-контроле
В принципе, эксперементальным методом найдена точка вставки, которая активизируется при любом изменении позиционирования курсора:
Local Objects - Abs Objects - RTF Control - RefreshLinePos.
Только вот вопрос остался открытым - как получить числовое значение места нахождения курсора?
Ну подскажите, пожалуйста!
Local Objects - Abs Objects - RTF Control - RefreshLinePos.
Только вот вопрос остался открытым - как получить числовое значение места нахождения курсора?
Ну подскажите, пожалуйста!

- Дед Пахом
- Старичок
- Сообщения: 3291
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 49 раз
- Контактная информация:
Re: Позиционирование в TEXT-контроле
А вот и сам метод RefreshLinePos:
Код: Выделить всё
RTFControlClass.RefreshLinePos PROCEDURE()
CODE
IF SELF.CtlShowLineNo
SELF.CtlShowLineNo{PROP:Text} = 'Line: ' & SELF.Props.CaretY() & ' of ' & SELF.Props.LineCount()
END
IF SELF.CtlShowPosInLine
SELF.CtlShowPosInLine{PROP:Text} = 'Col: ' & SELF.Props.CaretX()
END
RETURN
С уважением, ДП
-
- Старожил
- Сообщения: 238
- Зарегистрирован: 10 Ноябрь 2005, 23:07
- Откуда: Краснодар
- Благодарил (а): 6 раз
Re: Позиционирование в TEXT-контроле
Спасибо, с этим я разобрался. Умею теперь программно понимать на какой строке (Y) и на каком знакоместе (Х) у меня курсор.
Но как определить после какого (по количеству) от начала поля символа находится курсор? Ведь в каждой строке произвольное кол-во символов. Не зная этого, невозможно буде потом спозиционироваться на это же место оперетором: Select(?MY:Text,CurPos), где MY:Text - текстовой RTF контрол, CurPos - вычисленное значение положения курсора, относительно начала строки.
Но как определить после какого (по количеству) от начала поля символа находится курсор? Ведь в каждой строке произвольное кол-во символов. Не зная этого, невозможно буде потом спозиционироваться на это же место оперетором: Select(?MY:Text,CurPos), где MY:Text - текстовой RTF контрол, CurPos - вычисленное значение положения курсора, относительно начала строки.
- Дед Пахом
- Старичок
- Сообщения: 3291
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 49 раз
- Контактная информация:
Re: Позиционирование в TEXT-контроле
Есть вот ещё:
Код: Выделить всё
Caret PROCEDURE (LONG lineno, LONG pos) ! 1-based
С уважением, ДП
- Дед Пахом
- Старичок
- Сообщения: 3291
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 49 раз
- Контактная информация:
Re: Позиционирование в TEXT-контроле
И вообще, есть исходники, там много чего интересного написано:
rtfctl.inc/clw, RTF.INT
rtfctl.inc/clw, RTF.INT
С уважением, ДП
-
- Старожил
- Сообщения: 238
- Зарегистрирован: 10 Ноябрь 2005, 23:07
- Откуда: Краснодар
- Благодарил (а): 6 раз
Re: Позиционирование в TEXT-контроле
Спасибо, Дед Пахом, за наводки и оперативность - все получилось!