На этом шаге мы рассмотрим алгоритм создания новой кнопки.
Все элементы управления любой панели собраны в коллекцию Controls. Данная коллекция не только
объединяет элементы и их свойства, но и обладает методами, позволяющими создавать или удалять элементы управления.
Рассмотрим два метода коллекции. Метод Add - создает новый элемент, метод Delete - удаляет
выбранный элемент. Причем метод Delete принадлежит элементу коллекции, а не самой коллекции
(как метод Add) и его нельзя применить к стандартным элементам коллекции, а только к пользовательским.
Рассмотрим синтаксис вызова метода Add. В справочной системе он выглядит так:
Add(Type, ID, Parameter, Before, Temporary);
где
- Type: Integer - тип объекта,
- ID: Integer - идентификатор объекта,
- Parameter: String - имя связанной с данным элементом команды,
- Before: Boolean - признак разделителя,
- Temporary: Boolean - признак создания временного элемента.
Возможные типы создаваемых объектов указаны в таблице 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 E: Variant; BTN: Variant; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); //Создание объекта Excel и его визуализация begin E:=CreateOleObject('Excel.Application'); E.Visible:=True; end; procedure TForm1.Button2Click(Sender: TObject); //Создание кнопки const msoControlButton=1; msoButtonIconAndCaption=3; begin BTN:=E.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
Рис.3. Свойство msButton.Style имеет значение msoButtonCaption
В заключение перечислим возможные значения свойства msButton.Style.
Таблица 2. Значения свойства msButton.Style
Константа | Значение |
---|---|
msoButtonAutomatic | 0 |
msoButtonIcon | 1 |
msoButtonCaption | 2 |
msoButtonIconAndCaption | 3 |
msoButtonIconAndWrapCaption | 7 |
msoButtonIconAndCaptionBelow | 11 |
msoButtonWrapCaption | 14 |
msoButtonIconAndWrapCaptionBelow | 15 |
На следующем шаге мы закончим изучение этого вопроса.