На этом шаге мы рассмотрим создание панелей.
Для создания пользовательской панели используем метод Add коллекции CommandBars. У этого метода есть несколько аргументов. Синтаксис вызова метода Add:
Add(Name, Position, MenuBar, Temporary);
где
Используя данные аргументы и их комбинации, мы можем как создать обычную панель с кнопками или меню, так и заменить существующее главное меню приложения Excel. Любой из создаваемых компонентов коллекции CommandBars может быть создан как временный объект (на время одного сеанса работы приложения) или как постоянный объект. Рассмотрим создание новой панели в приложениях Delphi на примере следующей процедуры.
procedure TForm1.Button2Click(Sender: TObject); //Создание пользовательской панели const msoBarFloating=4; var CB: Variant; begin CB:=E.CommandBars.Add('Пользовательская панель', msoBarFloating, False, True); CB.Enabled:=True; CB.Visible:=True; end;
По конкретным условиям, задаваемым аргументами в данной процедуре, новая панель создается и отображается в центральной части главного окна. Результат выполнения процедуры представлен на рисунке 1. Поскольку на панели нет ни одной кнопки, ее размер задан по умолчанию.
Рис.1. Созданная пользовательская панель (уже перемещена)
Вот полный текст приложения:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ComObj, CheckLst; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} var E:variant; procedure TForm1.Button1Click(Sender: TObject); //Создание объекта Excel и отображение окна begin E:=CreateOleObject('Excel.Application'); E.Visible:=True; end; procedure TForm1.Button2Click(Sender: TObject); //Создание пользовательской панели const msoBarFloating=4; var CB: Variant; begin CB:=E.CommandBars.Add('Пользовательская панель', msoBarFloating, False, True); CB.Enabled:=True; CB.Visible:=True; end; end.
Мы исследовали общие свойства панели, одинаково присущие как панелям с кнопками, так и меню. Чтобы понять отличия, необходимо рассмотреть содержание самих панелей.
На следующем шаге мы рассмотрим элементы управления.