Шаг 109.
Автоматизация Microsoft Word. Программирование свойств MS Word. Создание нового элемента управления

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

    Все элементы управления любой панели собраны в коллекцию Controls. Данная коллекция не только объединяет элементы и их свойства, но и обладает методами, позволяющими создавать или удалять элементы управления. Рассмотрим два метода коллекции. Метод Add - создает новый элемент, метод Delete - удаляет выбранный элемент. Причем метод Delete принадлежит элементу коллекции, а не самой коллекции (как метод Add) и его нельзя применить к стандартным элементам коллекции, а только к пользовательским.

    Рассмотрим синтаксис вызова метода Add. В справочной системе он выглядит так:

    Add(Type, ID, Parameter, Before, Temporary);
где


    Примечание. Значения идентификатора объекта (кроме 1) определяют кнопки, связанные с определенными командами Word. Значение 1 определяет кнопку, не связанную с командой Word (т. е. пользовательскую кнопку).

    Возможные типы создаваемых объектов указаны в таблице 1.

Таблица 1. Возможные типы создаваемых объектов
Константа Значение Тип создаваемого объекта
msoControlButton 1 Кнопка
msoControlEdit 2 Поле ввода
msoControlDropdown 3 Раскрывающийся список
msoControlComboBox 4 Комбинированный список
msoControlPopup 10 Элемент меню

    Создадим обычную кнопку на панели Стандартная. Используем метод Add, первый аргумент которого (Туре) равен msoControlButton, а второй (ID) - единице. Установим значение надписи, задав в свойстве Caption текст, выберем значок (свойство FaceId) и стиль кнопки (отображение и значка, и надписи). Вот текст процедуры:

procedure TForm1.Button2Click(Sender: TObject);
//Создание кнопки
const
  msoControlButton=1;
  msoButtonIconAndCaption=3;
begin
  BTN:=W.CommandBars.Item['standard'].Controls.Add(
    Type:=msoControlButton, ID:=1);
  BTN.Caption:='Простая кнопка';
  BTN.Style:= msoButtonIconAndCaption;
  BTN.FaceId:=SpinEdit1.Value;
end;

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


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

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

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    SpinEdit1: TSpinEdit;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure SpinEdit1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

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

procedure TForm1.Button1Click(Sender: TObject);
//Создание объекта Word и его визуализация
begin
  W:=CreateOleObject('Word.Application');
  W.Visible:=True;
end;

procedure TForm1.Button2Click(Sender: TObject);
//Создание кнопки
const
  msoControlButton=1;
  msoButtonIconAndCaption=3;
begin
  BTN:=W.CommandBars.Item['standard'].Controls.Add(
    Type:=msoControlButton, ID:=1);
  BTN.Caption:='Простая кнопка';
  BTN.Style:= msoButtonIconAndCaption;
  BTN.FaceId:=SpinEdit1.Value;
end;

procedure TForm1.SpinEdit1Change(Sender: TObject);
//Изменение пиктограммы кнопки
begin
  BTN.FaceId:=SpinEdit1.Value;
end;

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

    Изменим стиль кнопки (отображение только значка или надписи), записав в свойство msButton.Style константу msoButtonIcon или msoButtonCaption. Соответственно получаем результат, представленный на рисунках 2 и 3.


Рис.2. Свойство msButton.Style имеет значение msoButtonIcon


Рис.2. Свойство msButton.Style имеет значение msoButtonCaption

    В заключение перечислим возможные значения свойства msButton.Style.

Таблица 2. Значения свойства msButton.Style
Константа Значение
msoButtonAutomatic 0
msoButtonIcon 1
msoButtonCaption 2
msoButtonIconAndCaption 3
msoButtonIconAndWrapCaption 7
msoButtonIconAndCaptionBelow 11
msoButtonWrapCaption 14
msoButtonIconAndWrapCaptionBelow 15

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




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