Текущий архив: 2005.07.11;
Скачать: CL | DM;
ВнизРабота с Word Найти похожие ветки
← →
Леван (2004-09-24 15:39) [0]Привет Мастерам.
Скачал работающии пример работы с Word-ом. Начал перекачивать в своей программе куски, довел до
wordapplication.create(nil);//работает
Wordapplication.Connect; //работает
witemindex:=1;
wTemplate := emptyparam; // EmptyParam;
NewTemplate := False;
WordApplication.Documents.Add(wTemplate, wNewTemplate); //тоже работает
но никак не богу указать Word-у, чтобы он в качестве рабочего документа
взял данные из делфевского RichEdit-а
там есть WordApplication.Documents.Item(witemindex), но не позволяет
присваивать ему что-либо (left site cannot be assigned to...)
подскажите, как бить?
Спасибо
← →
YurikGL © (2004-09-24 19:45) [1]http://www.delphimaster.ru/cgi-bin/anketa.pl?id=1084962208
Читать интересное о себе...
← →
Леван (2004-09-25 09:26) [2]Действительно интересно
спасибо
попробую
← →
AGin (2004-09-25 18:53) [3]Это можно сделать через ClipBoard. Основная идея - текст заносится в RichEdit, потом полностью выделяется и помещается в ClipBoard, а в Word"е - вставляется обратно.
Работающий кусок для вставки в Word"е вместо заданного шаблона:
procedure FindAndPaste(const SFind: string);
var
Range,FindText,MatchCase, Format,
MatchWholeWord,MatchWildcards,
MatchSoundsLike,MatchAllWordForms,
FForward,Wrap,ReplaceWith,Replace,Wrk: OleVariant;
CntAdded,CntBefore,CntAfter,i: Integer;
begin
Range := WordDoc.Content;
FindText := SFind;
MatchCase := True;
MatchWholeWord := True;
MatchWildcards := False;
MatchSoundsLike := False;
MatchAllWordForms := False;
FForward := True;
Wrap := wdFindContinue;
Format := False;
Replace := wdReplaceNone;
ReplaceWith := "";
try
WordApp.Selection.Find.Execute(FindText,MatchCase,
MatchWholeWord,MatchWildcards,
MatchSoundsLike,MatchAllWordForms,
FForward,Wrap,Format,
ReplaceWith,Replace);
CntBefore := WordDoc.Paragraphs.Count;
WordApp.Selection.Range.Paste;
CntAfter := WordDoc.Paragraphs.Count;
CntAdded := CntAfter - CntBefore;
Wrk := WordApp.Selection.Paragraphs.Item(1);
Wrk.Alignment := wdAlignParagraphJustify;
Wrk.Range.Font.Name := PrintRE.RE.Font.Name;
Wrk.Range.Font.Size := PrintRE.RE.Font.Size;
if CntAdded > 0 then
for i := 1 to CntAdded do begin
Wrk := Wrk.Next;
Wrk.Alignment := wdAlignParagraphJustify;
Wrk.Range.Font.Name := PrintRE.RE.Font.Name;
Wrk.Range.Font.Size := PrintRE.RE.Font.Size;
end;
except
end;
end;
← →
YurikGL © (2004-09-25 23:23) [4]
> Это можно сделать через ClipBoard.
Делать через буфер - плохо. А если у пользователя в этом буфере что-то хранилось?
← →
AGin (2004-09-26 21:22) [5]Можно и непосредственно вставлять любой текст d Word без ClipBoard"а, а потом изменять форматирование, если нужно. Тогда и промежуточный RichEdit не нужен. Но... писать много...
← →
Леван (2004-09-27 12:29) [6]TO AGin
Спасибо
Главное было взять с вашего примера
wordapplication.Documents.Item(witemindex).Select(); WordApplication.Selection.Paste();и все получилось
А налзя ли поместить Richedit в Tmemorystream и загрузить в WORD оттуда? (минуя Clipboard)? (мне не удалос:
Richedit запыхнул в поток, но как указать ворду брать данные оттуда ?)
Страницы: 1 вся ветка
Текущий архив: 2005.07.11;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.043 c