Создание таблиц и работа с ними. Границы и заливка ячеек таблиц

   
На этом шаге мы рассмотрим способы заливки ячеек и изменение их границ.

   
Таблица состоит из ячеек, которые объединены в строки и столбцы. Поэтому, как у строк и столбцов, так и у отдельных ячеек
есть аналогичные между собой свойства, отличающиеся только областью применения этих свойств. Если мы, например,
изменяем толщину границ для ячейки, то это изменение приведет к изменению отображения данной ячейки. Если изменить
параметры строки (столбца), то это может привести к изменению всех границ всех ячеек строки (столбца) или только
границы строки (столбца). Заливка определяется для всех ячеек выбранной строки (столбца). Рассмотрим это на следующем
примере, в котором будем изменять толщину линий столбца, их цвет и заливку.

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;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    ComboBox3: TComboBox;
    ComboBox4: TComboBox;
    ComboBox5: TComboBox;
    Button6: TButton;
    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 Edit3Change(Sender: TObject);
    procedure Edit4Change(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
    procedure ComboBox3Change(Sender: TObject);
    procedure ComboBox4Change(Sender: TObject);
    procedure ComboBox5Change(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.Edit3Change(Sender: TObject);
//Выбор столбца
begin
  Edit4.Text:=IntToStr(table.Columns.Item(StrToInt(Edit3.Text)).Width);
end;

procedure TForm1.Edit4Change(Sender: TObject);
//Установка ширины выбранного столбца
begin
  table.Columns.Item(StrToInt(Edit3.Text)).Width:=StrToInt(Edit4.Text);
end;

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

procedure TForm1.ComboBox1Change(Sender: TObject);
//Выбор толщины рамки
const
  wdLineWidth025pt=2;
  wdLineWidth450pt=36;
begin
  case ComboBox1.ItemIndex of
  0:table.Columns.Item(StrToInt(Edit3.Text)).Borders.OutsideLineWidth:=
                  wdLineWidth025pt;
  1:table.Columns.Item(StrToInt(Edit3.Text)).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
  wdTextureNone=0;
  wdTextureSolid=1000;
  wdTexture30Percent=300;
begin
  case ComboBox3.ItemIndex of
    0: table.Columns.Item(StrToInt(Edit3.Text)).Shading.Texture:=
                  wdTextureNone;
    1: table.Columns.Item(StrToInt(Edit3.Text)).Shading.Texture:=
                  wdTextureSolid;
    2: table.Columns.Item(StrToInt(Edit3.Text)).Shading.Texture:=
                  wdTexture30Percent;
  end;
end;

procedure TForm1.ComboBox4Change(Sender: TObject);
//Цвет фона
begin
  table.Columns.Item(StrToInt(Edit3.Text)).Shading.
               BackgroundPatternColorIndex:=ComboBox4.ItemIndex;
end;

procedure TForm1.ComboBox5Change(Sender: TObject);
//Цвет рисунка
begin
  table.Columns.Item(StrToInt(Edit3.Text)).Shading.
               ForegroundPatternColorIndex:=ComboBox5.ItemIndex;
end;

end.

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

   
Результаты применения описанных процедур к выбранной таблице и внешний вид формы представлены на рисунке 1.


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

   
Замечание.
Чтобы можно было изменять толщину границ ячеек нужно, чтобы у ячейки таблицы были отображаемые границы.

   
При создании этого приложения мы использовали некоторые константы, которые определены в библиотеке Microsoft Word.
Чтобы узнать значения этих констант, а также свойства и методы объектов Microsoft Word можно поступить следующим
образом:

  • запустить Microsoft Word;
  • перейти в редактор Visual Basic, выполнив пункт меню Сервис | Макрос | Редактор Visual Basic;
  • при выполнении пункта меню View | Object Browser, на экране появится окно, в котором можно выбрать библиотеку и
    указать объект, свойства и методы которого отобразятся в нижней части окна.


    Рис.2. Окно Object Browser

   
В заключение приведем перечень цветов, которые мы использовали при создании приложения.

Таблица 1. Перечень цветов

Мнемоническое обозначениеКонстанта
wdAuto0
wdBlack1
wdBlue2
wdTurquoise3
wdBringhtGreen4
wdPink5
wdRed6
wdYellow7
wdWhite8
wdDarkBlue9
wdTeal10
wdGreen11
wdViolet12
wdDarkRed13
wdDarkYellow14
wdGray5015
wdGray2516

   
На следующем шаге мы продолжим изучение этого вопроса.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий