Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.025 c
5-1089704607
sergvc
2004-07-13 11:43
2005.07.11
Составной компонент типа TLabeledEdit


1-1119344388
Антон Г.
2005-06-21 12:59
2005.07.11
Проблема с TFont


1-1118411011
Allex
2005-06-10 17:43
2005.07.11
организация обмена информацией между приложениями


14-1118087134
тихий вовочка
2005-06-06 23:45
2005.07.11
На сколько процентов вы используете Delphi?


3-1117477869
alex-drob
2005-05-30 22:31
2005.07.11
Всегда ли нужно BDE