Шаг 104.
Автоматизация Microsoft Word. Программирование свойств MS Word. Элементы коллекции CommandBars (окончание)

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

    Рассмотрим еще одно свойство панели, которое позволяет активировать или деактивировать панель в главном окне приложения Word. Свойство панелей Enabled имеет тип Boolean и определяет возможность доступа пользователя к ним. Когда свойство Enabled имеет значение False, пользователь не может пользоваться данной панелью - она вообще не отображается. Если установить это свойство в значение True, то панель будет доступна и займет свое прежнее место в окне приложения Word. Возможно, этим свойством необходимо воспользоваться, когда требуется блокировать доступ пользователя к некоторым элементам управления. Рассмотрим следующую процедуру.

procedure TForm1.CheckBox1Click(Sender: TObject);
//Отключение панелей управления
var
  i: Integer;
begin
  for i:=1  to C.Count do
    C.Item[i].Enabled:=CheckBox1.Checked;
end;

    Данная процедура, перебирая все элементы коллекции CommandBars, устанавливает их свойство Enabled либо в значение True, либо в значение False в зависимости от состояния свойства Checked объекта CheckBox1. Установим с ее помощью (для этого надо снять соответствующий флажок в форме) свойство Enabled в значение False для всех панелей. Результат выполнения процедуры представлен на рисунке 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;
    CheckListBox1: TCheckListBox;
    ComboBox1: TComboBox;
    Label1: TLabel;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    Button7: TButton;
    CheckBox1: TCheckBox;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure CheckListBox1Click(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

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

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

procedure TForm1.Button2Click(Sender: TObject);
//Список элементов коллекции панелей и меню
var
  i:integer;
  S:string;
begin
  C := W.CommandBars;
  for i:=1 to C.Count do
  begin
    S:=C.Item[i].Name+' = '+ C.Item[i].NameLocal;
    CheckListBox1.Items.Add (S);
    CheckListBox1.Checked[i-1]:=C.Item[i].Visible;
  end;
end;

procedure TForm1.CheckListBox1Click(Sender: TObject);
//Выбор панели управления и изменение ее свойства Visible
begin
  C.Item [CheckListBox1.ItemIndex+1].Visible :=
    CheckListBox1.Checked[CheckListBox1.ItemIndex];

end;

procedure TForm1.ComboBox1Change(Sender: TObject);
//Изменение расположения панели
begin
  C.Item[CheckListBox1.ItemIndex+1].Position:=
      ComboBox1.ItemIndex;
end;

procedure TForm1.Button3Click(Sender: TObject);
//Перемещение панели вверх
begin
  C.Item[CheckListBox1.ItemIndex+1].Top:=
    C.Item[CheckListBox1.ItemIndex+1].Top-10;
end;

procedure TForm1.Button4Click(Sender: TObject);
//Перемещение панели вниз
begin
  C.Item[CheckListBox1.ItemIndex+1].Top:=
    C.Item[CheckListBox1.ItemIndex+1].Top+10;
end;

procedure TForm1.Button5Click(Sender: TObject);
//Перемещение панели влево
begin
  C.Item[CheckListBox1.ItemIndex+1].Left:=
    C.Item[CheckListBox1.ItemIndex+1].Left-10;
end;

procedure TForm1.Button6Click(Sender: TObject);
//Перемещение панели вправо
begin
  C.Item[CheckListBox1.ItemIndex+1].Left:=
    C.Item[CheckListBox1.ItemIndex+1].Left+10;
end;

procedure TForm1.Button7Click(Sender: TObject);
//Отображение панели "Цвет заливки"
begin
  C.Item['Fill Color'].Visible:=True;
end;

procedure TForm1.CheckBox1Click(Sender: TObject);
//Отключение панелей управления
var
  i: Integer;
begin
  for i:=1  to C.Count do
    C.Item[i].Enabled:=CheckBox1.Checked;
end;

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

    Мы рассмотрели некоторые свойства встроенных панелей приложения Word. Есть возможность программно создавать и удалять пользовательские панели и меню. При работе со стандартными панелями и меню есть некоторые особенности, например их нельзя удалить.

    На следующем шаге мы рассмотрим создание новой панели (или меню).




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