Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.04.04;
Скачать: CL | DM;

Вниз

Delphi-MSWord, как получить "разрыв" страницы?   Найти похожие ветки 

 
s_t_d   (2010-01-27 18:01) [0]

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


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

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

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


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


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

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


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

Selection.InsertBreak Type:=wdPageBreak


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

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


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

> 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 21:53) [6]

>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();
 //


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


> s_t_d   (27.01.10 21:53) [6]

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


 
oldman ©   (2010-01-28 08:53) [8]

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

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


 
12 ©   (2010-01-28 09:37) [9]

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


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

>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". Если есть идеи, пожалуйста поделитесь...


 
YurikGL ©   (2010-01-29 19:43) [11]

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

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


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

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



Страницы: 1 вся ветка

Текущий архив: 2010.04.04;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.009 c
2-1262824902
kyran29
2010-01-07 03:41
2010.04.04
Отправка файла на e-mail


4-1232106768
Evgengold
2009-01-16 14:52
2010.04.04
Таймер


2-1265185700
Darvin
2010-02-03 11:28
2010.04.04
Работа с иконкой своего приложения в трее


15-1263591027
Юрий
2010-01-16 00:30
2010.04.04
С днем рождения ! 16 января 2010 суббота


6-1216304328
Karat
2008-07-17 18:18
2010.04.04
Замена broadcast-пакетов на unicast-пакеты