C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Builder + Word, Как установить курсор?
Jazz(Dnepr)
Отправлено: 07.08.2004, 18:45


Не зарегистрирован







Надо из одного документа перенести кусок текста, начинающегося со слова номер N размером L, в другой после слова M. Как будет выглядеть реализация (я не смог выделить текст и переключиться в другой документ). Номер слова я знаю, воспользовавшись ранее функцией
//****************************
Variant vWords = msActiveDocument.OlePropertyGet("Words");
return vWords.Exec(Function("Item") << vIndex); //слово под номером
//vIndex в активном док-е
//****************************
Gena
Отправлено: 31.01.2005, 12:25


Не зарегистрирован







На вопрос не могу ответить, но есть встречный вопрос (очень интересует): как в документ Ворда заменить текст на другой (например из метки или мемо)?
Guest
Отправлено: 31.01.2005, 13:41


Не зарегистрирован







2Gena
CODE

Заменяет в документе MSWord текст вида <#fldField_Name#> на значение поля

MWOSel = MSWord. OlePropertyGet("Selection");
MWOFind = MWOSel. OlePropertyGet("Find");
{ AnsiString fldname;
   AnsiString fldvalue;
   TField  *fld;
   for (все поля dataset)
     { fldname  = "<#fld" + fld->Name + "#>";
        try { fldvalue = fld->AsString; }
        catch (...) { fldvalue = "";  }
        try { MSWordSubstitute(MWOFind, fldname, fldvalue); }
        catch (...) {; }


void __fastcall MSWordSubstitute
(Variant find
,const AnsiString &oldtext
,const AnsiString &newtext
)
{
Variant repl = find.OlePropertyGet("Replacement");
find.OleProcedure("ClearFormatting");
repl.OleProcedure("ClearFormatting");

find.OleProcedure ("Execute",
/* FindText                  */ oldtext,
/* MatchCase              */ false,
/* MatchWholeWord     */ false,
/* MatchWildcards        */ false,
/* MatchSoundsLike     */ false,
/* MatchAllWordForms */ false,
/* Forward                  */ true,
/* Wrap                       */ 1,
/* Format                    */ false,
/* ReplaceWith            */ newtext,
/* Replace                   */ 2
);
}


Вернуться в Технологии COM/DCOM, ActiveX