Для начала получим список всех элементов, входящих в коллекцию
CommandBars. Для этого, используя свойство Count коллекции и свойство
элемента Name, загрузим список элементов в объект типа TCheckListBox
(прокручиваемый список с флажками). Свойство Name имеет строковый
тип и представляет собой имя элемента. Его можно использовать для досту-
па к любому элементу коллекции аналогично индексу, имеющему числовой
тип. Рассмотрим следующий фрагмент исходного текста в Delphi.
Список элементов коллекции панелей и меню
procedure TOKBottomDlg2.FormCreate(Sender: TObject) ;
var a_:integer;
eee_:string;
begin
COMMANDBARS:=Forml.W.COMMANDBARS;
for a_:=l to COMMANDBARS.Count do begin
eee_:=COMMANDBARS.Item[a_].name+' = ' «TOMMANDBARS.Item[a_].NameLocal;
CheckListBoxl.Items.Add(eee_);
CheckListBoxl.Checked[a_-l]:=CommandBars.Item[a_].Visible;
end;
end;
Данная процедура, последовательно перебирая все элементы коллекции,
загружает их имена в объект CheckListBoxl. Дополнительно загружаются
значения свойств NameLocal (имя, отображаемое в заголовке панели и со-
ответствующее национальной версии Word, в данном случае — русскоязыч-
ной) и Visible (режим отображения элемента в окне Word). Далее, переме-
щаясь по списку имен загруженных в CheckListBoxl элементов, можно по-
лучить или изменить значения других свойств выбранной панели. Полезны,
например, свойства: Position, Left, Top, Width, Height:integer — положение и
размеры панели; Rowlndexrinteger — номер строки, занимаемой панелью,
когда панели собраны в какой-либо части главного окна; если панель со-
держит кнопки или другие элементы управления, то свойство Builtln:boolean
имеет значение True, иначе — значение False; Context — содержит строку со
ссылкой на файл шаблона; Protection:integer — определяет режим защиты
панели от изменений со стороны пользователя (возможные значения этого
свойства, а также свойства Position см. в Приложении Г). С целью изучения
некоторых из этих свойств рассмотрим следующий фрагмент программы,
который представляет собой процедуру обработки для объекта CheckListBoxl.
Выбор панели управления, изменение ее свойства Visible и расположения
procedure TOKBottomDlg2.CheckListBoxlClick(Sender: TObject);
begin
CommandBars.Item[CheckListBoxl.Itemlndex+l].Visible:=
CheckListBoxl.Checked[CheckListBoxl.Itemlndex];
end;
procedure TOKBottomDlg2.PositionClick(Sender: TObject);
begin
CommandBars.Item[CheckListBoxl.Itemlndex+l].Position:=Position.Itemlndex;
end;
Результат наших манипуляций со свойствами Visible и Position может быть
таким, как показано на рис. 10.4. В данном случае для панели Стандартная
свойство Position имеет значение msoBarFloating (4).
Рис. 10.4. Изменение положения панели
Далее, в режиме, когда панель находится в центре как самостоятельное ок-
но, ее положение можно изменить — как по вертикали, так и по горизонта-
ли. Для этого достаточно изменить значения свойств Left и Тор. Следующая
процедура позволяет смещать панель вправо.
Смещение панели вправо
procedure TOKBottomDlg2.Button3Click(Sender: TObject);
begin
CommandBars.Item[CheckListBoxl.Itemlndex+l].left:=
CoramandBars.Item[CheckListBoxl.Itemlndex+l].left+10;
end;
Результат выполнения процедуры показан на рис. 10.5.
Нужно отметить, что не все панели доступны для изменений их свойств.
Некоторые панели не могут находиться в главном окне и располагаются в
других окнах, например в окне просмотра печати. Изменение их свойств
вызовет ошибку выполнения. Но большинство панелей все же доступны для
изменения их свойств. В качестве примера можно отобразить некоторые
панели в главном окне и придать им новое расположение. Рассмотрим про-
цедуру, отображающую панель Цвет заливки.
Рис. 10.5. Смещение положения панели
Отображение панели Цвет заливки
procedure TOKBottomDlg2.CheckListBoxlClick(Sender: TObject);
begin
CommandBars.Item['Fill Color'].Visible:=True;r
end;
В результате получим панель, представленную на рис. 10.6.
Если попытаться изменить положение панели Цвет заливки, т. е. пристыко-
вать к одной из сторон главного окна, то результат будет отрицательным,
т. к. тип этой панели не предусматривает таких изменений. Тип определяет-
ся при создании панели, для стандартных панелей изменить его нельзя;
также к этим панелям нельзя применять метод Delete; есть и другие ограни-
чения. Если тип панели позволяет, то ее расположение можно изменить,
например, пристыковав к одной из сторон главного окна. Для этого свойст-
ву Position объекта "панель" нужно присвоить одно из значений, указанных
в табл. 10.2.
Таблица 10.2. Возможные положения панели
Рис. 10.6. Открываем панель Цвет заливки
В качестве примера изменим положение панели Стандартная, используя
следующий оператор:
CommandBars.Item['Standard1].Position:=msoBarLeft;
где msoBarLeft=0. Результат представлен на рис. 10.7.
РИС. 10.7. Панель Стандартная расположена вдоль левой стороны окна
Рассмотрим еще одно свойство панели, которое позволяет активировать или
деактивировать панель в главном окне приложения Word. Свойство панелей
Enabled имеет тип Boolean и определяет возможность доступа пользователя
к ним. Когда свойство Enabled имеет значение False, пользователь не может
пользоваться данной панелью — она вообще не отображается. Если устано-
вить это свойство в значение True, то панель будет доступна и займет свое
прежнее место в окне приложения Word. Возможно, этим свойством необ-
ходимо воспользоваться, когда требуется блокировать доступ пользователя
к некоторым элементам управления. Рассмотрим следующую процедуру.
Отключение панелей управления
procedure TOKBottomDlg2.CheckBoxlClick(Sender: TObject);
var a_:integer;
begin
for a_:=l to CommandBars.Count do
CommandBars.Item[a_].Enabled:=CheckBoxl.Checked;
end;
Данная процедура, перебирая все элементы коллекции CommandBars, уста-
навливает их свойство Enabled либо в значение True, либо в значение False
в зависимости от состояния свойства Checked объекта CheckBoxl. Устано-
вим с ее помощью (для этого надо снять соответствующий флажок в форме)
свойство Enabled в значение False для всех панелей. Результат выполнения
процедуры представлен на рис. 10.8.
Рис. 10.8. Отключаем панели управления
Мы рассмотрели некоторые свойства встроенных панелей приложения
Word. Есть возможность программно создавать и удалять пользовательские
панели и меню. При работе со стандартными панелями и меню есть неко-
торые особенности, например их нельзя удалить. Далее рассмотрим созда-
ние новой панели (или меню). |