На этом шаге мы рассмотрим активацию/деактивацию панелей.
Рассмотрим еще одно свойство панели, которое позволяет активировать или деактивировать панель в главном окне приложения 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.
Мы рассмотрели некоторые свойства встроенных панелей приложения Word. Есть возможность программно создавать и удалять пользовательские панели и меню. При работе со стандартными панелями и меню есть некоторые особенности, например их нельзя удалить.
На следующем шаге мы рассмотрим создание новой панели (или меню).