В Word не вставляется большой текст
Код:
void Zamena(AnsiString s1, AnsiString s2)
{
vVarApp.OlePropertyGet("Selection").OlePropertyGet("Find").OleProcedure("Execute",
/*FindText=*/ s1.c_str(), /*MatchCase=*/false, /*MatchWholeWord=*/ false,
/*MatchWildcards=*/false, /*MatchSoundsLike=*/false, /*MatchAllWordForms=*/false,
/*Forward=*/true, /*Wrap=*/1, /*Format=*/false, /*ReplaceWith=*/ s2.c_str(),
/*Replace=*/2);
}
void __fastcall TaddForm::btnPrintClick(TObject *Sender)
{
vVarApp = CreateOleObject("Word.Application");
vVarDocs=vVarApp.OlePropertyGet("Documents");
vVarDocs.OleProcedure("Add","c:\\extract.doc");
vVarDoc=vVarDocs.OleFunction("Item",1);
vVarDoc.OleProcedure("Activate");
vVarParagraphs=vVarDoc.OlePropertyGet("Paragraphs");
vVarDoc.OleProcedure("Activate");
vVarParagraphs.OleProcedure("Add");
vVarParagraph=vVarParagraphs.OleFunction("Item",1);
Zamena("%%extract.nMk%%",nMk->Text.Trim());
Zamena("%%extract.fio%%",fio->Text.Trim());
Zamena("%%extract.age%%",old->Text.Trim());
Zamena("%%extract.date.start%%",stLech->Date.FormatString("dd.MM.yyyy"));
Zamena("%%extract.date.end%%",endLech->Date.FormatString("dd.MM.yyyy"));
Zamena("%%extract.clDiag%%",klDiag->Text.Trim());
Zamena("%%extract.complaint%%",jalobi->Text.Trim());
//Zamena("%%extract.anamnesis%%",anamnez->Text.Trim());
//Zamena("%%extract.objective%%",objectiv->Text.Trim());
Zamena("%%extract.givenInspections%%",provObsled->Text.Trim());
Zamena("%%extract.gaBlood%%",allAnBlood->Text.Trim());
Zamena("%%extract.baBlood%%",bioAnBlood->Text.Trim());
Zamena("%%extract.bloodAnalisis%%",anMochi->Text.Trim());
Zamena("%%extract.ec%%",ekg->Text.Trim());
Zamena("%%extract.treatment%%",provLech->Text.Trim());
Zamena("%%extract.recommended%%",recomended->Text.Trim());
Zamena("%%extract.doctor%%",lechDok->Text.Trim());
Zamena("%%extract.manager%%",zavOtd->Text.Trim());
vVarApp.OlePropertySet("Visible", true);
}
{
vVarApp.OlePropertyGet("Selection").OlePropertyGet("Find").OleProcedure("Execute",
/*FindText=*/ s1.c_str(), /*MatchCase=*/false, /*MatchWholeWord=*/ false,
/*MatchWildcards=*/false, /*MatchSoundsLike=*/false, /*MatchAllWordForms=*/false,
/*Forward=*/true, /*Wrap=*/1, /*Format=*/false, /*ReplaceWith=*/ s2.c_str(),
/*Replace=*/2);
}
void __fastcall TaddForm::btnPrintClick(TObject *Sender)
{
vVarApp = CreateOleObject("Word.Application");
vVarDocs=vVarApp.OlePropertyGet("Documents");
vVarDocs.OleProcedure("Add","c:\\extract.doc");
vVarDoc=vVarDocs.OleFunction("Item",1);
vVarDoc.OleProcedure("Activate");
vVarParagraphs=vVarDoc.OlePropertyGet("Paragraphs");
vVarDoc.OleProcedure("Activate");
vVarParagraphs.OleProcedure("Add");
vVarParagraph=vVarParagraphs.OleFunction("Item",1);
Zamena("%%extract.nMk%%",nMk->Text.Trim());
Zamena("%%extract.fio%%",fio->Text.Trim());
Zamena("%%extract.age%%",old->Text.Trim());
Zamena("%%extract.date.start%%",stLech->Date.FormatString("dd.MM.yyyy"));
Zamena("%%extract.date.end%%",endLech->Date.FormatString("dd.MM.yyyy"));
Zamena("%%extract.clDiag%%",klDiag->Text.Trim());
Zamena("%%extract.complaint%%",jalobi->Text.Trim());
//Zamena("%%extract.anamnesis%%",anamnez->Text.Trim());
//Zamena("%%extract.objective%%",objectiv->Text.Trim());
Zamena("%%extract.givenInspections%%",provObsled->Text.Trim());
Zamena("%%extract.gaBlood%%",allAnBlood->Text.Trim());
Zamena("%%extract.baBlood%%",bioAnBlood->Text.Trim());
Zamena("%%extract.bloodAnalisis%%",anMochi->Text.Trim());
Zamena("%%extract.ec%%",ekg->Text.Trim());
Zamena("%%extract.treatment%%",provLech->Text.Trim());
Zamena("%%extract.recommended%%",recomended->Text.Trim());
Zamena("%%extract.doctor%%",lechDok->Text.Trim());
Zamena("%%extract.manager%%",zavOtd->Text.Trim());
vVarApp.OlePropertySet("Visible", true);
}
Я бы посоветовал бы не изобретать велосипед, и использовать генераторы отчетов (либо в конце концов реализовать их самому - если уж так хочется). Если же, сердцу близок именно такой метод - тогда надо проверять размер передаваемой строки, ввести кратные переменные для анамнеза и осмотра (например %%extract.anamnesis1%% (первый кусок) и %%extract.anamnesis2%%(второй кусок) и %%extract.anamnesis3%%(третий кусок)), и разбивать строку на части нужного размера (надеясь на то, что анамнез отдельных больных не превысит )))). А лишние куски удалять.
Цитата: kot_
А лишние куски удалять.
лишние переменные конечно же имелось ввиду.