Как найти все тексты текущего документа

Автор Борис_С, 11.03.19, 14:56:52

« предыдущая - следующая »

0 Пользователей и 1 гость просматривают эту тему.

Sabahs


Борис_С

Это понятно. Мне нужно выделить не весь текст, а только его часть. Это возможно?

Борис_С

Прошу прощения. Сразу не понял. Я понял, что можно выделить всю строку. Выделить часть строки нельзя. Верно?

Sabahs

Разложили текст на строки ITextLine и нужную выделили.

Борис_С

Написал процедуру получения всех надписей текущего документа и выделения 1-ой строки многострочного текста:

void GetTextTitles(ksDocument2DPtr& doc, IDrawingTextsPtr& pDrawingTexts)
{
for (int i = 0; i < pDrawingTexts->Count; i++)
{
IDrawingTextPtr pDrawingText;
VARIANTARG index;
VariantInit(&index);
index.vt = VT_I4;
index.intVal = i;
pDrawingTexts->get_DrawingText(index, &pDrawingText);
//int i1 = doc->ksAddObjGroup(0, pDrawingText->Reference); //выделение текста

if (!pDrawingText) {
kompas->ksError("pDrawingText не получен. Выход");
return;
}
ITextPtr pText = ITextPtr(pDrawingText);
if (!pText) {
kompas->ksError("pText не получен. Выход");
return;
}
//string Text = pText->Str;
for (int i1 = 0; i1 < pText->Count; i1++)
{
ITextLinePtr pTextLine = pText->GetTextLine(i1);
if (pTextLine)
{
   if (i1 == 0)
     int i2 = doc->ksAddObjGroup(0, pTextLine->Reference); //выделение текста
}
}
      }
}


Строки не выделяются. Где я не прав?

Sabahs

Так посмотрите в отладчике, что возвращает строка ниже.
int i2 = doc->ksAddObjGroup(0, pTextLine->Reference);


Борис_С

Она возвращает 0, т.е. выделение строки не происходит. Вопрос - почему?
Возможно строку в принципе нельзя выделить.

Sabahs

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

Борис_С

Поговорил с разработчиком. Он сказал, ручками это можно сделать, а на уровне API это не реализовано.