Позиционирование в TEXT-контроле

Clarion, Clarion 7

Модератор: Дед Пахом

Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Ответить
NewUser
Старожил
Сообщения: 238
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 6 раз

Позиционирование в TEXT-контроле

Сообщение NewUser »

Не подскажет ли кто оперативно, как в Text-контроле (в частности с атрибутом RTF) запомнить текущую позицию курсора при потере фокуса контролом (или при позиционировании курсора в новую позицию в рамках этого текст-контрола).

Что-то после отпуска простые вещи повелетали из головы.
CW6.3 АВС
NewUser
Старожил
Сообщения: 238
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 6 раз

Re: Позиционирование в TEXT-контроле

Сообщение NewUser »

В принципе, эксперементальным методом найдена точка вставки, которая активизируется при любом изменении позиционирования курсора:
Local Objects - Abs Objects - RTF Control - RefreshLinePos.
Только вот вопрос остался открытым - как получить числовое значение места нахождения курсора?
Ну подскажите, пожалуйста! :roll:
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 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
С уважением, ДП
NewUser
Старожил
Сообщения: 238
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 6 раз

Re: Позиционирование в TEXT-контроле

Сообщение NewUser »

Спасибо, с этим я разобрался. Умею теперь программно понимать на какой строке (Y) и на каком знакоместе (Х) у меня курсор.
Но как определить после какого (по количеству) от начала поля символа находится курсор? Ведь в каждой строке произвольное кол-во символов. Не зная этого, невозможно буде потом спозиционироваться на это же место оперетором: Select(?MY:Text,CurPos), где MY:Text - текстовой RTF контрол, CurPos - вычисленное значение положения курсора, относительно начала строки.
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: Позиционирование в TEXT-контроле

Сообщение Дед Пахом »

Есть вот ещё:

Код: Выделить всё

Caret            PROCEDURE (LONG lineno, LONG pos)         ! 1-based
С уважением, ДП
Аватара пользователя
Дед Пахом
Старичок
Сообщения: 3289
Зарегистрирован: 07 Июль 2005, 16:51
Откуда: Москва, Россия
Благодарил (а): 15 раз
Поблагодарили: 49 раз
Контактная информация:

Re: Позиционирование в TEXT-контроле

Сообщение Дед Пахом »

И вообще, есть исходники, там много чего интересного написано:
rtfctl.inc/clw, RTF.INT
С уважением, ДП
NewUser
Старожил
Сообщения: 238
Зарегистрирован: 10 Ноябрь 2005, 23:07
Откуда: Краснодар
Благодарил (а): 6 раз

Re: Позиционирование в TEXT-контроле

Сообщение NewUser »

Спасибо, Дед Пахом, за наводки и оперативность - все получилось!
Ответить