Часто возникает необходимость форматирования документа и измене-
ния свойств абзацев. Для написания формул приходится использовать
перевод символов в верхний или нижний индекс (например, икс в квад-
рате). Как автоматизировать эти действия из приложений Delphi
Для работы с абзацами используется коллекция Paragraphs, которая опре-
деляет, каким образом документ разбит на абзацы и способ отображения
текста в каждом отдельном абзаце. Количество абзацев в документе
определяется свойством Count коллекции Paragraphs, например:
WActiveDocument.Range.Paragraphs.Count. Также можно использовать спи-
сок абзацев не только для всего документа, но и для его определенной час-
ти. Для этого определяем размеры и положение области Range.
Метод Add коллекции Paragraphs добавляет новый абзац, метод CloseUp —
устраняет интервал между абзацами. Для доступа к свойствам конкретного
абзаца используйте метод Item(i:integer), где i — индекс абзаца в коллекции
Paragraphs.
Загрузим список абзацев в приложение Delphi и попробуем изменить неко-
торые их свойства с помощью следующих процедур.
Получение списка абзацев активного документа и задание их свойств
procedure TForml.Button3Click(Sender: TObject);
var a_:integer;
begin
if not OpenDialogl.Execute then exit;
W.Documents.Open(OpenDialogl.FileName);
for a_:=l to W.ActiveDocument.Range.Paragraphs.Count do begin
ListBoxl.Items.Add('Абзац - Ч-inttostr(a_));
end;
end;
// Изменим стиль буквицы
procedure TForml.DropCap_PositionChange(Sender: TObject);
begin
W.ActiveDocument.Range.Paragraphs.Item(ListBoxl.Itemlndex).
DropCap.Position:=DropCap_Position.Itemlndex;
end;
// Зададим отступ буквицы от левой границы
procedure TForml.FirstLinelndentChange(Sender: TObject);
begin
W.ActiveDocument.Range.Paragraphs.Item(ListBoxl.Itemlndex).
FirstLinelndent:=FirstLineIndent.Value;
end;
// Отобразим линию границы абзаца
procedure Tline_.Borders_EnableClick(Sender: TObject);
begin
Borders.Enable:=Borders_Enable.Checked;
end;
// Зададим тип линии границы абзаца
procedure Tline_.SpinEditlChange(Sender: TObject);
begin
Borders.OutsideLineStyle:=LineStyle.Value;
end;
Пример результата таких преобразований показан на рис. П2.9.
Рис. П2.9. Изменяем свойства абзацев в открытом документе |