Заменить таблицу в Richtext поле.

Тема в разделе "Lotus - Программирование", создана пользователем wowa, 20 апр 2009.

  1. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    RichText поле содержит текст и таблицы, мне нужно после определенной строки (например «Искомая строка»), удалить таблицу и на ее место вставить другую.

    Я делаю следующим образом:

    Код (Text):
    Rem Удаляю таблицу

    Call rtnav.FindFirstString("Искомая строка",RT_FIND_CASEINSENSITIVE)

    Call rtnav.FindNextElement(RTELEM_TYPE_TABLE)

    Set rtTable = rtnav.GetElement

    Call rtTable.Remove

    Rem Определяю место для вставки таблицы

    Call rtnav.FindFirstString("Искомая строка” RT_FIND_CASEINSENSITIVE)

    Call rtitem.BeginInsert( rtnav,True) ‘(*)

    Call rtitem.AddNewLine(1)

    Call rtitem.AppendTable(4, 3)

    Call rtitem.EndInsert
    ……
    (*) Если True , то таблицу вставляет после всего текста в документе, если false – то перед искомой строкой.

    Как сделать, чтобы таблица вставлялась вместо удаленной таблицы?
     
  2. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Может после удаления таблицы поставь на тот место какой-либо маркер, и потом после второго
    Код (Text):
    Call rtnav.FindFirstString("Искомая строка” RT_FIND_CASEINSENSITIVE)
    переходи на свой свежевставленный маркер, удаляй его и встявляй таблицу?
     
  3. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    С маркером та же проблема, я его не могу поставить на место удаленной таблицы, он ставиться либо выше, либо после всего текста….
     
  4. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Давненько не работал с richText - всё из башки повылетало.
    Слушай, там не может быть rtRange замешан?

    Будет где-то в коде
    Код (Text):
    Call rtitem.BeginInsert(rtRange, False)
    , где rtRange - часть ричтекста, где раньше была таблица.

    Мне кажется надо что-то такое.
     
  5. wowa

    wowa Well-Known Member

    Регистрация:
    1 фев 2007
    Сообщения:
    842
    Симпатии:
    0
    С range та же самая ситуация
     
  6. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Ну тогда фик знает.
    Как вариант через DXL сделать, но это так, в качестве запасного.
     
  7. NickProstoNick

    NickProstoNick Статус как статус :)

    Регистрация:
    22 авг 2008
    Сообщения:
    1.766
    Симпатии:
    39
    мммм... есть предложение.. правда наверное не очень удобное
    После этого
    Код (Text):
    Rem Определяю место для вставки таблицы
    Call rtnav.FindFirstString("Искомая строка" RT_FIND_CASEINSENSITIVE)
    я написал такое ( "Искомая строка" у меня заканчивается "." )
    Код (Text):
    Call rtnav.FindNextString(".")
    Помогло. Таблица вставляется после точки
     
Загрузка...

Поделиться этой страницей