Шаг 281.
Автоматизация Microsoft PowerPoint.
Работа с таблицами. Пример приложения

    На этом шаге мы рассмотрим пример приложения, иллюстрирующего работу с ячейками таблицы.

    Приведем небольшое приложение, позволяющее выполнять некоторые действия с таблицей на слайде.

    Внешний вид приложения изображен на рисунке 1.


Рис.1. Пример работы приложения

    Приложение позволяет создавать таблицу в заданным количеством строк и столбцов, удалять ее, а также выделять ячейку, объединять ячейки и разбивать ячейку на заданное число строк и столбцов.

    Каждая операция оформлена в виде отдельной процедуры.

    Текст приложения.

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    CheckBox1: TCheckBox;
    Button3: TButton;
    Button4: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    UpDown1: TUpDown;
    UpDown2: TUpDown;
    Button2: TButton;
    Button5: TButton;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Edit3: TEdit;
    UpDown3: TUpDown;
    Edit4: TEdit;
    UpDown4: TUpDown;
    Button6: TButton;
    Button7: TButton;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Edit5: TEdit;
    UpDown5: TUpDown;
    Edit6: TEdit;
    UpDown6: TUpDown;
    Button8: TButton;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Edit7: TEdit;
    UpDown7: TUpDown;
    Edit8: TEdit;
    UpDown8: TUpDown;
    Button9: TButton;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Edit9: TEdit;
    UpDown9: TUpDown;
    Edit10: TEdit;
    UpDown10: TUpDown;
    Label15: TLabel;
    Label16: TLabel;
    Label17: TLabel;
    Edit11: TEdit;
    UpDown11: TUpDown;
    Edit12: TEdit;
    UpDown12: TUpDown;
    Button10: TButton;
    procedure Button1Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button10Click(Sender: TObject);
  private
     { Private declarations }
  public
     { Public declarations }
  end;

var
  Form1: TForm1;

implementation
var
  W,T:Variant;
 {$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  W:=CreateOleObject('PowerPoint.Application');
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  W.Visible:=CheckBox1.Checked;
end;

procedure TForm1.Button3Click(Sender: TObject);
const
  ppLayoutBlank = 12;
var
 V: Variant;
begin
 W.Presentations.Add;
 // Добавить пустой слайд
 W.ActivePresentation.Slides.Add(1,ppLayoutBlank);
end;



procedure TForm1.Button4Click(Sender: TObject);
begin
 W.Quit;
 Close;
end;


procedure TForm1.Button2Click(Sender: TObject);
//Добавление таблицы
var
 row,col:Integer;
begin
 row:=StrToInt(Edit1.Text);
 col:=StrToInt(Edit2.Text);
 W.ActivePresentation.Slides.Item(1).Shapes
       .AddTable(row,col);

end;

procedure TForm1.Button5Click(Sender: TObject);
// Удаление таблицы
begin
 W.ActivePresentation.Slides.Item(1).Shapes.Item(1).Delete;
end;

procedure TForm1.Button6Click(Sender: TObject);
// Удалить строку
var
 row:Integer;
begin
 row:=StrToInt(Edit3.Text);
 W.ActivePresentation.Slides.Item(1).Shapes.Item(1)
    .Table.Rows.Item(row).Delete;
end;

procedure TForm1.Button7Click(Sender: TObject);
// Удалить столбец
var
 col:Integer;
begin
 col:=StrToInt(Edit4.Text);
 W.ActivePresentation.Slides.Item(1).Shapes.Item(1)
     .Table.Columns.Item(col).Delete;
end;

procedure TForm1.Button8Click(Sender: TObject);
// Выбрать ячейку
var
 row,col:Integer;
begin
 row:=StrToInt(Edit5.Text);
 col:=StrToInt(Edit6.Text);
 W.ActivePresentation.Slides.Item(1).Shapes.Item(1)
     .Table.Cell(row,col).Select;
 T:=W.ActivePresentation.Slides.Item(1).Shapes.Item(1)
     .Table.Cell(row,col);
end;

procedure TForm1.Button9Click(Sender: TObject);
// Объединить ячейки
var
 row,col:Integer;
begin
 row:=StrToInt(Edit7.Text);
 col:=StrToInt(Edit8.Text);
 W.ActivePresentation.Slides.Item(1).Shapes.Item(1)
     .Table.Cell(row,col).Merge(MergeTo:=T);
end;

procedure TForm1.Button10Click(Sender: TObject);
// Разбить ячейку
var
 row1,col1:Integer;
 row2,col2:Integer;
begin
 // Разбиваемая ячейка
 row1:=StrToInt(Edit9.Text);
 col1:=StrToInt(Edit10.Text);
 // Количество строк и столбцов
 row2:=StrToInt(Edit11.Text);
 col2:=StrToInt(Edit12.Text);
 W.ActivePresentation.Slides.Item(1).Shapes.Item(1)
     .Table.Cell(row1,col1).Split(row2,col2);
end;

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

    Со следующего шага мы начнем знакомиться с потоками.




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