Курсовая работа: Delphi: работа с MS WORD
WordDocument1.Lists.Item(i).Range.Select;
Для этого в любом случае потребуется заготовка. Неважно, вставлена она в общий шаблонный документ или хранится в отдельном файле. Заготовку делаем так: выбираем в меню Формат/Список, и сохраняем, если это отдельный шаблон списка. У нас появляется пустой список без текста с одним маркером. Далее вспоминаем, как мы делали списки вручную - писали текст, нажимали "Enter", появлялся новый элемент списка. Теперь то же самое, только программно. Предположим, у нас уже открыт документ с заготовкой, и мы хотим внести в список пункты "Item 1" и "Item 2":
var i: Integer;
vcol: OleVariant;
...
i:=1;
vcol:=wdCollapseEnd;
WordDocument1.Lists.Item(i).Range.Select;
WordApplication1.Selection.Collapse(vcol);
WordApplication1.Selection.InsertAfter('Item 1');
WordDocument1.Lists.Item(i).Range.Select;
WordApplication1.Selection.Collapse(vcol);
WordApplication1.Selection.InsertAfter(#13);
WordDocument1.Lists.Item(i).Range.Select;
WordApplication1.Selection.Collapse(vcol);
WordApplication1.Selection.InsertAfter('Item 2');
WordDocument1.Lists.Items(i).Range.Select;
WordApplication1.Selection.Copy;
То есть мы вставляем в документ текст первого пункта списка, он попадает на свое место. Потом посылаем в Word символ перехода строки, он честно переходит и тем самым сам создает нам второй пункт списка, куда и вставляем нужную строку. Ну и так далее, нужное количество раз. Последние две строки нужны, если список заготовлен в отдельном файле - после их выполнения список оказывается в буфере обмена. Здесь выгода в том, что можем иметь заготовки списков разных стилей и по ходу дела выбирать, какой список создать. Затем открываем документ, где должен быть список, выделяем с помощью Range нужный кусок, копируем из буфера обмена через WordDocument1.Range(a,b).Paste. Чтобы не испортить файл с заготовкой, можем сразу после открытия пересохранить его под другим именем, а можем просто выйти из него без сохранения изменений
var vsave: OleVariant;
...
vsave:=wdDoNotSaveChanges;
WordDocument1.Close(vsave);
Константа сохранения изменений может принимать значения
Символьное обозначение | Шестнадцатеричное |
wdSaveChanges | $FFFFFFFF |
wdDoNotSaveChanges | $00000000 |
wdPromptToSaveChanges | $FFFFFFFE |
Первое значение сохраняет изменения, второе дает возможность выйти без сохранения изменений. Последняя константа вызывает при выходе стандартный диалог сохранения изменений. Можем сделать и несколько по-другому. Хотя мы не можем создать новый элемент списка, но текст в уже существующем изменить можно:
var i,j: Integer;
...
i:=1;
j:=1;