![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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);
возможно решит проблему:)