Шаг 64.
Автоматизация Microsoft Word. Создание таблиц и работа с ними. Стиль линии границы

    На этом шаге мы рассмотрим задание стиля линии границы.

    Рассмотрим еще одно важное свойство, применяемое как к отдельным ячейкам, так и ко всем ячейкам строки, столбца или таблицы. Это стиль линии границы. Особенностью его является то, что стиль линии задается не для всех линий границы ячейки, а индивидуально для каждой. Выбор определенной линии границы осуществляется выбором элемента коллекции Borders. Количество элементов коллекции определяется числом линий, ограничивающих ячейки или пересекающих ячейки или группу выделенных ячеек. Приведем текст программы, изменяющий стиль одной выбранной линии границы ячейки.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComObj;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    ListBox1: TListBox;
    Button4: TButton;
    Button5: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Label3: TLabel;
    Edit2: TEdit;
    Label4: TLabel;
    Edit3: TEdit;
    Label5: TLabel;
    Edit4: TEdit;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    Button6: TButton;
    ComboBox3: TComboBox;
    Label9: TLabel;
    ComboBox4: TComboBox;
    Label10: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
    procedure ComboBox3Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
var
  W:Variant;
  table: Variant;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
//Создание таблицы
begin
  W.ActiveDocument.Tables.Add(Range:=W.ActiveDocument.Range, 
           NumRows:=2, NumColumns:=3);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  W:=CreateOleObject('Word.Application');
  W.Visible:=True;
  W.Documents.Add;
end;

procedure TForm1.Button3Click(Sender: TObject);
//Таблица в конце документа
var
   MyRange:Variant;
begin
   W.ActiveDocument.Range.InsertAfter(' ');
   MyRange:=W.ActiveDocument.Range(W.ActiveDocument.Range.End-1,
                  W.ActiveDocument.Range.End-1);
   W.ActiveDocument.Tables.Add(Range:=MyRange, NumRows:=2, NumColumns:=3);
end;

procedure TForm1.Button4Click(Sender: TObject);
//Количество таблиц
var a: integer;
begin
  ListBox1.Items.Clear;
  for a:=1 to W.ActiveDocument.Tables.Count do
    begin
      ListBox1.Items.Add('Таблица - '+IntToStr(a));
    end;
end;

procedure TForm1.Button5Click(Sender: TObject);
//Удаление выбранной таблицы
begin
  W.ActiveDocument.Tables.Item(ListBox1.ItemIndex+1).Select;
  W.ActiveDocument.Tables.Item(ListBox1.ItemIndex+1).Delete;
end;

procedure TForm1.ListBox1Click(Sender: TObject);
//Запомнить параметры выбранной таблицы
begin
  table:=W.ActiveDocument.Tables.Item(ListBox1.ItemIndex+1);
  Edit1.Text:=IntToStr(table.Columns.Count);
  Edit2.Text:=IntToStr(table.Columns.Width);

end;

procedure TForm1.Button6Click(Sender: TObject);
begin
   Close;
end;

procedure TForm1.ComboBox1Change(Sender: TObject);
//Выбор толщины рамки
const
  wdLineWidth025pt=2;
  wdLineWidth450pt=36;
var
  i:Integer;
begin
  i:=StrToInt(Edit3.Text);
  case ComboBox1.ItemIndex of
  0:table.Columns.Item(i).Borders.OutsideLineWidth:=wdLineWidth025pt;
  1:table.Columns.Item(i).Borders.OutsideLineWidth:=wdLineWidth450pt;
  end;
end;

procedure TForm1.ComboBox2Change(Sender: TObject);
//Цвет рамки
begin
  table.Columns.Item(StrToInt(Edit3.Text)).
          Borders.OutsideColorIndex:=ComboBox2.ItemIndex;
end;

procedure TForm1.ComboBox3Change(Sender: TObject);
//Выбор границы
const
  wdBorderTop=-1;
  wdBorderLeft=-2;
  wdBorderBottom=-3;
  wdBorderRight=-4;
var
  Border:variant;
  stroka,stolbec:Integer;
begin
  stroka:=StrToInt(Edit4.Text);
  stolbec:=StrToInt(Edit3.Text);
  case ComboBox3.ItemIndex of
    0:Border:=table.Cell(stroka,stolbec).Borders.Item(wdBorderTop);
    1:Border:=table.Cell(stroka,stolbec).Borders.Item(wdBorderLeft);
    2:Border:=table.Cell(stroka,stolbec).Borders.Item(wdBorderBottom);
    3:Border:=table.Cell(stroka,stolbec).Borders.Item(wdBorderRight);
  end;
  Border.LineStyle:=ComboBox4.ItemIndex;
end;


end.
Текст этого приложения можно взять здесь (10,0 Кб).

    Результат работы приложения можно увидеть на рисунке 1:


Рис.1. Результат работы приложения

    На следующем шаге мы начнем знакомиться с добавлением и удалением строк и столбцов таблицы.




Предыдущий шаг Содержание Следующий шаг