Форум: "Начинающим";
Текущий архив: 2010.04.04;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c