Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Delphi-MSWord, как получить "разрыв" страницы? [D7, XP]


s_t_d ©   (2010-01-27 18:01:00) 

Уважаемые мастера, если можно пожалуйста посоветуйте. В ходе работы приложения необх. сформировать документ в формате MSWord.
Как создавать документ и заносить в него данные я научился. А вот, что не получается. Необходимо создать "разрыв" страницы. И вот тут не выходит... Макрорекодер MSWord пишет "Selection.InsertBreak Type:=wdPageBreak". А вот Delphi соответствующий фрагмент "  v.ActiveDocument.Range.InsertBreak(wdPageBreak);" приводит к ВСТАВКЕ НОВОЙ СТР. В НАЧАЛО документа, а вовсе не к "разрыву", как хотелось бы... В чем дело ?


s_t_d   (2010-01-30 00:18:00) [1]

>YurikGL ©   (29.01.10 19:43) [11]
Большое спасибо. Очень интересная работа.


YurikGL   (2010-01-29 19:43:00) [2]

Vr: OleVariant;
...
vr:=wdStory;
w1.Selection.EndKey(vr,EmptyParam);

http://www.delphimaster.ru/articles/dbtoword/index.html


s_t_d   (2010-01-28 20:05:00) [3]

>oldman ©   (28.01.10 08:53) [8]
>12 ©   (28.01.10 09:37) [9]
Спасибо. Да, видимо, действительно перед вставкой разрыва следует перейти в конец документа. Макрорекодер MSWord пишет: "Selection.EndKey Unit:=wdStory". А как это интерпетировать в Delphi? Попытка сделать так "  v.ActiveDocument.Range.EndKey(wdStory)" к успеху не привела. Сообщает, что неизвестен "EndKey". Не понимаю, как интерпретировать параметр "Unit:=wdStory". Если есть идеи, пожалуйста поделитесь...


12   (2010-01-28 09:37:00) [4]

может надо найти как встать на конец документа перед вставкой?


oldman   (2010-01-28 08:53:00) [5]

А если вставить в текст символ с кодом Ctrl-Enter?
:)

Раньше надо было вставлять chr(12)...


Плохиш   (2010-01-27 23:29:00) [6]


> s_t_d   (27.01.10 21:53) [6]

Мне свои глаза дороже.


s_t_d   (2010-01-27 21:53:00) [7]

>Smile   (27.01.10 21:19) [5]
Процедура  insert_2()   должна создавать "разрыв"

//Процедура создания приложения 'Word.Application'
procedure create_Word_Application();
begin
 v:=CreateOleObject('Word.Application');
 v.visible:=false;
end;
//
//Процедура открытия документа 'Word.Application'
procedure open_doc(wd: String);
begin
 v.documents.open(wd);
end;
//
//Процедура вставки параграфа в конец имеющегося текста
procedure insert_1(t: String);
begin
 v.ActiveDocument.Range.InsertParagraphAfter;
 v.ActiveDocument.Paragraphs.Last.Range.text := t;
end;
//
//
//Процедура ***
//Параметр
// t - вставляемый текст.
procedure insert_2;
var x: Olevariant;
begin
x := wdPageBreak;
v.ActiveDocument.Range.InsertBreak(x);
end;
//
//Процедура сохранения документа 'Word.Application'
procedure save_doc_as(wd: String);
var
path: string; //
begin
 path :='C:\hemo_dlph\depart_hd\ISOD_01\DOC\TMP_DOC\';
 path := path + wd;
 v.ActiveDocument.saveas(path);
end;
//
//Процедура сохранения документа 'Word.Application'
procedure save_doc_as_1(wd: String);
var
path: string; //
begin
 path :='C:\hemo_dlph\depart_hd\ISOD_01\DOC\TMP_ГНЦ\';
 path := path + wd;
 v.ActiveDocument.saveas(path);
end;
//
//Процедура закрытия приложения 'Word.Application'
procedure quit_Word_Application();
begin
 v.Quit;
end;
//****************************************************
//
//Направление в ...
 //1.1.Создание приложения 'Word Application'
       create_Word_Application();
 //
 //1.2.Открытие рабочей книги (шаблона)
       wd := 'GNC.doc';
       wd := ExpandFileName(wd); //Дополнение имени документа текущим каталогом
       open_doc(wd);
 //
 //1.3.Заголовок документа
       t := 'Учреждение, направившее больного ...';
       insert_1(t);
       t := '';
       insert_1(t);
 //2.Пациент
     t := 'Пациент:  ' + F_rg_int_1.Edit3.Text; //Ф.И.О. пациента
     insert_1(t);
 //Лабораторные данные
     t := '';
     insert_1(t);
     t := 'Лабораторные данные: ';
     insert_1(t);
 //
   insert_2();
 //Страница ГНЦ.
     t := '';
     insert_1(t);
     insert_1(t);
 //1.1.Жалобы.
     t := 'Жалобы.'; //Подзаголовок
     insert_1(t);
 //1.4.Сохранение документа
 //Формировение имени документа и сохранение документа в папке
   t := 'ex_1';
   save_doc_as_1(t);
 //
 //1.5.Закрытие приложения 'Word Application'
       quit_Word_Application();
 //


Smile   (2010-01-27 21:19:00) [8]

> s_t_d   (27.01.10 20:36) [2]
> >Smile   (27.01.10 19:59) [1]

Для меня это по крайней мере странно. В моих "конструкциях" это имеет соответствующий эффект

Приведи хотя бы несколько строк твоего кода.
Типа:
...TWordApplication.Create(Form1);
...AutoConnect:= True;


ну и т.п.
иначе трудно что либо обсуждать
:(


s_t_d   (2010-01-27 20:55:00) [9]

>Плохиш ©   (27.01.10 20:48) [3]
Так я делап с самого начала (мс. вопрос). Не получается. ДОБАВЛЯЕТСЯ СТР. В НАЧАЛО ДОКУМЕНТА.


Плохиш   (2010-01-27 20:48:00) [10]

Selection.InsertBreak Type:=wdPageBreak


s_t_d   (2010-01-27 20:36:00) [11]

>Smile   (27.01.10 19:59) [1]
Попробовал. Не помогло. Конкретно: вооще никакой реакции, т.е. текст идет сплошняком, без всяких "разрывов".


Smile   (2010-01-27 19:59:00) [12]

Так пробовал?

var xxl: Olevariant;
...
   xxl:= wdSectionBreakContinuous;
   wordapp.selection.InsertBreak(xxl);


возможно решит проблему:)


Наверх

Титульная страница Поиск, карта сайта Написать письмо