Как известно, панель может содержать кнопки или другие элементы управ-
ления, например раскрывающиеся списки или подменю. Эти элементы в
свою очередь принадлежат самой панели и объединены в коллекцию
CommandBarControls. Посредством этой коллекции осуществляется доступ
ко всем элементам управления выбранной панели. Коллекция CommandBarControls
имеет небольшое количество свойств и один метод. Мы
будем использовать свойства Count (количество элементов коллекции) и
Item (i:Integer) (набор элементов коллекции, где i — индекс кнопки), а так-
же метод Add,пoзвoляющий добавлять новые элементы на панель.
Рассмотрим некоторые свойства и методы объекта CommandBarControl
(табл. 16.3).
Таблица 16.3. Некоторые свойства и методы объекта CommandBarContro
Исследуем содержание панели и некоторые свойства элементов управления.
Если рассматривать меню, то его основное отличие от панели с кнопками
состоит в том, что элементом управления в составе меню может быть как
пункт меню, так и подменю со своими элементами управления.и т. д.
Чтобы проанализировать свойства панели, используем свойства Count и
Item() коллекции CommandBarControls, а также свойства Caption и
TooltipText. Загрузим весь список кнопок и других элементов панели в объ-
ект ListBox с помощью следующей процедуры.
Загрузка списка элементов управления панели
procedure ToKBottomDlg5.FormCreate(Sender: TObject);
var a_:integer;
eee_:string;
begin
CommandBarControls:=0KBottomDlg4.CommandBars.Item[oKBottomDlg4.
ListBoxl.Itemlndex+l].Controls;
for a_:=l to CommandBarControls.Count do
begin
eee :=CommandBarControls.Item[a_].Caption+' = '+
CommandBarControls.Item[a_].TooltipText;
ListBoxl.Items.Add(eee_);
end;
CcmmandBarControl:=CommandBarControls.Item[1];
end;
Затем, перемещаясь по списку элементов управления для выбранной пане-
ли, загруженному в компонент ListBox1, считаем некоторые их свойства.
Получение ссылки на элемент управления
procedure TOKBottomDlg5.ListBox1Click(Sender: TObject);
begin
CoitimandBarControl:=CommandBarControls . Item [ListBox1.ItemIndex+1] ;
b_visible.Checked:=CoramandBarControl.Visible;
DescriptionText.Text:=CommandBarControl.DescriptionText;
HelpFile.Text:=CoramandBarControl.HelpFile+' | ' +
inttostr(CommandBarControl.HelpContextID)+'|';
end;
Рис. 16.11. Состав панели Форматирование
На рис. 16.11 показан результат выполнения представленных процедур.
Верхний список (компонент ListBoxl), расположенный в форме нашего
приложения, заполнен названиями элементов управления панели Формати-
рование. При перемещении по этому списку в полях формы, расположен-
ных ниже списка, для выбранного элемента управления отображаются на-
значение и ссылка на файл помощи.
Как видно из рис. 16.10, переходя от одного элемента управления к друго-
му, мы можем получать и изменять их свойства. Для этого достаточно за-
грузить в переменную типа Variant ссылку на элемент Item(i:Integer), на-
пример, как это выполнено в следующем операторе:
CoramandBarControl:=ConnnandBarControls.Item[ListBoxl.Itemlndex+l];
Далее, работая со ссылкой, мы получаем доступ к различным свойствам вы-
бранного элемента управления. В качестве примера сделаем невидимой вы-
бранную кнопку, изменим ее надпись (значение свойства Caption) и запус-
тим на выполнение команду, связанную с данной кнопкой.
Управление Свойствами кнопки
procedure TOKBottomDlg5.b_visibleClick(Sender: TObject);
begin
CommandBarControl.Visible: =b__visible. Checked;
end;
procedure TOKBottomDlg5.B_CaptionChange(Sender: TObject);
begin
CoimnandBarControl. Caption: =B_Caption. Text ;
end;
procedure TOKBottomDlg5.ButtonlClick(Sender: TObject);
begin
CommandBarControl.Execute;
end;
Используя последнюю процедуру, можно запускать макросы, связанные с
кнопками. Для этого удобнее использовать пользовательские, временные
панели и элементы управления, создание которых будет рассмотрено далее. |