проблема с Richtext полем

Тема в разделе "Lotus - Программирование", создана пользователем Maria, 15 авг 2007.

Статус темы:
Закрыта.
  1. Maria

    Maria Гость

    Имеется документ, в нем обычная таблица с несколькими закладками. На первой закладке есть RichText поле RTField, а в нем таблица 4*4. Мне нужно обратиться к ячейкам таблицы и произвести определенные действия с текстом, котоорый находится в них.

    Код:
    Код (Text):
    Dim rti As NotesRichTextItem
    Dim rtTable As NotesRichTextTable
    Dim rtnav As NotesRichTextNavigator

    Set rti = doc.GetFirstItem("RTField")

    Set rtnav = rti.CreateNavigator

    If Not rtnav.FindFirstElement(RTELEM_TYPE_TABLE) Then
    Messagebox "item RTField does not contain a table,",, "Error"
    Exit Sub
    else
    Set rtTable = rtnav.GetElement
    End If
    Так вот, выдается сообщение "item RTField does not contain a table". Если же поле RTField разместить не на первой закладке таблицы, а просто на форме, все ОК. Получается, что если я размещаю RichText-поле с таблицей в таблице, к нему нельзя доступиться. Кто-нить с этим сталкивался? И как с этим бороться?
     
  2. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Сталкивался.
    Бороться невозможно: с nested tables в lotus'e беда.
     
  3. Гость

    А вы уверены что добрались до этого поля? Не пробовали обратиться к нужной ячейке таблицы, оттуда взять поле и уже потом использовать вышеописанный код???
     
  4. Maria

    Maria Гость


    а как обратиться к нужной ячейке таблицы?
     
  5. Гость

    Да так же как и к таблице, только указать
    Код (Text):
    FindFirstElement(RTELEM_TYPE_TABLECELL)
    , в общем смотрите хелп по FindFirstElement если что то не понятно. Но тут есть пара отвратительных нюансов: во-первых ткнуть в конкретную ячейку нельзя, можно ткнуть в первую, потом перейти ко второй и т.д. (если строка таблицы закончилась он автоматически переходит к 1 ячейке 2 строки и т.д.), а во-вторых: если ячейка таблицы пуста, то он проскачет мимо нее. Если у Вас поле находится в 1 ячейке таблицы, то проблем не будет. А вот если не в первой, тогда надо просчитывать (учитывая пустые ячейки). В общем РТ таблицы в 6 версии Лотуса (с которой я работаю) реализованы ужасно, может что в 7 или 8 изменилось к лучшему... Нельзя ли Вам отказаться от таблицы? Оставить таблицу с закладками, в ней разместить таблицу 4*4 и уже в ней разместить нужные Вам поля? Или у Вас сейчас так и сделано? Просто я работал с таблицой, используя ртнавигатор, именно по номерам ячеек и запихивал туда данные - удовольствие ниже среднего, а если же разместить поля, то обращение будет к полям, а не к таблице и вроде бы проблем должно быть меньше...
     
  6. Maria

    Maria Гость

    на самом деле про таблицу 4*4 я для примера написала. Проблема в том, что в таблице я заранее не знаю, сколько будет строк. Каждая строка содержит информацию определенного рода (например, название товара и цена). Но вводит информацию пользователь, поэтому и используется RichText, чтобы ему можно было добавлять строки самому.

    Но поскольку это RichText-поле находится не просто на форме, а в таблице, то как написано было выше, с вложенными таблицами наверно действительно в Лотусе проблема, т.к. я не могу вообще к ней обратиться, не говоря уже о ячейках ее. Ведь свойство FindFirstElement это свойство RichTextNavigatorа, и RichTextNavigator.FindFirstElement(RTELEM_TYPE_TABLE) и RichTextNavigator.FindFirstElement(RTELEM_TYPE_TABLECELL) мне возвращают ошибку
     
  7. Omh

    Omh Lotus team
    Lotus team

    Регистрация:
    4 июл 2007
    Сообщения:
    2.210
    Симпатии:
    0
    Вот тогда кривой, но workaround:

    Предварительно создаёшь временную форму, в которой у тебя только одно RT поле.
    Во время обработки:
    Сохраняешь этот док в котором юзер вводит данные (и где таблица в таблице), берёшь нужный RTItem.
    Создаёшь док в базе на форме, которую мы создали предварительно, копируешь твой полученный RTItem в новый документ в то самое RT поле.
    Обязательно пересохраняешь новый документ через UI. Да-да, обязательно через UI :unsure:
    Берешь doc от свежесохранённого UI документа и, вуаля, таблица доступна :(

    Вообще, говно workaround: что-то там мелькает, появляется, юзер в шоке...
    Вытаскивай RT из таблицы. Может быть можно в секцию запихнуть.
    Lotus limitations мать их.
     
Загрузка...
Похожие Темы - проблема Richtext полем
  1. fedotxxl
    Ответов:
    6
    Просмотров:
    3.411
  2. c0de3r
    Ответов:
    5
    Просмотров:
    119
  3. DobermannTT
    Ответов:
    10
    Просмотров:
    134
  4. SoulPaladin
    Ответов:
    4
    Просмотров:
    128
  5. Artael
    Ответов:
    1
    Просмотров:
    109
Статус темы:
Закрыта.

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