Шаг 168.
Автоматизация Microsoft Excel. Работа с объектами в книге Excel.
Свойства и методы объекта WordArt (окончание)

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

    Изменим способ расположения символов текста и интервал между символами (выполним трекинг).

procedure TForm1.Button5Click(Sender: TObject);
//Изменение способа расположения символов
begin
  WordArt.TextEffect.ToggleVerticalText;
end;
//Изменение и межсимвольного интервала
procedure TForm1.SpinButton1DownClick(Sender: TObject);
begin
  if StrToFloat(Edit2.Text)>0.8 then
  begin
      Edit2.Text:=FloatToStr(StrToFloat(Edit2.Text)-0.1);
      WordArt.TextEffect.Tracking:=StrToFloat(Edit2.Text);
  end;
end;

procedure TForm1.SpinButton1UpClick(Sender: TObject);
begin
  if StrToFloat(Edit2.Text)<1.5 then
  begin
      Edit2.Text:=FloatToStr(StrToFloat(Edit2.Text)+0.1);
      WordArt.TextEffect.Tracking:=StrToFloat(Edit2.Text);
  end;
end;

    Результат выполнения этих процедур представлен на рисунке 1.


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

    Приведем полный текст приложения.

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    ListBox1: TListBox;
    Label3: TLabel;
    Button4: TButton;
    Label2: TLabel;
    Edit1: TEdit;
    UpDown1: TUpDown;
    Label1: TLabel;
    Memo1: TMemo;
    Label4: TLabel;
    ComboBox1: TComboBox;
    Button5: TButton;
    Label5: TLabel;
    SpinButton1: TSpinButton;
    Edit2: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure ListBox1Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure SpinButton1DownClick(Sender: TObject);
    procedure SpinButton1UpClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
var
  E:variant;
  WordArt:Variant;
{$R *.dfm}


procedure TForm1.Button1Click(Sender: TObject);
//Создание объекта Excel и отображение окна
begin
  E:=CreateOleObject('Excel.Application');
  E.Visible:=True;
end;

procedure TForm1.Button2Click(Sender: TObject);
//Создание рабочей книги
begin
  E.WorkBooks.Add;
end;


procedure TForm1.Button3Click(Sender: TObject);
//Создание фигуры
var
  left,top:Extended;
begin
  left:=10;
  top:=11;
  if E.ActiveWorkBook.ActiveSheet.Shapes.Count>0 then
  begin
   left:=E.ActiveWorkBook.ActiveSheet.Shapes.
      item(E.ActiveWorkBook.ActiveSheet.Shapes.count).Left+20;
   top:=E.ActiveWorkBook.ActiveSheet.Shapes.
      item(E.ActiveWorkBook.ActiveSheet.Shapes.count).Top+20;
  end;
  E.ActiveWorkBook.ActiveSheet.Shapes.AddTextEffect(
     StrToInt(Edit1.Text),Text:=Memo1.Lines.Text,
     FontName:='Tahoma', FontSize:=48, FontBold:=True,
     FontItalic:=False, Left:=left,Top:=top);
end;

procedure TForm1.Button4Click(Sender: TObject);
//Заполнить список фигур
var
  a: Integer;
begin
  ListBox1.Items.Clear;
  for a:=1 to E.ActiveWorkBook.ActiveSheet.Shapes.Count do
    ListBox1.Items.Add(E.ActiveWorkBook.ActiveSheet.Shapes.Item(a).Name);
end;

procedure TForm1.ListBox1Click(Sender: TObject);
// При активизации строки объекта ListBoxl, используя имя объекта,
// выделяем его из коллекции Shapes и записываем ссылку на этот объект
//в переменную WordArt.
begin
  WordArt:=E.ActiveWorkBook.ActiveSheet.Shapes.Item(
    ListBox1.Items.Strings[ListBox1.ItemIndex]);
end;


procedure TForm1.ComboBox1Change(Sender: TObject);
//Изменение формы текста для объекта WordArt
begin
    WordArt.TextEffect.PresetShape:=ComboBox1.ItemIndex+1;
end;

procedure TForm1.Button5Click(Sender: TObject);
//Изменение способа расположения символов
begin
  WordArt.TextEffect.ToggleVerticalText;
end;
//Изменение и межсимвольного интервала
procedure TForm1.SpinButton1DownClick(Sender: TObject);
begin
  if StrToFloat(Edit2.Text)>0.8 then
  begin
      Edit2.Text:=FloatToStr(StrToFloat(Edit2.Text)-0.1);
      WordArt.TextEffect.Tracking:=StrToFloat(Edit2.Text);
  end;
end;

procedure TForm1.SpinButton1UpClick(Sender: TObject);
begin
  if StrToFloat(Edit2.Text)<1.5 then
  begin
      Edit2.Text:=FloatToStr(StrToFloat(Edit2.Text)+0.1);
      WordArt.TextEffect.Tracking:=StrToFloat(Edit2.Text);
  end;
end;

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

    Коллекция Shapes позволяет создавать и работать с внешними объектами (OLE-объектами), свойства и методы работы с которыми применительно к документам Word были рассмотрены в предыдущих шагах. За исключением незначительных особенностей для рабочих книг Excel все они аналогичны.

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




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