На этом шаге мы рассмотрим особенности панелей.
Когда панель находится в центре как самостоятельное окно, ее положение можно изменить - как по вертикали, так и по горизонтали. Для этого достаточно изменить значения свойств Left и Тор. Следующая процедура позволяет смещать панель вправо.
procedure TForm1.Button6Click(Sender: TObject); //Перемещение панели вправо begin C.Item[CheckListBox1.ItemIndex+1].Left:= C.Item[CheckListBox1.ItemIndex+1].Left+10; end;
Результат выполнения приложения на рисунке 1.
Рис.1. Смещение положения панели
Нужно отметить, что не все панели доступны для изменений их свойств. Некоторые панели не могут находиться в главном окне и располагаются в других окнах, например в окне просмотра печати. Изменение их свойств вызовет ошибку выполнения. Но большинство панелей все же доступны для изменения их свойств. В качестве примера можно отобразить некоторые панели в главном окне и придать им новое расположение. Рассмотрим процедуру, отображающую панель Цвет заливки.
procedure TForm1.Button7Click(Sender: TObject); //Отображение панели "Цвет заливки" begin C.Item['Fill Color'].Visible:=True; end;
В результате получим панель, представленную на рисунке 2.
Рис.2. Открываем панель Цвет заливки
Если попытаться изменить положение панели Цвет заливки, т. е. пристыковать к одной из сторон главного окна, то результат будет отрицательным, т. к. тип этой панели не предусматривает таких изменений. Тип определяется при создании панели, для стандартных панелей изменить его нельзя; также к этим панелям нельзя применять метод Delete; есть и другие ограничения. Если тип панели позволяет, то ее расположение можно изменить, например, пристыковав к одной из сторон главного окна. Для этого свойству Position объекта "панель" нужно присвоить одно из значений, указанных в таблице 1.
Константа | Значение | Описание |
---|---|---|
msoBarLeft | 0 | Панель с кнопками, расположенная вдоль левой стороны главного окна |
msoBarTop | 1 | Панель с кнопками, расположенная вдоль верхней стороны главного окна |
msoBarRight | 2 | Панель с кнопками, расположенная вдоль правой стороны главного окна |
msoBarBottom | 3 | Панель с кнопками, расположенная вдоль нижней стороны главного окна |
msoBarFloating | 4 | Отдельная панель в центральной части главного окна экрана |
msoBarPopup | 5 | Всплывающее меню |
msoBarMenuBar | 6 | Системное меню |
В заключение приведем полный текст приложения:
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; 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); 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; end.
На следующем шаге мы закончим изучение этого вопроса.