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

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

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

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. Перечень цветов

Мнемоническое обозначение Константа
wdAuto 0
wdBlack 1
wdBlue 2
wdTurquoise 3
wdBringhtGreen 4
wdPink 5
wdRed 6
wdYellow 7
wdWhite 8
wdDarkBlue 9
wdTeal 10
wdGreen 11
wdViolet 12
wdDarkRed 13
wdDarkYellow 14
wdGray50 15
wdGray25 16

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



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

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